C语言入门教程(4)8miu花神生涯

    科技2022-07-11  103

    文章目录

    循环结构程序的设计goto语句和if语句构成循环while语句构成循环do-while语句构成循环for语句构成循环


    循环结构程序的设计

    goto语句和if语句构成循环

    goto 语句标号;注意:语句标号与goto语句同处与一个函数中,但可以不在同一个循环层 #include <studio.h> main() { int i,sum=0; i=1; loop: //语句标号: if(i<=100) { sum=sum+1; i++; goto loop;//跳转到语句标号处 } printf("%d\n",sum); }

    while语句构成循环

    while(循环条件) 循环体 break:直接跳出循环体,永久终止循环 ,对用if和goto语句构成的循环不起作用,若为多层循环,则执行一次break,只能向外跳一层continue:跳出本次尚未执行的语句,进入下次循环判断条件

    计算1-10的值

    #include <studio.h> main() { int i,sum=0;//循环变量初始化 i=1; while(i<=10)//只要表达式为真,就继续循环 { sum=sum+1; i++; } printf("%d\n",sum); }

    输出从0开始的偶数

    #include <studio.h> main() { int i=0,n; printf("请输入数字:"); scanf("%d",&n); while(n--) printf("%d",i++*2) }

    密码输入和确认 死循环判断输入缓冲区为空

    #include <studio.h> main() { int ret=0; char password[20]={0} printf("请输入密码:"); scanf("%s",password);//输入函数 123456回车确认,在输入缓冲区取走123456,剩下\n printf("请确认密码(Y/N)")//未等待 ret=getchar();//输入函数,在输入缓冲区取走\n if(ret=='Y') { printf("确认成功") } else { printf("确认失败")//于是打印出\n的ACLLa码10 } } 修改后 #include <studio.h> main() { int ret=0; int ch=0; char password[20]={0} printf("请输入密码:"); scanf("%s",password);//输入密码存放在password函数中123456 ABCD回车确认,在输入缓冲区取走123456,剩下\nABCD\n while(nr=getchar()!='\n'); { //不需要做事情,只需循环判断等待为\n } printf("请确认密码(Y/N)")//等待中 ret=getchar();//重新输入密码 if(ret=='Y') { printf("确认成功") } else { printf("确认失败") }

    编写代码,演示多个字符从两端移动,向中间汇聚

    #include <studio.h> #include <string.h> main() { char arr1[]="hello word" 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); left++; right-- } }

    do-while语句构成循环

    先执行循环体中的语句,然后判断表达式是否为真,如果为真,继续循环,如果为假,则终止循环 打印1-10 的值

    #include <studio.h> main() { int i=0; do { printf("%d\n",i); i++; } while(i<=10); }

    for语句构成循环

    for(表达式1初始化循环变量;表达式2条件判断部分;表达式3循环条件的调整) 循环语句;

    注意情况:

    表达式1和表达式2和表达式3均可以省略,但“;”不能省略省略表达式1;表示不对循环控制变量赋初值省略表达式2:若不做其他处理,则成为死循环省略表达式3,则表示不对循环控制变量进行操作

    简单打印1-10的值

    #include <studio.h> main() { int i=0; for(i=1;i<=10 ;i++)//for语句 { printf("%d\n",i); } return 0; }

    变种情况1缺少表达式1

    #include <studio.h> main() { int i=0; int j=0; for(;i<=10;i++)//for语句 { //当i从0 → 1时,j循环10次,此时j=10 //当i从1 → 2时,j由于省略循环变量赋初值,无法从10初始为0,故无法循环 for(;j<=10;j++) { printf("你好\n"); } } return 0; } //当省略表达式1(循环变量赋初值)时,只能输出10次

    变种情况2,表达式2(循环条件的缺失)

    for(i=0,j=0;j=0;i++,j++) { //不循环,j=0意思为j为假 //死循环。当j=!0时j为真 }

    计算n的阶乘

    #include <studio.h> int i; int sum=1main() { printf("请输入n的数字") scanf("&d",sum) for(i=1;i<=sum;i++)//for语句 { sum=sum*i } printf("%d\n",sum); return 0}

    在一个有序数组中查找具体的某些数字的下标

    #include <studio.h> main() { int arr[] ={1,2,3,4,5,6,7,8,9,10} int m=5; int changdu=sizeof(arr)/sizeof(arr[0]);//求数组长度 for(i=1;i<changdu;i++) { if(m==arr[i])//当数组元素和m相等时 { printf("找到了。下标是;%d\n",i); } } if(i==arr[i])//当循环次数等于数组长度时 printf("未找到\n"); return 0}

    用 折半查找完成上题

    #include <studio.h> main() { int arr[] ={1,2,3,4,5,6,7,8,9,10} int m=6; int changdu=sizeof(arr)/sizeof(arr[0]);//求数组长度 int left =0;//左下标 int right=changdu -1;//右下标 for(i=1;i<changdu;i++) int changdu =(left+right)/2 { if(arr[changdu]>m)//当数组元素和m相等时 { right =changdu -1; //假设查询范围为1~10,下标中间值8大于6, //当中间值大于查询值时,就相当于8~10绝对不可能有, //接下来该查询,左下标~查询中间值+1的距离 } else if(arr[changdu]<m) { left =changdu+1 //假设查询范围为1~10,下标中间值4小于6, //当中间值小于查询值时,就相当于1~4绝对不可能有, //接下来该查询,查询中间值+1~右下标的距离 } printf("找到了\n",changdu); break; } } if(left>right) { } return 0; }

    花神博客生涯之C语言(4)结束了哦~ 接下来会持续更新(⊙o⊙)!

    Processed: 0.024, SQL: 8