|
以下是C语言程序设计中常用到的经典实例,对于后述数据结构的程序设计很有帮助!
【例1】按格式要求输入/输出数据 # include "stdio.h" main() { int a,b; float x,y; char c1,c2; scanf("a=%d,b=%d",&a,&b); scanf("%f, %e",&x,&y); scanf("%c %c",&c1,&c2); printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); } 运行该程序,必须按如下方式在键盘上输入数据 a=3,b=7 ↙ 8.5,71.82a A ↙ 请同学们写出输出结果 【例2】输入三角形三边长,求三角形面积。 # include "math.h" main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f",area); } 【例3】 已知三个数a,b,c,找出最大值放于max中。 分析:由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中if——else 形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。Max即为a,b,c中的最大值。 # include "stdio.h" main() { int a,b,c,max; /*定义四个整型变量*/ scanf("a=%d,b=%d,c=%d",&a,&b,&c); if (a>=b) max=a; /*a>=b*/ else max=b; /*a<b*/ if (c>max) max=c; /*c是最大值*/ printf("max=%d",max); } 若输入数据a=48,b=23,c=87,分析程序的执行顺序并写出运行结果 【例4】输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E 方法一:(用if嵌套`) 分析: 由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大
于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。
因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。 # include"stdio.h" main() { int score; char grade; printf("\nplease input a student score:"); scanf("%f",&score); if(score>100||score<0) printf("\ninput error!"); else { if(score>=90) grade='A'; else { if(score>=80) grade='B'; else {if(score>=70) grade='C'; else { if(score>=60) grade='D'; else grade='E'; } } } printf("\nthe student grade:%c",grade); } } 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 方法二:用switch语句 分析: switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩
分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相
应的常数。 # include"stdio.h" main() { int g,s; char ch; printf("\ninput a student grade:"); scanf("%d",&g); s=g/10; if(s<0||s>10) printf("\ninput error!"); else { switch (s) { case 10: case 9: ch='A'; break; case 8: ch='B'; break; case 7: ch='C'; break; case 6: ch='D'; break; default: ch='E'; } printf("\nthe student scort:%c",ch); } } 输入测试数据,同方法一一样调试程序并写出结果。 打印500以内的"水仙花数"。"水仙花数"是一个三位数,其各位数立方和等于该数本身。 main() { int i,j,k,n; for(n=100;n<=500;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf(" %d",n); } } 【例5】一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。 main() { int n,s,j; for(n=1;n<=100;n++) { s=0; for(j=1;j<n;j++) if (n%j==0) s=s+j; if (s==n) printf("%d",s); } } |