Part1:验证性内容
1.判断三角形:
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形\n"); else if(a==b || a==c || b==c) printf("构成等腰三角形\n"); else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
运行:
(1)将if语句稍微进化一下显得更加清爽与有层次性,运行结果是一致的:
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b || a==c || b==c) { if (a==b && a==c) printf("构成等边三角形\n"); else printf("构成等腰三角形\n"); } else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
(2)加入while循环后,更加方便易操作了,不用重复点开再重新运行,直接可以在一个界面完成所有的(表达不是很准确,但意思就是很赞很6):
#include <stdio.h> int main() { double a,b,c; printf("输入三角形三边:\n"); while(scanf("%lf%lf%lf",&a,&b,&c)) { if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形\n"); else if(a==b || a==c || b==c) printf("构成等腰三角形\n"); else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); printf("\n输入三角形三边:\n"); } return 0; }
2.输入成绩查询等级:
#include <stdio.h> int main() { int score; char grade; while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) break; if(score<0 || score > 100) { printf("输入成绩有误!\n\n"); continue; } else if(score>=90 && score<=100) grade = 'A'; else if(score>=80 && score<=89) grade = 'B'; else if(score>=70 && score<=79) grade = 'C'; else if(score>=60 && score <=69) grade = 'D'; else grade = 'E'; printf("等级为: %c\n\n", grade); } return 0; }
用switch语句来改写,排版更加整齐清晰,符号好像更简化一点,运行结果也是一致的:
#include <stdio.h> int main() { int score; char grade; while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) break; if(score<0 || score > 100) { printf("输入成绩有误!\n\n"); continue; } switch(score/10) { case 10: case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; default: grade='E'; } printf("等级为: %c\n\n", grade); } return 0; }
3.比较continue和break功能:
#include <stdio.h> int main() { int i; for(i=1; i<=5; i++) { if (i%3 == 0) continue; printf("i=%d\n",i); } return 0; }
#include <stdio.h> int main() { int i; for(i=1; i<=5; i++) { if (i%3 == 0) break; printf("i=%d\n",i); } return 0; }
在循环中使用控制语句continue和break,其功能区别是:
continue:结束本次循环,开始下一次循环。
break:跳出switch结构或结束本层循环。
4.比较在嵌套的循环中控制语句continue和break的功能:
#include <stdio.h> const int LINE=3; const int COLUME=5; int main() { int line; int col; for(line=1; line<=LINE; line++) { for(col=1; col<=COLUME; col++) { if(col%3 == 0) continue; printf("%5d", col); } printf("\n"); } return 0; }
#include <stdio.h> const int LINE=3; const int COLUME=5; int main() { int line; int col; for(line=1; line<=LINE; line++) { for(col=1; col<=COLUME; col++) { if(col%3 == 0) break; printf("%5d", col); } printf("\n"); } return 0; }
在两层嵌套循环中,内层循环中如果出现continue,不会影响外层循环;
在两层嵌套循环中,内层循环中如果出现break,也不会影响外层循环。
Part2:补足程序,使得程序运行:
1.找出5个数中的最大数和最小数并输出
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; while(n<5) { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
因为我改动之后没有先调试,所以一开始的运行结果是错的:
调试之后才正确了:
Part3:编程练习
1.找素数
略微错误的示范:我写了一个程序,但和预期运行效果并不太一样,并且忘记加入了“101~200间共有多少个素数”,也想问一下大佬,这句话应该加在那两行之间,有点不太清楚。
#include<stdio.h> #include<math.h> int isprime(int n); int main() { int i; for(i=101;i<=200;i++) { if(isprime(i)) printf("%4d",i); } return 0 ; } int isprime(int n) { int k; for(k=2;k<=sqrt(n);k++) if(n%k==0) return 0; }
2.编程打印输出图案
#include <stdio.h> int main() { int a,b,c; for(b=1;b<5;b++) { for(c=1;c<=6-b;c++) printf(" "); for(a=1;a<=2*b-1;a++) printf("*"); printf("\n"); } return 0; }
编程真的有点难,我做了好久,卑微......