- //多分支
- if(表达式1)
- 语句1;
- else if(表达式2)
- 语句2;
- else
- 语句3;
如果表达式的结果为真,则语句执行。 在C语言中如何表示真假? 0表示假,非0表示真。
- #include
- int main()
- {
- if(表达式)
- {
- 语句列表1;
- }
- else
- {
- 语句列表2;
- }
- return 0;
- }
- //适当的使用{}可以使代码的逻辑更加清楚。
- //代码风格很重要
- #include
- int main()
- {
- int a = 0;
- int b = 2;
- if(a == 1)
- {
- if(b == 2)
- {
- printf("hehe\n");
- }
- }
- else
- {
- printf("haha\n");
- }
else的匹配:else是和它离的最近的if匹配的。
- #include
- int main()
- {
- int day = 0;
- 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;
- }
- return 0;
- }
优化
- #include
- //switch代码演示
- int main()
- {
- int day = 0;
- switch(day)
- {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- printf("weekday\n");
- break;
- case 6:
- case 7:
- printf("weekend\n");
- break;
- }
- return 0;
- }

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
- #include
- int main()
- {
- int n = 1;
- int m = 2;
- switch (n)
- {
- case 1:
- m++;
- case 2:
- n++;
- case 3:
- switch (n)
- {//switch允许嵌套使用
- case 1:
- n++;
- case 2:
- m++;
- n++;
- break;
- }
- case 4:
- m++;
- break;
- default:
- break;
- }
- printf("m = %d, n = %d\n", m, n);
- return 0;
- }

- /*
- break:跳出本次循环
- while中的break是用于永久终止循环的
- */
- int c = 0;
- while (c <= 10)
- {
- if (c == 5)//等于5的时候跳出
- break;
- printf("%d", c);//01234
- c++;
- }
- printf("\n========");

- /*
- continue:跳出本次循环,后面的代码不在执行
- 而是直接跳转到while语句的判断部分,进行下一次循环入口判断
- */
- int d = 0;
- while (d <= 10)
- {
- if (d == 5)//等于5的时候跳出
- continue;
- printf("%d\n", d);//01234死循环
- d++;
- }
- printf("========");
-
- int e = 0;
- while (e <= 10)
- {
- e++;
- if (e == 5)//等于5的时候跳出
- continue;
- printf("%d", e);//1234
- }
- printf("========");
-
- return 0;

- //代码什么意思?
- //代码1
- #include
- int main()
- {
- int ch = 0;
- while ((ch = getchar()) != EOF)
- putchar(ch);
- return 0;
- }
- 这里的代码适当的修改是可以用来清理缓冲区的.
- //代码2
- #include
- int main()
- {
- char ch = '\0';
- while ((ch = getchar()) != EOF)
- {
- if (ch < ‘0’ || ch > ‘9’)
- continue;
- putchar(ch);
- }
- return 0;
- }
- //这个代码的作用是:只打印数字字符,跳过其他字符的、
- //int ch 是因为 getchar 函数获取的是 ascll 不是字符!!!
- /*int ch = getchar();
- putchar(ch);
- printf("%c\n", ch);*/
- //int ch = 0;
- //EOF-- end of file -> 文件结束标志
- //while ((ch = getchar()) != EOF) {//只要不输出EOF就不会跳出
- // putchar(ch);
- //}
- int ret = 0;
- int ch = 0;
- char password[20] = { 0 };
- printf("输入密码:");
- scanf("%s", password);//此时缓冲区;password\n
- //此时缓冲区还剩余一个'\n'
- //读取一下'\n'
- //getchar();
- while ((ch = getchar()) != '\n') {
-
- }
- printf("请确认(y/n)");
- //此时ret输出:10-->获取了输入流中的回车键
- ret = getchar();//y/n
- if (ret == 'y') {
- printf("输入成功");
- }
- else {
- printf("输入失败");
- }


- int b = 0;
- while (b <= 10) {
- if (b == 5) {
- continue;
- }
- printf("b:%d", b);//01234
- b++;
- }
-
- int c = 0;
- for (c = 1;c < 10;c++) {
- if (c == 5) {
- break;
- }
- printf("c:%d", c);//12346789
- }
- return 0;

