part. 1:判断三角形
#include<stdio.h> int main(){ double a,b,c; while(printf("输入3个数:"),scanf("%lf%lf%lf",&a,&b,&c)!=0){ if(a+b>c&&a+c>b&&b+c>a){ if(a==b||a==c||b==c){ if(a==b&&b==c) printf("构成等边三角形\n"); else printf("构成等腰三角形\n"); } else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); printf("\n"); } return 0; }
通过这次编程了解到如何利用输入控制循环。
如果将while(scanf("%lf%lf%lf",&a,&b,&c)!=0)改成while(scanf("%lf",&a)&&scanf("%lf",&b)&&scanf("%lf",&c)!=0),前者只要第一个输入数字,后面输入字母就会循环一次,然后结束;若第一个是字母,则直接结束;而后者只要有一个是字母,就会结束。
part. 2: 输入百分制分数,得等级制分数
#include<stdio.h> int main(){ int score; char grade; while(1){ printf("输入成绩:"); scanf("%d",&score); if(score<0||score>100){ printf("结束输入"); break; } else 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';break; } printf("等级是%c\n",grade); } return 0; }
这里是用if()判断分数值然后break跳出循环。
part. 3: 比较continue与break用法
continue:
#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; }
continue是结束循环进入下次循环,只对循环语句起作用。i=3不输出。
break:
#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; }
break是结束整个循环,可用于循环语句和switch()语句。i=3后面的都不输出。
part.4:判断5个数中最大与最小
#include<stdio.h> int main(){ double number,max,min; int n; printf("输入第1个数:"); scanf("%lf",&number); max=min=number; for(n=2;n<6;++n){ printf("输入第%d个数:",n); scanf("%lf",&number); if(number>max) max=number; else if(number<min) min=number; } printf("\nmax=%lf\nmin=%lf",max,min); return 0; }
编程练习:
1.求101~200间全部素数
#include<stdio.h> #include<math.h> int main(){//101~200 int i,n,line=0; int a,b; printf("输入a,b:"); scanf("%d%d",&a,&b); printf("输出%d~%d之间所有素数:\n",a,b); for(i=a;i<=b;i++){ if(i<=1) continue; for(n=2;n<=sqrt(i);n++){ if(i%n==0) break; } if(n>sqrt(i)){ if(line++%6==0) printf("\n"); printf("%d\t",i); } } return 0; }
控制间隔与换行
2.打出星号塔
#include<stdio.h> int main(){ int line,col,n; //列数,行数 char ch; printf("输入你要打印的字符:"); ch=getchar(); while(printf("输入你要打印的行数:"),scanf("%d",&n)) { if(n>0){ for(col=1;col<=n;col++){ line=col; while(line<n){ /*空格*/ printf(" "); line++; } putchar(ch); for(line=col;line>1;line--){ /*星号*/ printf("%c%c",ch,ch); } printf("\n"); } } else break; } return 0; }