安徽大学C语言实验参考答案
2008年10月15日 下午 06:01
放在这里算是备份吧,只有一部分
实验一
5、输入并运行自已编写的程序(教材第一章P14 三 编程题)。
实验二
1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。
#include
main()
{float x,y,z,s,t,a;
printf(“x,y,z=”);
scanf(“%f,%f,%f”,&x,&y,&z);
s=x+y+z;
t=x*y*z;
a=s/3;
printf(“s=%f,t=%f,a=%f ”,s,t,a);
}
2、编程。要求用户输入两个整数a、b(分别为20、10), 读取用户从键盘输入的值,然后:
1)用整数输出这两个数的和、差;
2)用长整型输出这两个数的积,用float输出商;
3)用整数输出这两个数的余数,用float输出平均值。
#include
main()
{int a,b,he,cha,yu;
long ji;
float shang,aver;
printf(“a,b=”);
scanf(“%d,%d”,&a,&b);
he=a+b;
cha=a-b;
ji=(long)a*b;
shang=1.0*a/b;
yu=a%b;
aver=(a+b)/2.0;
printf(“a+b=%d,a-b=%d,a*b=%ld ”,he,cha,ji);
printf(“a/b=%f,a%%b=%d,aver=%f ”,shang,yu,aver);
}
实验三
1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。例如,输入整数5,程序运行后输出字符5。
#include
main()
{int a;
char c;
printf(“a=”);
scanf(“%d”,&a);
c=a+48;
putchar(c);
}
2、编程。输入半径,计算球体表面积( )和球体积 ( )。
#include
#define PI 3.1415926
main()
{float r,s,v;
printf(“r=”);
scanf(“%f”,&r);
s=4*PI*r*r;
v=4/3.0*PI*r*r*r;
printf(“s=%f,v=%f ”,s,v);
}
3、编写一个程序,要求通过键盘给6个变量赋值,然后将变量的值在屏幕上打印输出。这六个变量的值分别为:10,-10,40000,a,3.14,hello。
#include
main()
{int a,b;
long c;
char d,ch[6];
float e;
scanf(“%d,%d,%ld,%c,%f,%s”,&a,&b,&c,&d,&e,ch);
printf(“%d,%d,%ld,%c,%f,%s ”,a,b,c,d,e,ch);
}
实验四
1、输入三个整数,分别存放到变量a,b,c中,试编程输出其中的最小值。
#include
main()
{int a,b,c,min;
printf(“a,b,c=”);
scanf(“%d,%d,%d”,&a,&b,&c);
min=a>b?(b>c?c:b):(a>c?c:a);
printf(“min=%d ”,min);
}
2、输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则输出相应大写字母;其它字符原样输出
。(例如:输入F,输出f,输入b,输出B,输入7,输出7)。
#include
main()
{char c,ch;
c=getchar();
ch=c;
if(c>=‘A’&&c<=‘Z’)
ch=c+32;
if(c>=‘a’&&c<=‘z’)
ch=c-32;
putchar(ch);
}
实验五
1、函数
。
⑴用条件表达式求函数值y。
⑵用if语句编程,输入x,输出y,并给出你所使用的测试用例。
解(1)
#include
main()
{int y;
float x;
printf(“x=”);
scanf(“%f”,&x);
y=x>0?1:(x==0?0:-1);
printf(“y=%d ”,y);
}
解(2)
#include
main()
{int y;
float x;
printf(“x=”);
scanf(“%f”,&x);
if(x>0)
y=1;
else if(x==0)
y=0;
else
y=-1;
printf(“y=%d ”,y);
}
2、试编程输入成绩cj(cj为整型变量),如果cj的值在[100,90]内输出A,在(90,80]内输出B,在(80,70]内输出C,在(70,60]内输出D,在(60,0]内输出E,其它输出错误信息。请使用if语句和switch语句分别实现。
解(1)
#include
main()
{int cj;
printf(“cj=”);
scanf(“%d”,&cj);
if(cj>=90&&cj<=100)
printf(“A ”);
else
if(cj>=80&&cj<90)
printf(“B ”);
else
if(cj>=70&&cj<80)
printf(“C ”);
else
if(cj>=60&&cj<70)
printf(“D ”);
else
if(cj>=0&&cj<60)
printf(“E ”);
else
printf(“输入错误 ”);
}
解(2)
#include
main()
{int cj,n;
printf(“cj=”);
scanf(“%d”,&cj);
n=(cj>=0)+(cj>=60)+(cj>=70)+(cj>=80)+(cj>=90)+(cj>100);
switch(n)
{case 5:printf(“A ”);break;
case 4:printf(“B ”); break;
case 3:printf(“C ”); break;
case 2:printf(“D ”); break;
case 1:printf(“E ”); break;
default:printf(“输入错误 ”);
}
}
实验六
1、编程:输出200以内所有能被7整除的数。
#include
main()
{int i;
for(i=0;i<=200;i+=7)
printf(“%4d”,i);
}
2、从键盘输入n个数(n<10),找出其中最小值,请编写相应程序。
#include
main()
{int n,i,a,min;
printf(“n=”);
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{scanf(“%d”,&a);
if(i==1)min=a;
if(min>a)min=a;
}
printf(“min=%d”,min);
}
3、键盘输入正整数m和n(m
#include
main()
{int m,n,i,x1=0,x2=0;
printf(“input m,n(m
scanf(“%d,%d”,&m,&n);
for(i=m;i<=n;i++)
if(i%2==1)x1+=i;
else x2+=i;
printf(“x1(奇数之和)=%d,x2(偶数之和)=%d ”,x1,x2);
}
实验七
1、打印出所有的"水仙花数",所谓的"水仙花数"是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个"水仙花数",因为有153=1*1*1+5*5*5+3*3*3
。
解(1)
#include
main()
{int a,b,c,n;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{n=100*a+10*b+c;
if(n==a*a*a+b*b*b+c*c*c)
printf(“%d ”,n);
}
}
解(2)
#include
main()
{int a,b,c,n;
for(n=100;n<=999;n++)
{a=n/100;
b=n%100/10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
printf(“%d ”,n);
}
}
2、请分别用三种循环结构编程计算: 1!+2!+3!+...+n! , n的值由键盘输入。
解(1)
#include
main()
{int n,i;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{p*=i;
sum+=p;
}
printf(“1!+2!+…+%d!=%ld ”,n,sum);
}
解(2)
#include
main()
{int n,i=1;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,&n);
while(i<=n)
{p*=i;
sum+=p;
i++;
}
printf(“1!+2!+…+%d!=%ld ”,n,sum);
}
解(3)
#include
main()
{int n,i=1;
long p=1,sum=0;
printf(“n=”);
scanf(“%d”,&n);
do
{p*=i;
sum+=p;
i++;
}
while(i<=n);
printf(“1!+2!+…+%d!=%ld ”,n,sum);
}
实验八
1、打印输出由1,2,3,4四个数字组成的4位数,并统计它的个数(允许该4位数中有相同的数字,例如:1111,1122,,1212等).。
#include
main()
{int n,a,b,c,d,num=0;
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(c=1;c<=4;c++)
for(d=1;d<=4;d++)
{n=1000*a+100*b+10*c+d;
printf(“%5d”,n);
num++;
}
printf(“ num=%d ”,num);
}
2、从键盘输入10个正整数进行求和,如果错误地输入了负数,则求和结束。请分别用break和不用break编写相应程序。
解(1) 用break编写程序
#include
main()
{int i,n,sum=0;
for(i=1;i<=10;i++)
{scanf(“%d”,&n);
if(n>=0)sum+=n;
else break;
}
printf(“sum=%d”,sum);
}
解(2) 不用break编写程序
#include
main()
{int i=1,n=0,sum=0;
while(i<=10&&n>=0)
{scanf(“%d”,&n);
if(n>=0)
sum+=n;
i++;
}
printf(“sum=%d”,sum);
}