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=4n++;n=3break;}case 4:m++;m=5break;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. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
//提示登录成,如果三次均输入错误,则退出程序。4int 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;
}