实验三
Posted kzt1121
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验三相关的知识,希望对你有一定的参考价值。
Part1.验证性内容
a.在键盘上输入三个数,判断能够成何种三角形。
#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("构成等边三角形 "); else if(a==b || a==c || b==c) printf("构成等腰三角形 "); else printf("构成一般三角形 "); } else printf("不能构成三角形 "); return 0; }
使用while语句
#include <stdio.h> int main(){ double a,b ,c; while(scanf("%lf %lf %lf",&a,&b,&c)){ if(a+b>c && a+c>b && b+c>a){ if(a==b && a==c) printf("构成等边三角形 "); else if(a==b || a==c || b==c) printf("构成等腰三角形 "); else printf("构成一般三角形 "); } else printf("不能构成三角形 "); printf(" 输入三角形三边: "); } return 0; }
使用scanf()函数输入一个百分制成绩,要求输出成绩等级为A,B,C,D,E。
#include <stdio.h> int main(){ int score; char grade; while(1){ printf("输入学生成绩:"); if(scanf("%d",&score)==0) break; if(score<0 || score>100){ printf("输入成绩有误! "); 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 ",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("输入成绩有误! "); 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 ",grade); } return 0; }
对比continue和break的功能
include <stdio.h> int main(){ int i ; for(i=1;i<=5;i++){ if (i%3==0) continue; printf("i=%d ",i); } return 0; }
#include <stdio.h> int main(){ int i ; for(i=1;i<=5;i++){ if (i%3==0) break; printf("i=%d ",i); } return 0; }
思考:在循环中使用控制语句和continue和break,其功能区别是什么?
使用continue会跳过本层循环,并开始下一轮循环;而break语句则直接跳出循环。
对比和理解在嵌套的循环中控制语句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(" "); } 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(" "); } return 0; }
思考
1.在两层嵌套循环中,内层循环中如果出现continue,是否影响外层循环?
不影响
2.在两层嵌套循环中,内层循环中如果出现break,是否影响外层循环?
不影响
Part 2.补足程序,使得程序运行
编程中找出五个整数中的最大数和最小数,并输出找出的最大数和最小数
#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(max<number) max = number; else if(min>number) min = number; } }
Part 3.
编程输出101~200之间的所有素数,并输出这一区间内的素数个数。
#include<stdio.h> #include <math.h> int isprime(int n) { //返回1表示判断为质数,0为非质数,在此没有进行输入异常检测 float n_sqrt; if(n==2 || n==3) return 1; if(n%6!=1 && n%6!=5) return 0; n_sqrt=floor(sqrt((float)n)); for(int i=5;i<=n_sqrt;i+=6) { if(n%(i)==0 | n%(i+2)==0) return 0; } return 1; } int main() { int num=0; int t=0; int i; for( i=101 ; i<=200 ; ++i ) { if(isprime(i)) { num++; printf("%2d ",i); t++; if(t==4) { printf(" "); t=0; } } } return 0; }
编程打印出如下图形
#include<stdio.h> /*输入输出头文件*/ int main() /*空类型:主函数*/ { int a,b; /*定义变量的数据类型为整型*/ for(a=0;a<=4;a++) /*确定行数*/ { for(b=4-a;b>=0;b--) /*确定空格数量*/ printf(" "); for(b=1;b<=a*2+1;b++) /*确定每一行星号数量*/ printf("*"); printf(" "); /*换行*/ } return 0; }
以上是关于实验三的主要内容,如果未能解决你的问题,请参考以下文章