C语言程序设计经典实例
发布时间:2008年11月08日  来源:互联网 

 

 

 以下是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 已知三个数abc,找出最大值放于max中。
分析:由已知可得在变量定义时定义四个变量abcmaxabc是任意输入的三个数,max是用来存放结果最大值的。第一次比较ab,把大数存入max中,因ab都可能是大值,所以用if语句中if——else 形式。第二次比较maxc,把最大数存入max中,用if语句的第一种形式if形式。Max即为abc中的最大值。
# 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以外),BCD类的成绩的共同特点是十位数相同,此外都是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);
}
}

 

 

 

Tags:
下一篇:云窜副