- int i = 0;
- //前闭后开的写法
- for(i=0; i<10; i++)
- {}
- //两边都是闭区间
- for(i=0; i<=9; i++)
- {}
- #include
- int main()
- {
- //代码1
- for (;;)
- {
- printf("hehe\n");//死循环
- }
- return 0;
- }
-
- int main() {
- int a = 0;
- int b = 0;
- for (;a < 10;a++) {
- for (;b < 10;b++) {
- //这里就打印10个,因为当b跳出的时候b=10,再一次要进来则还是10,故进不来
- printf("hehe");
- }
- }
- printf("==============");
-
-
- //代码2
- int i = 0;
- int j = 0;
- //这里打印多少个hehe?
- for (i = 0; i < 10; i++)
- {
- for (j = 0; j < 10; j++)
- {
- printf("hehe\n");
- }
- printf(".....");
- }
- }
-
- int main() {
- //代码4-使用多余一个变量控制循环
- int x, y;
- for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
- {
- printf("hehe\n");//输出2个
- }
- return 0;
-
- }
- //请问循环要循环多少次?
- #include
- int main()
- {
- int i = 0;
- int k = 0;
- for(i =0,k=0; k=0; i++,k++)
- k++;
- return 0;
- }


- #include
- int main()
- {
- int i = 1;
-
- do
- {
- if (5 == i)
- continue;
- printf("%d\n", i);//1234
- } while (i < 10);
-
- return 0;
- }
-
-
-
- #include
- int main()
- {
- int i = 10;
-
- do
- {
- if (5 == i)
- break;
- printf("%d\n", i);//10
- } while (i < 10);
-
- return 0;
- }
- int main() {
- int i = 0;
- int n = 0;
- int result = 1;
- scanf("%d", &n);
- for (i = 1;i <= n;i++) {
- result = n * i;
- printf("%d", i);
- }
- return 0;
- }
- int main() {
- int n = 0;
- int result = 1;
- int sum = 0;
- for (n = 1;n <= 10;n++) {
- result = result * n;
- sum += result;
- }
- printf("sum=%d\n", sum);
- return 0;
- }
- int main() {
- int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
- int k = 7;
- int i = 0;
- //数组长度
- int sz = sizeof(arr) / sizeof(arr[0]);
- for (i = 0;i < sz;i++) {
- if (k == arr[i]) {
- printf("找到了,下标为:%d", i);
- break;
- }
- }
- return 0;
- }
-
-
- int main() {
- int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
- int k = 7;
- int i = 0;
- //数组长度
- int sz = sizeof(arr) / sizeof(arr[0]);
- for (i = 0;i < sz;i++) {
- if (k == arr[i]) {
- printf("找到了,下标为:%d", i);
- break;
- }
- }
- return 0;
- }


- int main()
- {
- int arr[] = {1,2,3,4,5,6,8,9,10,11};
- int k = 7;
-
- int sz = sizeof(arr)/sizeof(arr[0]);//计算元素个数
- int left = 0;//左下标
- int right = sz-1;//右下标
-
- while(left<=right)
- {
- int mid = (left+right)/2;
- if(arr[mid] > k)
- {
- right = mid-1;
- }
- else if(arr[mid] < k)
- {
- left = mid+1;
- }
- else
- {
- printf("找到了,下标是:%d\n", mid);
- break;
- }
- }
- if(left>right)
- {
- printf("找不到\n");
- }
- return 0;
- }
- #include
- #include
- #include
- int main()
- {
- //
- //welcome to bit!!!!!!
- //####################
- //w##################!
- //we################!!
- //wel##############!!!
- //...
- //welcome to bit!!!!!!
- //
- //char arr[] = "abc";
- //[a b c \0]
- // 0 1 2 3
- //4-2
- char arr1[] = "welcome to bit!!!!!!";
- char arr2[] = "####################";
- int left = 0;
- //这里arr[0]-2:是因为,下面的实际长度下标值为:2=4-2
- // [a b c \0]
- // 0 1 2 3
- //int right = sizeof(arr1)/sizeof(arr1[0])-2;//err
- //使用strlen记得导入[#include
] - int right = strlen(arr1)-1;
-
- while(left<=right)
- {
- arr2[left] = arr1[left];
- arr2[right] = arr1[right];
- printf("%s\n", arr2);
- //休息一秒
- //#include
- Sleep(1000);
- //#include
- system("cls");//执行系统命令的一个函数-cls - 清空屏幕
- left++;
- right--;
- }
- printf("%s\n", arr2);
- return 0;
- }
- #include
- int main()
- {
- int i = 0;
- char password[20] = { 0 };
- for (i = 0; i < 3; i++)
- {
- printf("请输入密码:>");
- scanf("%s", password);
- if (strcmp(password, "123456") == 0)//== 不能用来比较两个字符串是否相等,应该使用一个库函数-strcmp
- {
- printf("登录成功\n");
- break;
- }
- else
- {
- printf("密码错误\n");
- }
- }
- if (i == 3)
- printf("三次密码均错误,退出程序\n");
- return 0;
- }