提示:本文仅是对个人学习经历的一个记录
前言:
作为一个小白,关于我的学习经历,我想在此做一个记录。
本文是关于C语言流程控制部分的内容。
一、选择结构和判断语句
1、if - else语句
1.1、if 判断
题1、输入三个数,按代数值从小到大输出
#include <stdio.h> int main() { int data1; int data2; int data3; int tmp; puts("请输入三个数:"); //输入的数注意不要越界 scanf("%d%d%d",&data1,&data2,&data3); if( data1>data2){ //data1和data2比 tmp = data1; data1 = data2; data2 = tmp; } if( data1>data3){ //data1和data3比 tmp = data1; data1 = data3; data3 = tmp; } if( data2>data3){ //data2和data3比 tmp = data2; data2 = data3; data3 = tmp; } printf("代数值从小到大输出:%d, %d, %d\n",data1,data2,data3); return 0; }
结果:
1.2、if 多重判断
#include <stdio.h> int main() { int data1; int data2; puts("请输入两个整数:"); scanf("%d%d",&data1,&data2); if( data1==1 && data2==0){ puts("逻辑与"); //return -1; //返回 -1,程序直接提前结束,后面不运行 } if( data1==1 || data2==0){ puts("逻辑或"); } if( !data1){ puts("逻辑非"); } return 0; }
结果:
1.3、 if - else 分支语句
题2 、输人一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
#include <stdio.h> int main() { char data; puts("请输入一个字符:(26个英文字母之一)"); //提示输入 data = getchar(); //获取字符 //scanf("%c",&data); if( data>=65 && data<=90){ //判断是否大写, ASCII码 printf("你输入的大写字母是:%c\n其小写形式为:%c\n",data,data+32); //大写转小写 }else if( data>=97 && data<=122){ //否则,判断是否小写 printf("你输入的小写字母是:%c\n",data); //直接输出 }else{ //否则,不是2626个英文字母之一 puts("请按要求输入字符!!"); } puts("done!"); //程序结束 return 0; }
结果:
2、switch - case 语句
2.1、存在意义
if 语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(85分以上为'A'等,70~84分为'B等,60~69分为'C'等),人口统计分类(按年龄分为老、中、青、少、儿童),工资统计分类,银行存款分类等。当然这些都可以用嵌套的if语句来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C语言提供switch语句直接处理多分支选择。
题1、学生成绩分类(100分为'A'等,80~99分为'B等,60~79分为'C'等,0~59分为'D'等)。
#include <stdio.h> int main() { int idata; puts("请输入你的成绩:"); scanf("%d",&idata); switch( idata / 10){ case 0: case 1: case 2: case 3: case 4: case 5: printf("等级为D,不及格\n"); break; //结束此语句 case 6: case 7: printf("等级为C,良好\n"); break; case 8: case 9: printf("等级为B,优秀\n"); break; case 10: printf("等级为A,极好\n"); break; default: //其他情况 printf("输入错误,请输入正确的成绩!\n"); } puts("done!"); return 0; }
结果:
二、循环控制语句
1、while循环
题1、求 1 ~ 100之和
#include <stdio.h> int main() { int i = 1; int sum = 0; //变量最好初始化成0,编码习惯 while( i<=100){ sum = sum+i; i++; } printf("1~100的和为: %d\n",sum); return 0; }
结果:
2、do - while
#include <stdio.h> int main() { int data = 0; /* while( data != 0){ printf("this is test\n"); data--; } */ do{ //先执行,后判断 printf("this is test\n"); data--; }while( data != -6); return 0; }
结果:
3、for循环
题1、 输入两个正整数m和n ,求其最大公约数和最小公倍数。
#include <stdio.h> int main() //求m和n的最大公约数和最小公倍数 { int m; int n; int c,d; puts("请输入两个正整数:"); scanf("%d%d",&m,&n); c = m % n; d = m * n; while( c != 0){ //辗转相除法(求最大公约数) m = n; //1、m%n得余数c n = c; //2、若c==0,则n即为两数的最大公约数 c = m % n; //3、若c!=0,则m=n,n=c,再回去执行1 } //最小公倍数=两整数的乘积÷最大公约数 printf("它们的最小公倍数为: %d\n",d/n); printf("它们的最大公约数为: %d\n",n); return 0; }
结果:
题2、输出100到1000之间的水仙花数。
#include <stdio.h> int main() //求水仙花数 { int data; int i,j,k; puts("100到1000之间的水仙花数有:"); for(data=100;data<1000;data++){ i = data%10; //分解出个位 j = data/10%10; //分解出十位 k = data/100; //分解出百位 if( i*1+j*10+k*100 == i*i*i+j*j*j+k*k*k){ printf("%d ",data); } } return 0; }
结果:
![]()
4、break和contine
4.1、break 结束循环
题1、在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
#include <stdio.h> int main() { int numOfPerson; int totalMoney; //总钱数 int money; puts("现在需要募捐 10 万元"); for(numOfPerson=1;numOfPerson<=1000;numOfPerson++){ puts("请输入捐款数目(元):"); scanf("%d",&money); totalMoney = totalMoney+money; if( totalMoney >=100000){ printf("很棒!捐款目标已达10万元!\n"); break; //结束循环 } } printf("此时的捐款人数为: %d 人\n",numOfPerson); printf("此时的捐款总数为: %d 元\n",totalMoney); printf("平均每人捐款: %.2f 元\n",(float)totalMoney/numOfPerson); return 0; }
结果:
4.2、continue 结束本次循环
题1、要求输出100~200之间的不能被3整除的数。
#include <stdio.h> int main() //输出100到200之间不能被3整除的数 { int data; data = 99; puts("100到200之间不能被3整除的数:"); while( data<=200){ //while 循环实现 data++; if( data%3 == 0){ //余数为零说明能被整除 continue; //跳出本次循环 } printf("%d ",data); } /* for(data=100;data<=200;data++){ //for 循环实现 if( data%3 ==0){ continue; } printf("%d ",data); } */ return 0; }
结果:
5、循环嵌套
#include <stdio.h> int main() { int i; int j; for(i=1;i<5;i++){ for(j=1;j<6;j++){ printf("%d\t",i*j); // '\t'水平制表符 } printf("\n"); //回车 } return 0; }
结果:
三、总结:
以上就是今天要讲的内容,本文仅仅简单介绍了关于流程控制部分的知识。
如有错漏,望批评指正。让我们共同进步吧!!