C语言实验题答案
(仅供参考)
01.*****求圆柱体的体积、表面积、周长、底面积。注意符号常量的使用。#include
#define PI 3.14
void main()
{
float r,h;
double V,S,s,c;
printf("请输入圆柱体的半径r和高h:");
scanf("%f%f",&r,&h);
V=PI*r*r*h;
S=2*PI*r*h;
s=PI*r*r;
c=2*PI*r;
printf("%f\t%f\t%f\t%f\n",V,S,s,c);
}
02. *****输入并运行下面的程序,注意变量的定义与赋值。
#include
void main()
{
int a=3,b=5;
float x,y;
x=1.5;
y=1.5;
printf("%d\t%d\n",a,b);
printf("%f\t%f\n",x,y);
}
03. *****从键盘输入两个整数x,y.求x+y; x-y x*y; x/y; x%y.
#include
void main()
{
int x,y;
printf("请输入两个整数x,y:");
scanf("%d %d",&x,&y);
printf("%d\t%d\t%d\t%d\n",x+y,x-y,x*y,x/y,x%y);
}
04. *****.鸡和兔的头数h,鸡和兔的脚的个数f.求多少鸡和兔。
#include
void main()
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
{
int a,b,h,f;
printf("请输入鸡和兔的头数为h头和鸡和兔的脚的个数为f个:");
scanf("%d%d",&h,&f);
a=(4*h-f)/2;
b=(f-2*h)/2;
printf("鸡的只数a=%d\n,兔的只数b=%d\n",a,b);
}
05. *****A以15m/s的速度行驶十分钟后,B以20m/s的速度追赶,问多长时间能追上。
#include
void main()
{
float u,v,t,x;
u=20,v=15,t=600;
x=v*t/(u-v);
printf("%f\n",x);
}
06.*****编写程序,输入三角形的边长,求三角形面积。
#include
#include
void main()
{
float a,b,c,area,s;
printf("请输入有效的三边长为a,b,c:\n");
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%f\n",area);
}
07. *****编写程序,分别求三个实数的整数部分与小数部分之和。
#include
void main()
{
float a,b,c;
int x,y, xs;
double ls;
printf("请输入三个实数a,b,c:");
scanf("%f%f%f",&a,&b,&c);
x=(int)a;
y=(int)b;
xs=(int)a+(int)b+(int)c;
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
ls=(a-(int)a)+(b-(int)b)+(c-(int)c);
printf("%d\t%d\n",x,y);
printf("%d\t%f\n",xs,ls);
}
08. *****从键盘输入一个四位的整数,求该四位数的千位数,百位数,十位数,个位数。
#include
void main()
{
int x,qian,bai,shi,ge;
printf("请输入一个四位的整数x:");
scanf("%d",&x);
qian=x/1000;
bai=x%1000/100;
shi=x%100/10;
ge=x%10;
printf("%d\t%d\t%d\t%d\n",qian,bai,shi,ge);
}
09. *****输入一个字符,如果为大写字母或在0到9之间则字符不变输出,其他字符,用*代替输出。
#include
void main()
{
char a,p;
scanf("%c",&a);
p=('A'<=a&&a<='Z'||'0'<=a&&a<='9')?a:'*';
printf("%c\n",p);
}
10. .*****从键盘上输入一个四位整数x,分别获取四位数的千位,百位,十位,个位,组成新的一个四位整数y,它是由原四位数的百位,个位,千位,十位,顺序组成,在计算差值(y-x);
在组成两个三位数,m是由个位,百位,千位顺序组成,n是由千位,个位,百位组成。
#include
void main()
{
int ge,shi,bai,qian,x,y,cha,m,n;
printf("请输入一个四位整数x:");
scanf("%d",&x);
ge=x%10;
shi=x%100/10;
bai=x%1000/100;
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
qian=x/1000;
y=bai*1000+ge*100+qian*10+shi;
printf("%d\n%d\n%d\n%d\n",ge,shi,bai,qian);
m=ge*100+bai*10+qian;
n=qian*100+ge*10+bai;
cha=y-x;
printf("%d\t%d\t%d\t%d\n",y,cha,m,n);
}
11. *****用符号常量编程求解圆的周长和面积,球的体积和表面积,圆锥的体积,圆柱的体积。输出时要有中文文字说明,且小数点后保留两位有效数字。#include
#define PI 3.14
void main()
{
float r,h;
double c,s,V1,S,V2,V3;
printf("请输入半径r和高h:");
scanf("%f%f",&r,&h);
c=2*PI*r;
s=PI*r*r;
V1=4.0/3*PI*r*r*r;
S=4*PI*r*r;
V2=1.0/3*PI*r*r*r;
V3=PI*r*r*h;
printf("圆的周长c=%0.2f\n圆的面积s=%0.2f\n球的体积V1=%0.2f\n球的表面积S=%0.2f\n圆锥的体积V2=%0.2f\n圆柱的体积V3=%0.2f\n",c,s,V1,S,V2,V3);
}
12. *****将两个两位a,b正整数,形成一个四位数,a的十位做四位数的千位,a的个位做四位数的十位,b的个位做四位数的百位。
#include
void main()
{
int x,y,a,b,c,d,p;
printf("请输入两个两位正整数想x,y:\n");
scanf("%d%d",&x,&y);
a=x/10;
b=x%10;
c=y/10;
d=y%10;
p=a*1000+d*100+b*10+c;
printf("%d\n",p);
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
}
13. *****从键盘上输入一个七个字母的单词,字母逆着顺序输出。
#include
void main()
{
char c1,c2,c3,c4,c5,c6,c7;
c1='s';c2='t';c3='u';c4='d';
c5='e';c6='n';c7='t';
putchar(c7);putchar(c6);putchar(c5);putchar(c4);
putchar(c3);putchar(c2);putchar(c1);putchar('\n');
}
14. *****从键盘输入x,求其绝对值。
#include
void main()
{
float x;
printf("请输入一个数x:\n");
scanf("%f",&x);
if(x>=0)
printf("%f\n",x);
if(x<0)
printf("%f\n",-x);
}
15. *****输入字符。如果为a,输出(about).如果为r,输出(retry),如果为f,输出(fasil);
#include
void main()
{
char x;
printf("请输入一个字符x:\n");
scanf("%c",&x);
if(x=='a')
printf("about\n");
if (x=='r')
printf("retry\n");
if (x=='f')
printf("fasil\n");
}
16. *****输入两个实数a,b,u=(r+s)*(r+s) { a
a>b r=b*b-a*a s=a/b+4 }
#include
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
void main()
{
float a,b,u,r,s;
printf("请输入两个实数a,b:\n");
scanf("%f%f",&a,&b);
if(a
{r=a*a-b*b;
s=a/b;}
else
{r=b*b-a*a;
s=a/b+4;}
u=(r+s)*(r+s);
printf("%f\n",u);
}
17. *****求1+1/3+1/5+……+1/n+1的和。
#include
void main()
{
int i,n;
float t=0,s=0;
printf("请输入n的值:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ t=i;
s=s+1/(2*t-1); }
printf("s=%f\n",s);
}
18. *****从键盘上输入12个数按每行3个输出并输出平均值、最大值、最小值
#include
void main()
{int i,j,max,min,a[4][3];
float pin,sum=0;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
min=a[0][0];
for(i=1;i<4;i++)
for(j=1;j<3;j++)
{if(a[i][j]>max)
标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告
max=a[i][j];
if(a[i][j] min=a[i][j];} for(i=0;i<4;i++) for(j=0;j<3;j++) sum+=a[i][j]; for(i=0;i<4;i++) {for(j=0;j<3;j++) {printf("%5d",a[i][j]);} printf("\n");} pin=sum/12; printf("最大值是:%d\n",max); printf("最小值是:%d\n",min); printf("平均值是:%f\n",pin); } 19. *****从键盘上输入n个整数,试编程序,使数组从大到小输出 #include void main() {int i,j,m,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<10-i;j++) if(a[j+1]>a[j]) {m=a[j];a[j]=a[j+1];a[j+1]=m;} for(i=0;i<10;i++) printf("%2d",a[i]); } 20. *****统计全班某门功课的平均分及优良等级 #include void main() {int i,y=0,l=0,z=0,j=0,a[10]; float pin,sum=0; for(i=0;i<10;i++) {scanf("%d",&a[i]); } for(i=0;i<10;i++) sum+=a[i]; for(i=0;i<10;i++) if(a[i]>=90) y++; else if(a[i]>=80) 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 l++; else if(a[i]>=70) z++; else if(a[i]>=60) j++; pin=sum/10; printf("优秀人数是:%d\n",y); printf("良好人数是:%d\n",l); printf("中等人数是:%d\n",z); printf("及格人数是:%d\n",j); printf("平均成绩是:%f\n",pin); } 21. ***** n*n转置矩阵 #include #define n 3 void main() {int a[n][n]={{1,2,3},{4,5,6},{7,8,9}},b[n][n]; int i,j; printf("array a:\n"); for(i=0;i { for(j=0;j {printf("%5d",a[i][j]); b[j][i]=a[i][j];} printf("\n");} printf("array b:\n"); for(i=0;i {for(j=0;j {printf("%5d",b[i][j]);} printf("\n");} } 22. *****输出3*3矩阵的主、次对角线及上三角 #include void main() {int i,j,a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) {for(j=0;j<3;j++) {printf("%5d",a[i][j]);} printf("\n");} for(i=0;i<3;i++) {for(j=0;j<3;j++) {if(i+j<=2) 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 printf("%5d",a[i][j]); else printf(" ");} //五个空格// printf("\n");} for(i=0;i<3;i++) {for(j=0;j<3;j++) {if(i==j) printf("%5d",a[i][j]); else printf(" ");} //五个空格// printf("\n");} for(i=0;i<3;i++) {for(j=0;j<3;j++) {if(i+j==2) printf("%5d",a[i][j]); else printf(" ");} //五个空格// printf("\n");} } 23. *****菱形 #include #define n 3 void main() {int i,j; for(i=1;i {for(j=1;j {if(j<=n-i) printf(" "); else printf("%2d",j+i-n);} for(j=n;j>=1;j--) {if(j<=n-i) printf(" "); else printf("%2d",j+i-n);} printf("\n");} for(i=n;i>=1;i--) {for(j=1;j {if(j<=n-i) printf(" "); else printf("%2d",j+i-n);} for(j=n;j>=1;j--) {if(j<=n-i) printf(" "); else printf("%2d",j+i-n);} printf("\n");} } 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 24. *****用and替换the并统计the的个数 #include #include void main() {int i=0,sum=0; char a[81],c; gets(a); for(i=0;i<81;i++) {if(i>3) {if(a[i]==' '&&a[i-1]=='e'&&a[i-2]=='h'&&a[i-3]=='t'&&a[i-4]==' ') {a[i-3]='a';a[i-2]='n';a[i-1]='d';sum++;}} else {if(a[i-1]=='e'&&a[i-2]=='h'&&a[i-3]=='t') {a[i-3]='a';a[i-2]='n';a[i-1]='d';sum++;}}} printf("%s\n",a); printf("'the'的个数有%d个\n",sum); } 25. *****用自定义函数求四个整数中的最大数。 程序如下: #include int max(int x,int y) { int z; z=(x>y)?x:y; return(z); } void main() { int a,b,c,d,m; printf("请输入四个数:\n"); scanf("%d %d %d %d",&a,&b,&c,&d); m=max(max(a,b),max(c,d)); printf("四个数中的最大数是:%d\n",m); } 26. *****用swap函数实现两个数的交换,要求在主函数中输入,输出交换结 果。 程序如下: #include void swap(float x,float y) { float temp; temp=x;x=y;y=temp; 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 printf("交换后的结果:\nx=%f y=%f\n",x,y); } void main() { int a,b; printf("请输入两个数:\n"); scanf("%d %d",&a,&b); swap(a,b); } 27. *****编写函数输入一个四位数,判断是否满足以下条件:是完全平方 数,1、3位数之和是10, 2、4位之积是12。 程序如下: #include #include void siweishu(int x) { int a,b,c,d,m; m=sqrt(x); a=x/1000; b=(x-a*1000)/100; c=(x-a*1000-b*100)/10; d=x-a*1000-b*100-c*10; if(b+d==10&&a*c==12&&m*m==x) printf("YES"); else printf("NO"); } void main() { int m; printf("请输入一个四位数"); scanf("%d",&m); siweishu(m); } 28. *****从主函数输入一个数,判断是否是素数。 程序如下: #include void sushu(int x) { int i,flag=1; for(i=2;i 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 { if(x%i==0) {flag=0;break;} } if(flag) printf("是素数!\n"); else printf("不是素数!\n"); } void main() { int a; printf("请输入一个数:\n"); scanf("%d",&a); sushu(a); } 29.*****编写两个函数,求三个数的最大公约数、最小公倍数。 程序如下: #include int gongyue(int m,int n) { int r; if(m {r=m;m=n;n=r;} r=m%n; while(r!=0) {m=n;n=r;r=m%n;} return(n); } int gongbei(int m,int n) { int r,p;p=m*n; if(m {r=m;m=n;n=r;} r=m%n; while(r!=0) {m=n;n=r;r=m%n;} return(p/n); } void main() { int a,b,c,zdgy,zxgb; printf("请输入三个数:\n"); 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 scanf("%d %d %d",&a,&b,&c); zdgy=gongyue(a,gongyue(b,c)); zxgb=gongbei(a,gongbei(b,c)); printf("最大公约数为:%d\n",zdgy); printf("最小公倍数为:%d\n",zxgb); } ???30. *****编写5个函数分别用来求两个整数的加减乘除及余数。 制作一个菜单,列出这五种运算,每一种运算前面有数字序号,以 便让用户能够用输入数字的方法选择要进行的运算。 程序如下: #include void add() { int x,y,z; scanf(“%d %d”,&x,&y); z=x+y; printf(“两个数的和是:%d”,z); } void sub() { int x,y,z; scanf(“%d %d”,&x,&y); z=x-y; printf(“两个数的差是:%d”,z); } void mul() { int x,y,z; scanf(“%d %d”,&x,&y); z=x*y; printf(“两个数的积是:%d”,z); } void div() { int x,y,z; scanf(“%d %d”,&x,&y); z=x/y; printf(“两个数的商是:%d”,z); } void rem() { int x,y,z; 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 scanf(“%d %d”,&x,&y); z=x%y; printf(“两个数的余数是:%d”,z); } void main() { char c; while(1) { printf(“***********************\n”); printf(“请选择一种运算\n”); printf(“***********************\n”); printf(“ 1.加法运算\n”); printf(“ 2.减法运算\n”); printf(“ 3.乘法运算\n”); printf(“ 4.除法运算\n”); printf(“ 5.求余运算\n”); printf(“ 6.结束\n”); do { printf(“请输入选择的序号1—6:”); c=getchar();getchar(); } while(c<’1’||c>’6’); switch(c) { case’1’:add();break; case’2’:sub();break; case’3’:mul();break; case’4’:div();break; case’5’:rem();break; case’6’:return; } } } 31. ***** 输出1900——2000中闰年的年份。 程序如下: #include void main() { int i; for(i=1900;i<=2000;i++) if(i%4==0&&i%100!=0||i%400==0) 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 printf("%d\t",i); } 32. *****求两个正整数的最大公约数和最小公倍数。 程序如下: #include void main() { int m,n,p,q,r; printf("请输入两个整数:\n"); scanf("%d %d",&m,&n); p=m*n; if(m {r=m;m=n;n=r;} r=m%n; while(r!=0) {m=n;n=r;r=m%n;} q=p/n; printf("最大公约数:%d\n",n); printf("最小公倍数:%d\n",q); } 33.***** 输出各位数字的立方和等于216的三位数。 程序如下: #include void main() { int a,b,c,s,i; for(i=100;i<=999;i++) {a=i/100;b=(i-a*100)/10;c=i-a*100-b*100; s=a*a*a+b*b*b+c*c*c; if(s==216) printf("%d\n",i);} } 34.***** 输入一行字符,统计英文字母、空格、数字各多少个。 程序如下: #include void main() { int m=0,n=0,p=0; char c; c=getchar(); while(c!='\n') {if(c==' ') m++; 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 else if('A' n++; else if('0' p++; c=getchar();} printf("空格个数%d\n",m); printf("英文字母%d\n",n); printf("数字个数%d\n",p); } 35.*****求200——300之间满足这样条件的数:各位数之和是12,各位数之积是42. #include void main() { int a,b,c,i; for(i=200;i<=300;i++) {a=i/100; b=(i-a*100)/10; c=i-a*100-b*10; if((a+b+c==12)&&a*b*c==42) printf("%d\n",i); } } 36. *****有1020个西瓜,每天卖前一天剩的一半多两个,问几天卖完。 #include void main() { int i,n; for(n=0,i=1020;i>0;n++) i=i/2-2; printf("卖了%d天\n",n); } 37.***** 某次比赛,7个评委打分,去掉最低分和最高分,求平均分。 #include void main() { float a,x,i,max,min,average,sum=0; scanf("%f",&x); a=max=min=x; for(i=2;i<=7;i++) 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 { scanf("%f",&x); sum+=x; if(max if(min>x)min=x; } average=(sum+a-max-min)/5; printf("平均分:%f\n",average); } 38.***** 输入一串字符,将所有的数字替换成“*”。 #include #include void tihuan(char a[]) { int i,len; len=strlen(a); for(i=0;i { if(a[i]>='0'&&a[i]<='9') a[i]='*'; } } void main() { char s[80]; gets(s); tihuan(s); puts(s); } 39.***** 编写递归函数求阶乘,并求阶乘和。 #include long jc(int n) { if(n==0||n==1) return 1; else return n*jc(n-1); } void main() { int n,i;long sum=0; 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 scanf("%d",&n); for(i=1;i<=n;i++) sum+=jc(i); printf("%ld\n",sum); } 40. *****编一函数,将一个3*3的矩阵主对角线和次对角线元素互换。 #include #define N 3 int a[N][N]; void main() { void convert (int a[][3]); int i,j; printf("请输入矩阵\n"); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); printf("原来矩阵\n"); for(i=0;i {for(j=0;j printf("%5d",a[i][j]); printf("\n"); } convert(a); printf("主次对角线互换\n"); for(i=0;i {for(j=0;j printf("%5d",a[i][j]); printf("\n"); } } void convert(int a[][3]) {int i,j,t,m; {t=a[0][0]; a[0][0]=a[0][2]; a[0][2]=t;} {m=a[2][0]; a[2][0]=a[2][2]; a[2][2]=m;} } 41. *****编一函数,求某班某门课的平均成绩,最高分,最低分,统计超过平均值的人数,(使用全局变量)。 #include 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 int max,min,y=0,N; float ping; void main() {printf("请输入班级人数:"); scanf("%d",&N); void fun(); fun(); printf("平均分是:%f\n",ping); printf("最高分是:%d\n",max); printf("最低分是:%d",min); printf("超过平均分的有:%d\n",y); } void fun() {int i,a[80]; float sum=0; for(i=0;i {scanf("%d",&a[i]); sum+=a[i];} ping=sum/N; max=a[0],min=a[0]; for(i=0;i {if(a[i] min=a[i]; if(a[i]>max) max=a[i]; if(a[i]>ping) y++;} } 42.*****编写几个函数, 1)输入5个学生的姓名,学号,成绩。 2)按学生的成绩高低顺序排序,姓名,学号也要调整。 3)要求输入一个学生的学号,给出该学生的成绩以及等级。 #include #include char xm[5][10],xh[5][10],cj[5][10]; int i,j; void main() {void px(); void cx(); for(i=0;i<5;i++) {gets(xm[i]); gets(xh[i]); 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 gets(cj[i]);} px(); cx(); } void px() {char a[10],b[10],c[10]; for(i=0;i<4;i++) {for(j=i+1;j<5;j++) {if(strcmp(cj[j],cj[i])>0) {strcpy(a,xm[i]); strcpy(xm[i],xm[j]); strcpy(xm[j],a); strcpy(b,xh[i]); strcpy(xh[i],xh[j]); strcpy(xh[j],b); strcpy(c,cj[i]); strcpy(cj[i],cj[j]); strcpy(cj[j],c);}}} for(i=0;i<5;i++) printf("%s %s %s\n",xm[i],xh[i],cj[i]); } void cx() { char x[10],a[2]={'9','0'},b[2]={'8','0'},c[2]={'7','0'},d[2]={'6','0'}; printf("请输入学号:"); gets(x); for(i=0;i<5;i++) {if(strcmp(x,xh[i])==0) {printf("%s\n",xm[i]); if(strcmp(cj[i],a)>=0) printf("成绩等级是:优秀\n"); else if(strcmp(cj[i],b)>=0) printf("成绩等级是:良好\n"); else if(strcmp(cj[i],c)>=0) printf("成绩等级是:中等\n"); else if(strcmp(cj[i],d)>=0) printf("成绩等级是:及格\n"); else printf("成绩等级是:不及格\n");}} } 43.*****计算阶层的和。S=1!—2!+3!。。。。。n!. #include 标注:因题目繁多,可能不全,如有遗漏或错误,请告诉我,我会告 Q308.(10分)第5章实验2:体型判断。 医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是: t = w /(h*h) 其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型: 当t<18 时,为低体重; 当18≤t<25 时,为正常体重; 当25≤t<27 时,为超重体重; 当t≥27 时,为肥胖。 ****输入提示信息格式:"Please enter h,w:\n" ****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入) ****输出数据格式要求: 当t<18 时,输出:"Lower weight!\n" 当18≤t<25 时,输出:"Standard weight!\n" 当25≤t<27 时,输出:"Higher weight!\n" 当t≥27 时,输出:"Too fat!\n" #include c语言实验答案 //1.1编写一程序,在屏幕上输出如下内容:// X | X | X //---+---+--- // | | //---+---+--- // 0 | 0 | 0 #include computes their sum,difference,produc t and quotient. //The first number:<第一个整数在此输入> //The second number:<第二个整数在此输入> //Results as follows: //<第一个整数>+<第二个整数>=<和> //<第一个整数>-<第二个整数>=<差> //<第一个整数>*<第二个整数>=<积> //<第一个整数>/<第二个整数>=<商> #include 《C语言程序设计》 实 验 手 册 《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。 三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include<> main() { int a,b,c,d; float x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 实验3 顺序结构编程 (2) 实验4 if分支结构编程 (3) 实验5 if分支结构和switch分支结构编程 (5) 实验6 分支结构嵌套和for循环编程练习 (9) 实验7和while和do-while练习 (12) 实验8 for循环嵌套练习 (15) 实验9 函数设计编程练习 (18) 实验10函数设计编程练习 (20) 实验11 数组编程练习 (23) 实验3 顺序结构编程 实验题目1 输入两个整型数x,y,求x,y之和、差、积、x/y的商和余数 提示: (1)定义整形变量变量int x,y; (2)和、差、积、商和求余数的运算符分别是+、-、*、/、% (3)输入两个整型数可以调用scanf()函数scanf("%d %d", &x,&y); 实验题目2 按下列要求编写程序,对变量a,b,c进行unsigned int型说明,将65赋给a,66赋给b,67赋给c,对变量a,b,c用%c格式输出显示 提示: (1)定义变量unsigned int a ,b,c; (2)字符型数据输出的格式控制符是%c (3)C语言中的赋值符号是=“65赋给a”表示为a = 65; 实验题目3 输入三角形的三条边的边长,求三角形的面积 从键盘输入三个整数,判断能否构成三角形的三边,如果能就计算输出三角形面积,按照下图给出的公式计算三角形的面积: s=(a+b+c)/2 a,b,c代表三角形的三条边 提示1、开根号的数学库函数是sqrt,例如y=sqrt(x),表示求变量x开根号,并把结果赋值给变量y。 2、调用数学库函数必须用如下命令#include 1.数据类型 a.输入一个小数点后有多位数字的小数,实现将其保留三位小数,并输出;, #include<> main() {double b,d; printf("请输入一个小数:"); scanf("%lf",&b); printf("输出原来的数:%f\n",b); b*=1000; b+=; b=(int)b; d=b/1000; printf("输出现在的数:%.3lf\n0",d); } b.输入一个4位整数,求其得各位数字的平方和;(1234 1+4+9+16=30) #include<> main() {int n,sum=0,i,t; printf("请输入一个四位整数:\n"); scanf("%d",&n); for(i=0;i<4;i++) {t=n%10; n/=10; sum+=t*t; } printf("%d\n",sum); } c.定义字符型变量ch,写出六种给ch赋值字符’A’的代码; #include<> main() {char ch; ch='A'; ch=65; ch=0x41; ch=0101; ch='\101'; ch='\x41'; } d.编写程序输出26组大小写字母;(AaBbCc……….XxYyZz) #include<> main() {int i; for(i=65;i<91;i++) {printf("%c",i); printf("%c",i+32); } printf("\n"); } e.定义浮点型变量f1、f2,为f1赋值10的-30次,为f2赋值10的30次 #include<> main() { double f1,f2; f1=10e-30; 一1 #include #include 一5 #include -前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include { int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); } C语言实验题目及答案 1、实验项目一 C程序的编辑、编译、连接和运行 题目:编写程序,要求屏幕上显示如下信息: *********************** This is a C program . *********************** 程序: #include } 2、#include "stdafx.h" #include "stdio.h" #include "math.h" int main(int argc, char* argv[]) { double x; printf("x="); scanf("%lf",&x); printf("%lf\n",sqrt(x)); return 0; } C语言实验报告参考答 案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】 长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include <> main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include<> main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include { int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include C语言实验参考答案 实验一 5、输入并运行自已编写的程序(教材第一章P14 三编程题)。 实验二 1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。 #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\n”,he,cha,ji); printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver); } 实验三 1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。例如,输入整数5,程序运行后输出字符5。 #include 2011秋季 1.学生成绩管理系统 功能要求: (1)可以从文件导入或录入多名学生的多门课程的学习成绩;(2)完成按姓名查找学生记录,并显示; (3)排序功能: 按学生平均成绩进行排序; (4)插入功能: 按平均成绩高低插入一条学生记录; (5)要求使用结构体,录入结果存放到文件; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 2.个人通讯录 功能需求: (1)可以对多名人物的信息进行输入; (2)显示所有的记录信息,若无记录,则给出提示信息;(3)可以按姓名查询该记录的有关信息; (4)可以按姓名对任意一种记录信息进行删除; (5)可以任意修改记录信息 (6)通过文件储存所输入的记录; (7)可以通过一个文件读入已有的通信录记录; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 3.火车订票系统 功能要求: (1)列车原始信息从文件导入或从控制台录入,包括车次、票数等; (2)可以按车次进行列车信息查询; (3)客户对某一天订票,订票成功后,当日的票数需要被更改; (4)客户退票; (5)要求使用结构体; 显示要求: 程序输出菜单,用户按照提示操作,最终得到操作结果。 4、万年历系统 功能要求: (1)从2000年开始,用户输入年份与月份,将显示出该年该月份的日历,对应的星期。 (2)注意闰年情况 显示格式要求如下: (1)第一行显示月份(中英文都可以) (2)下一行显示星期,从周日到周六,中英文都可以 (3)下一行开始显示日期从1号开始,并按其是星期几实际情况与上面的星期数垂直对齐 (4)程序输出菜单,用户按照提示操作,最终得到计算结果。 5、积分的实现 功能要求: (1)使用复合梯形公式求解函数f=1+x 2、f=log(1+x)以及f=1/(1+x2)三个函数的定积分。 (2)积分上下限及步长由C语言函数参数传递。 (3)用户输入函数编号,上下限和步长,程序输入结果。 显示要求: 程序输出菜单,用户按照提示操作,最终得到计算结果。 6、矩阵的运算 功能要求: 使用三个C语言函数分别实现两个矩阵的加、减和相乘功能。结果存放在第三个矩阵中。 并编写程序验证三个函数功能。 每个函数的参数可选择 (1): 二位数组名,行数,列数 (2)指针变量名,行数,列数 返回值: 用户自定义的运算状态,正常或其他异常情况。 显示要求: %c 字符形式输出, %d 整数形式输出, 实验一 自测练习1 程序代码 #include 运行结果 自测练习2 程序代码 #include while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); } 运行结果 自测练习3 程序代码 #include p=1; printf("Enter n:"); scanf("%d",&n); for (i=1; i<=n; i++) p=p*i; printf(" p=%ld\n", p); } 运行结果 自测练习4 程序代码 #include"stdio.h" int max(int x,int y) {int z; if (x>y) z=x;else z=y; return(z); } void main() {int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); } 运行结果 自测练习5 程序代码 #include"stdio.h" void main() {int x,y; for(x=0;x<=25;x++) for(y=0;y<=50;y++) if(4*x+y*2==100) printf("兔=%d,鸡=%\n",x,y); } 运行结果 习题与上机实验总的目的和要求 目的: 实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。C 程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。 学会独立上机调试程序。也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。对程序设计来说,要求会编写程序并上机调试通过。因此调式程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。调式程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。这样的学习才会有真正的收获。实验目的可归纳如下: 1.验证自己已建立起来的概念或所编写的程序是否正确; 2.加深对课堂所学内容的理解和语法规则的记忆; 3.理解和掌握运用计算机高级语言进行编程的思想方法; 4.掌握常用算法的设计与应用实现; 5.熟悉UNIX等程序开发环境,掌握C程序常用的调试手段; 6.学会上机调试程序的方法,不断积累调试经验,提高排错能力; 7.使自己具有独立的应用编程和熟练的程序调试能力。 要求: 1.做好每一次上机前的准备以提高上机效率: ①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来; ②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序 所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。 ③将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。 n"); printf("The first number:"); scanf("%d",&a); printf("The second number"); scanf("%d",&b); printf("Results as follows:\n"); printf("%d+%d=%d\n",a,b,a+b); printf("%d-%d=%d\n",a,b,a-b); printf("%d*%d=%d\n",a,b,a*b); printf("%d+%d=%f\n",a,b,*a/b); .+1/n!的值。 #include<> void main() { int n,p=1,i; float sum=0; printf("please input n:"); scanf("%d",&n); for(i=1;i<=n;i++) { p=p*i; sum+=p; } printf("sum=%f\n",sum); } .14 p=j; switch(p) umber); for(j=0;j<3;j++) printf("%",stu[i].score[j]); printf(" ave=%.2f\n",average(stu[i]));umber); printf("score:"); for(j=0;j<3;j++) scanf("%f",&(stu[i].score[j])); } } void main() { struct student stu[3]; //定义结构体数组 input(stu); //数组名做参数,传递的是地址 output(stu); } //静态链表的建立,有三个学生,包括学号(sno char(8)),姓名(sname char(20)),分数(grade float[]), //定义结构体类型数组存学生信息,使用链表所有学生,实现链表的输入输出。 //静态的书上有原题目,我写成动态的了,用子函数的方式实现 #include <> #include<> #include <> struct stu //定义全局结构体 { char sno[8]; char sname[20]; float grade; struct stu *next; } ; //////////////////////////////////////////////////////// void main( ) { struct stu *creat(struct stu *); void print(struct stu*); struct stu *head; head=NULL; head=creat(head); print(head); } ///////////////////////////////////////////////////////// struct stu *creat(struct stu*head) //建立链表 { struct stu *p,*q; q=(struct stu*)malloc(sizeof(struct stu)); //分配空间 printf("please input sno:"); scanf("%s",q->sno); printf("please input sname:"); scanf("%s",q->sname); 目录 实验1 输入输出 (2) 实验2 选择语句 (4) 实验3 循环语句 (5) 实验4 函数 (6) 实验5 指针 (8) 实验6 数组 (9) 实验7 结构体 (10) 实验1 输入输出 要求掌握: 1、VC++平台的使用; 2、C源程序的建立、保存、编译和运行; 3、变量的定义、赋值和运算; 4、printf函数的使用; 5、scanf函数的使用; 6、int、long、float、double、unsigned的含义; 7、关键字、预定义标识符和用户标识符的区别; 8、自加自减运算符的使用。 完成下列题目: 1. 键盘输入与屏幕输出练习 问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的。 #include //1.1编写一程序,在屏幕上输出如下内容:// X | X | X //---+---+--- // | | //---+---+--- // 0 | 0 | 0 #include 《C程序设计》实验报告 学期: 教师姓名: 教研室: 实验1 熟悉C语言程序的运行环境,掌握数据描述 1.1 实验目的 1.了解在开发环境中如何编辑、编译、连接和运行一个C语言程序。 2.通过运行简单的C语言程序,初步了解C语言程序的结构特点。 3.掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。 1.2 实验预习 1.熟悉Visual C++的启动和退出及Visual C++中的编辑、编译、连接和运行命令。 2.了解下列命令及函数:include哈工大C语言实验题
c语言实验答案
C语言实验报告参考答案
C语言实验报告参考答案原
c语言实验题目
c语言实验习题及答案详解
C语言实验答案
C语言程序设计实验-答案
C语言课后实验设计题目及答案
C语言实验报告参考答案完整版
C语言-数组-实验题目及答案
C语言实验参考答案
C语言实训题目
c语言上机实验完整答案
C语言习题与实验
c语言实验答案
C语言实验课题目
c语言实验答案
(最新版)C语言实验报告(答案)