第三次实验
part 1:验证性内容
用 if else 语句 | 用if 的嵌套语句 | |
判断三角形类型 |
1 #include <stdio.h> 2 int main( ) 3 { 4 double a,b,c; 5 scanf("%lf %lf %lf",&a,&b,&c); 6 if(a+b>c&&b+c>a&&a+c>b) 8 { 9 if (a==b&&a==c) 10 printf("构成等边三角形\n"); 11 else if (a==b||b==c||a==c) 12 printf("构成等腰三角形\n"); 13 else 14 printf("构成一般三角形\n"); 15 } 16 else 17 printf("不构成三角形\n"); 18 return 0; 19 } |
#include <stdio.h> int main( ) { double a,b,c; scanf("%lf %lf %lf",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { if (a==b||a==c||b==c) { if (a==b&&b==c&&a==c) printf("构成等边三角形\n"); else printf("构成等腰三角形\n"); } else printf("构成一般三角形\n"); } else printf("不构成三角形\n"); return 0; } |
这个没有需要多说的,不过周宇晟同学博客的格式真的很好看于是借鉴了一下,方便对比着比较(我的2忘了标注行啦) | 随着写代码的过程中,反而会慢慢捋清了自己的思路,最外层先是对是否构成三角形进行判断,再根据是否满足a==b||……来判断是否为等边or等腰三角形,否则为一般,最内层判断是等腰还是等边这样。 |
关于此题个人的理解就是这是说循环的判断条件为输入了有效的abc的值,则逻辑真进行循环下一次判断再次输入的abc的值,但这里有个疑问?为什么第二种写法更加合理呢?是因为分开输入不易错吗? | ||
判断三角形类型循环语句 |
1 #include <stdio.h> 2 int main( ) 3 { 4 double a,b,c; 5 printf("输入三角形三边\n"); 6 while(scanf("%lf %lf %lf",&a,&b,&c)) 7 { 8 if(a+b>c&&b+c>a&&a+c>b) 9 { 10 if (a==b&&b==c&&a==c) 11 printf("构成等边三角形\n"); 12 else if(a==b||b==c||a==c) 13 printf("构成等腰三角形\n"); 14 else 15 printf("构成一般三角形\n"); 16 } 17 else 18 printf("不构成三角形\n"); 19 20 printf("输入三角形三边\n"); 21 } 22 return 0; 23 } 24
|
1 #include <stdio.h> 2 int main( ) 3 { 4 double a,b,c; 5 printf("输入三角形三边\n"); 6 while(scanf("%ld",&a)&&scanf("%ld",&b)&&scanf("%ld",&c)) 7 { 8 if(a+b>c&&b+c>a&&a+c>b) 9 { 10 if (a==b&&b==c&&a==c) 11 printf("构成等边三角形\n"); 12 else if(a==b||b==c||a==c) 13 printf("构成等腰三角形\n"); 14 else 15 printf("构成一般三角形\n"); 16 } 17 else 18 printf("不构成三角形\n"); 19 20 printf("输入三角形三边\n"); 21 } 22 return 0; 23 } 24
|
运行结果 | ![]() |
|
|
||
#include <stdio.h> int main() { int score; // 用于存放百分制分数 char grade; // 用于存放等级制分数(取值'A', 'B','C','D', 'E') 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; }
|
#include <stdio.h> int main() { int score; // 用于存放百分制分数 char grade; // 用于存放等级制分数(取值'A', 'B','C','D', 'E') while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) // 如果检测到没有成绩输入,则结束整个循环 break; if(score<0 || score > 100) { printf("输入成绩有误!\n\n"); continue; // 结束本次循环,开始下一次循环 } switch(score/10) { // 使用switch进行分数等级判断 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; }
|
|
运行结果 | ![]() |
![]() |
由此,可知内层循环中出现continue和break并不会影响外层循环 | ||
#include <stdio.h> int main() { int i; // 在循环语句中使用continue for(i=1; i<=5; i++) { if (i%3 == 0) // 如果i是3的倍数,则结束本次循环,开始下一次循环 continue; printf("i=%d\n",i); } return 0; }
|
#include <stdio.h> int main() { int i; // 在循环语句中使用break for(i=1; i<=5; i++) { if (i%3 == 0) // 如果i是3的倍数,则结束整个循环 break; printf("i=%d\n",i); } return 0;
|
|
运行结果 | ![]() |
|
#include <stdio.h> const int LINE=3; // 定义符号常量LINE const int COLUME=5; // 定义符号常量COLUME int main() { int line; // 定义变量line, 用来控制行数 int col; // 定义变量col, 用来控制列数 // 输出LINE行信息 for(line=1; line<=LINE; line++) { // 每一行中,利用循环,输出各列信息 for(col=1; col<=COLUME; col++) { if(col%3 == 0) // 如果col是3的倍数,则结束本次循环,开始下一次循环 continue; printf("%5d", col); } printf("\n"); // 每输出完一行,换行 } return 0; }
|
#include <stdio.h> const int LINE=3; // 定义符号常量LINE const int COLUME=5; // 定义符号常量COLUME int main() { int line; // 定义变量line, 用来控制行数 int col; // 定义变量col, 用来控制列数 // 输出LINE行信息 for(line=1; line<=LINE; line++) { // 每一行中,利用循环,输出各列信息 for(col=1; col<=COLUME; col++) { if(col%3 == 0) // 如果col是3的倍数,则结束内层循环体 break; printf("%5d", col); } printf("\n"); // 每输出完一行,换行 } return 0; }
|
|
![]() |
![]() |
prat2 :补足程序
#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
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int n,i,m; for(n=101;n<=200;n++) { m=sqrt(n); for(i=2;i<=m;i++) if(n%i==0) break; if(i>m) printf("%-4d",n); } return 0; }
结果
有作参考且关于计算素数个数未写,后续再修改补充。
#include<stdio.h> int main() { int line,col; for(line=1;line<=5;line++) { for(col=5-line;col>=1;col--) { printf(" "); } for(col=1;col<=2*line-1;col++) { printf("*"); } printf("\n"); } return 0; }
做到part3 很费力了= =掌握的相当糟糕