if语句
else离最近的if语句结合。
if语句题目
//1. 判断一个数是否为奇数
//2. 输出1 - 100之间的奇数
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2)
{
printf("奇数\n");
}
else
{
printf("不是奇数\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i <= 100; i++)
{
if (i % 2)
{
printf("奇数%d\n",i);
}
}
return 0;
}
int main()
{
int i = 0;
for (i = 1; i <= 100; i+=2)
{
printf("奇数%d\n",i);
}
return 0;
}
Switch语句题目
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入错误\n");
break;
}
这里的每条case后面必须加break语句否则如下图所示。
break会跳出switch语句。
switch语句的表达式必须是整数。
题目解释
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;//进入这里m=3,没有break执行下一个
case 2:
n++;//n=2 没有break执行下一个
case 3:
switch (n)n=2
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;m=4
n++;n=3
break;
}
case 4:
m++;m=5
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
循环语句
while循环
先看表达式是否为真,为真就执行表达式结果,然后继续看表达式是否为真,一直反复,知道表达式不满足,就跳出循环。
比如打印1-10的数
int main()
{
/*int i = 1;
while (i<11)
{
printf("%d ", i);
i++;
}*/
return 0;
}
break和continue的用法和区别
因为这里的i++在后面,没有执行。
break是跳出循环的,continue后面的语句不会执行。所以一直进入死循环
区别:break用于循环的永久终止
continue是跳出本次循环后面的代码,直接进入判断部分,进入下一次循环。
可以这么改
几个常见的陷阱
这里的\n也是占一个字符
for循环
先初始化,在判断,执行循环语句,然后调整,直到判断不成立,就跳出循环。
for循环遇见break和continue
与while一样
continue的后面的语句 不会执行,但是for循环的i++在前面。,他跳到了调整部分去了
循环里的语句不要随便乱省阅
这里第二就是i=0的时候内层循环执行三次,此刻i=1,但是j'现在等于3,内层循环没有初始化所以就打印了三次。
for循环题目
这里=是赋值,表达式2结果是假的,就执行一次。
、
do-while循环语句
先执行循环语句,在判断表达式,如果表达式为真,就继续,否则跳出循环。
几个循环题目
1. 计算 n的阶乘。
2. 计算 1!+2!+3!+……+10!
3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
//1. 计算 n的阶乘。
int main()
{
int i = 0;
int n = 0;
int ret = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
}
//2. 计算 1!+ 2!+ 3!+ …… + 10!
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret *= i;
sum += ret;
}
printf("%d\n", sum);
return 0;
}
二分查找算法
首先把arr[0]为left arr[9]为right 中间元素为mid 先判断arr[mid]>或者 <你要找的元素的值 ,运气好的话中间的元素就是你要查找的值。如果不是你要找的值,就判断arr[mid】>k就right=mid-1 ,<就left=mid+1
比如找元素7,他的下标为6,创建一个变量left,含义是起始的,right,是末端的,中间变量是mid(left+right)/2,left=mid+1,right=mid-1.比如arr[mid]<k,中间元素是下标是4,找的元素是下表是6,在后面,则是left=mid+1,right还是right。现在left下标是5,right下标是9,中间下标是7,找的下标是6,此时right变成了mid-1,就剩下二个元素了,就是6和7 下标是5和6 ,left=5,right=6,中间是5,,mid=5 此时必要要找的下标元素小,那就是left=mid+1就找到了。
#define _CRT_SECURE_NO_WARNINGS
//3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
#include <stdio.h>
#include <string.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = left+(right-left) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了下标是%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到\n");
}
return 0;
}
明确区别sizeof 和strlen()
//4. 编写代码,演示多个字符从两端移动,向中间汇聚
int main()
{
char arr1[] = "abcrerewf";
char arr2[] = "*********";
int left = 0;
int right = strlen(arr1) - 1;
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
left++;
right--;
}
return 0;
}
这里的Sleep是时间戳头文件是<windows.h>文件,就是起延时作用
system("cls"),头文件是<stdlib.h>,是一个清空屏幕的效果。
//5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
//提示登录成,如果三次均输入错误,则退出程序。4
int main()
{
char password[20] = { 0 };
int i = 0;
for (i = 0; i < 3; i++)
{
printf("请输入密码:");
scanf("%s", password);//假设密码是123;
if (strcmp(password, "123") == 0)
{
printf("登录成功\n");
break;
}
else
{
printf("密码错误\n");
}
}
if (i == 3)
{
printf("三次全部错误退出程序\n");
}
return 0;
}
猜数字游戏
猜数字游戏
1.电脑产生一个随机数
2.猜数字
3.猜大了
4.猜小了
5.直到猜对了,结束。
time(NULL)获得时间戳。头文件是<time.h>
rand()生成随机数的库函数
调用rand()之前必须调用srand(填一个随机数),头文件是<stdlib.>
生成随机数srand(usigned int ) time(NULL),这个就是生成随机数
但是这个只能调用一次。
//猜数字游戏实现
void game()
{
int n = 0;
int red =rand()%100+1;
//2猜数字
while (1)
{
printf("请猜数字\n");
scanf("%d", &n);
if (n < red)
{
printf("猜小了\n");
}
else if(n > red)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
void meau()
{
printf("*********************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
}
int main()
{
int input = 0;
do
{
srand((unsigned)time(NULL));//产生随机数
meau();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
// 猜数字
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误重新选择\n");
break;
}
} while (input);
return 0;
}
关机程序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>//strcmp()函数的头文件
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 120");// 必须写成1这个样子
while (1)
{
printf("请注意,你的电脑在120秒内关机,如果输入:我是你爹,就取消关机\n");
scanf("%s", input);
if (strcmp(input, "爹") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}