C语言上机实验答案.docx
《C语言上机实验答案.docx》由会员分享,可在线阅读,更多相关《C语言上机实验答案.docx(40页珍藏版)》请在冰豆网上搜索。
C语言上机实验答案
实验一上机操作初步(2学时)
1、输出入下信息:
(实验指导书P79)
*************************
VeryGood
*************************
2、计算两个整数的和与积。
(实验指导书P81)
3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
(书P3)
4、在屏幕上显示一个文字菜单模样的图案:
=================================
1输入数据2修改数据
3查询数据4打印数据
=================================
5、从键盘上输入两个整数,交换这两个整数。
1、#include
voidmain()
{printf(“********************\n”);
printf(“VeryGood\n”);
printf(“********************\n”);
}
2、#include
voidmain()
{inta,b,c,d;
printf(“Pleaseentera,b:
”);
scanf(“%d,%d”,&a,&b);
c=a+b;d=a*b;
printf(“%d+%d=%d\n”,a,b,c);
printf(“%d*%d=%d\n”,a,b,d);
}
3、#include
#include
voidmain()
{doublex,s;
printf(“Pleaseinputvalueofx:
”);
scanf(“%lf”,&x);
s=cos(x);
printf(“cos(%lf)=%lf\n”,x,s);
}
4、#include
voidmain()
{printf(“==================================\n”);
printf(“1输入数据2修改数据\n”);
printf(“3查询数据4打印数据\n”);
printf(“===================================\n”);
}
5、#include
voidmain()
{intx,y,t;
printf(“Pleaseenterxandy:
”);
scanf(“%d%d”,&x,&y);
t=x;x=y;y=t;
printf(“Afterswap:
x=%d,y=%d\n”,x,y);
}
实验二简单的C程序设计(4学时)
1、输入r1、r2,求出圆形垫片面积。
(实验指导书P84)
2、输入华氏温度h,输出摄氏温度c。
(实验指导书P85)
3、从键盘输入一个3位整数,将输出该数的逆序数。
(实验指导书P89)
4、输入并运行以下程序,分析运行结果。
#include
voidmain()
{inti,j;
i=8;j=10;
printf(“%d,%d\n”,++i,++j);
i=8;j=10;
printf(“%d,%d\n”,i++,j++);
i=8;j=10;
printf(“%d,%d\n”,++i,i);
i=8;j=10;
printf(“%d,%d\n”,i++,i);
}
5、输入三角形三条边的边长,求三角形的面积。
(书P55)
6、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(书P55)
1、#include
#definePI3.14
voidmain()
{floatr1,r2;
doubles1,s2,s;
printf(“Pleaseenterr1,r2:
\n”);
scanf(“%f%f”,&r1,&r2);
s2=r2*r2*PI;s1=r1*r1*PI;s=s2-s1;
printf(“s=%lf\n”,s);
}
2、#include
voidmain()
{floath,c;
printf(“请输入华氏温度:
”);
scanf(“%f”,&h);
c=5.0/9*(h-32);
printf(“\n摄氏温度:
%f\n”,c);
}
3、#include
voidmain()
{inta,b,c,x,y;
printf(“请输入一个3位的正整数:
\n”);
scanf(“%d”,&x);
a=x/100;/*求x的百位数*/
b=(x-a*100)/10;/*求x的十位数*/
c=x-a*100-b*10;/*求x的个位数*/
y=c*100+b*10+a;
printf(“%d:
%d\n”,x,y);
}
4、运行结果:
9,11
8,10
9,8
8,8
5、#include
#include
voidmain()
{inta,b,c;
doublearea,s;
printf(“Pleaseentera,b,c:
”);
scanf(“%d,%d,%d”,&a,&b,&c);
s=(double)(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%.2lf\n”,area);
}
6、#include
voidmain()
{chara,b,c;
floatx;
printf(“Pleaseenter:
\n”);
a=getchar();b=getchar();c=getchar();
x=(a+b+c)/3.0;
printf(“(a+b+c)/3=%.2f\n”,x);
}
实验三选择结构程序设计(2学时)
1、读入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是立方体还是长方体。
(实验指导书P104)
2、输入某一年月,输出该月的天数。
(实验指导书P105)
3、有一函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)编写程序,输入x值,输出y值。
4、从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。
(书P94)
5、输入4个整数,要求按由小到大的顺序输出。
1、#include
voidmain()
{intl,w,h;
printf(“请输入箱子的长、宽、高:
\n”);
scanf(“%d%d%d”,&l,&w,&h);
if(l==w&&w==h)/*如果长、宽、高相等,则为立方体*/
printf(“该箱子是立方体。
”);
else
printf(“该箱子是长方体。
”);
}
2、#include
voidmain()
{intyear,month,days;
printf(“Pleaseenteryearandmonth:
\n”);
switch(month)
{case2:
if(year%4==0&&year%100!
=0||year%400==0)
days=29;
else
days=28;
break;
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;
}
printf(“%d年%d月有%d天\n”,year,month,days);
}
3、#include
voidmain()
{floatx,y;
printf(“Pleaseinputx:
\n”);
scanf(“%f”,&x);
if(x<1)
y=x;
elseif(x<10)
y=2*x-1;
else
y=3*x-11;
printf(“y=%f\n”,y);
}
4、#include
voidmain()
{charx;
printf(“Enterachar:
\n”);
x=getchar();
if(x>=‘a’&&x<=‘z’)
x=x-32;
elseif(x>=‘A’&&x<=‘Z’)
x=x+32;
putchar(x);
}
5、#include
voidmain()
{inta,b,c,d,t;
printf(“请输入4个整数:
”);
scanf(“%d%d%d%d”,&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf(“排序结果如下:
\n”);
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
实验四循环结构程序设计(4学时)
1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
(实验指导书P117)
2、求所有的水仙花数。
水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身。
(实验指导书P118)
3、判断输入的某个数是否为素数。
若是,输出YES,否则输出NO。
(书P123)
4、计算π的近似值。
公式如下:
π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小于10-6为止。
(书P123)
5、计算s=1!
+2!
+……+20!
的值并输出。
6、输入10个整数,统计并输出其中正数、负数和零的个数。
1、#include
voidmain()
{floatx,max,min;
printf(“Pleaseinputscores:
”);
scanf(“%f”,&x);
max=min=x;
while(x>=0)
{if(x>max)max=x;
if(xscanf(“%f”,&x);
}
printf(“\nmax=%f\nmin=%f\n”,max,min);
}
2、#include
voidmain()
{intx,y,z;
intk=100;
while(k<=999)
{x=k/100;
y=(k-x*100)/10;
z=k-x*100-y*10;
if(k==x*x*x+y*y*y+z*z*z)
printf(“%d\n”,k);
k++;
}
}
3、#include
#include
voidmain()
{inti,x,yes,a;
printf(“Enterintegernumber:
”);
scanf(“%d”,&x);
yes=1;
i=2;
a=(int)sqrt((double)x);
while(yes&&i<=a)
{if(x%i==0)yes=0;
i++;
}
printf(“%d”,x);
if(yes)
printf(“YES\n”);
else
printf(“NO\n”);
}
4、#include
#include
voidmain()
{floatpi,t,n;
intsign=1;
pi=0;n=1;t=1;
while(fabs(t)>=1e-6)
{t=sign/n;
pi+=t;
n+=2;
sign=-sign;
}
pi=pi*4;
printf(“pi=%f\n”,pi);
}
5、#include
voidmain()
{floats=0,t=1;
intn;
for(n=1;n<=20;n++)
{t=t*n;
s=s+t;
}
printf(“1!
+2!
+……+20!
=%f\n”,s);
}
6、#include
voidmain()
{intx,i,a1=0,b1=0,c1=0;
for(i=1;i<=10;i++)
{printf(“\n请输入第%d个数:
”,i);
scanf(“%d”,&x);
if(x>0)a1++;
elseif(x<0)b1++;
elsec1++;
}
printf(“整数有%d个,负数有%d个,零有%d个\n”,a1,b1,c1);
}
实验五综合实验1:
结构化程序设计(2学时)
1、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。
设:
90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
(书P93)
2、百马百担问题。
(实验指导书P121)
3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
4、输出如下图案:
*
***
*****
*******
*****
***
*
1、#include
voidmain()
{intscore,temp,logic;
chargrade;
logic=1;
while(logic)
{printf(“Inputscore:
”);
scanf(“%d”,&score);
if(score>100||score<0)
printf(“\nError,Inputagain!
\n”);
else
logic=0;
printf(“\n”);
}
if(score==100)
temp=9;
else
temp=score/10;
switch(temp)
{case9:
grade=‘A’;break;
case8:
grade=‘B’;break;
case7:
grade=‘C’;break;
case6:
grade=‘D’;break;
default:
grade=‘E’;
}
printf(“Scoreis%d,thegradeis%c.\n”,score,grade);
}
2、#include
voidmain()
{intm,n,k;
intsum=0;
printf(“各种驮法如下:
\n”);
for(m=1;m<=100;m++)
for(n=1;n<=100-m;n++)
{k=100-m-n;
if(k%2==0&&m*3+n*2+k/2==100)
{printf(“大马%3d匹;中马%3d匹;小马%3d匹.\n”,m,n,k);
sum++;
}
}
printf(“共有%d种驮法.\n”,sum);
}
3、#include
voidmain()
{charc;
intletter=0,space=0,digit=0,other=0;
printf(“请输入一行字符:
\n”);
while((c=getchar())!
=‘\n’)
{if(c>=‘a’&&c<=‘z’||c>=‘A’&&c<=‘Z’)
letter++;
elseif(c==‘’)
space++;
elseif(c>=‘0’&&c<=‘9’)
digit++;
else
other++;
}
printf(“字母数=%d,空格数=%d\n”,letter,space);
printf(“数字数=%d,其他字符数=%d\n”,digit,other);
}
4、#include
voidmain()
{inti,j,k;
for(i=0;i<=3;i++)
{for(j=0;j<=2-i;j++)printf(“”);
for(k=0;k<=2*i;k++)printf(“*”);
printf(“\n”);
}
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)printf(“”);
for(k=0;k<=4-2*i;k++)printf(“*”);
printf(“\n”);
}
}
实验六函数程序设计(4学时)
1、从键盘输入三角形的3条边,调用三角形面积函数求出其面积,并输出结果。
(实验指导书P130)
2、输入整数n,输出高度为n的等边三角形。
当n=5时的等边三角形如下:
(实验指导书P134)
*
***
*****
*******
*********
3、输入并运行以下程序,分析运行结果。
#include
inta=5;
intb=7;
voidmain()
{inta=4,b=5,c;
c=plus(a,b);
printf(“a+b=%d\n”,c);
}
plus(intx,inty)
{intz;
z=x+y;
return(z);
}
4、求500以内的所有亲密数对。
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数对。
(实验指导书P136)
5、输入并运行以下程序,分析运行结果。
#include
intd=1;
fun(intp)
{staticintd=5;
d+=p;
printf(“%d”,d);
return(d);
}
voidmain()
{inta=3;
printf(“%d”,fun(a+fun(d)));
}
6、设计一个函数,输出整数n的所有素数因子。
(书P157)
1、#include
#include
floatarea(floata,floatb,floatc)
{floats,p,area;
s=(a+b+c)/2;
p=s*(s-a)*(s-b)*(s-c);
area=sqrt(p);
return(area);
}
voidmain()
{floatx,y,z,ts;
scanf(“%f%f%f”,&x,&y,&z);
if(x>0&&y>0&&z>0&&x+y>z&&y+z>x&&x+z>y)
{ts=area(x,y,z);
printf(“area=%f\n”,ts);
}
else
printf(“dataerror!
\n”);
}
2、#include
voidtrangle(intn)
{inti,j;
for(i=0;i{for(j=0;j<=n-i;j++)putchar(‘’);/*打印每一行的空格*/
for(j=0;j<=2*i;j++)putchar(‘*’);/*打印每一行的*号*/
putchar(‘\n’);
}
}
voidmain()
{intn;
printf(“Pleaseentern:
”);
scanf(“%d”,&n);
printf(“\n”);
trangle(n);
}
3、a+b=9
4、#include
intfacsum(intm)
{intsum=1,f=2;
while(f<=m/2)
{if(m%f==0)sum=sum+f;
f++;
}
returnsum;
}
voidmain()
{intm=3,n,k;
while(m<=500)
{n=facsum(m);
k=facsum(n);
if(m==k&&m<=n)
printf(“%d,%d\n”,m,n);
m++;
}
}
5、61515
6、#include
intprime(intn)
{inti,flag=1;
for(i=2;i<=n/2;i++)
if(n%i==0)
{flag=0;
retunflag;
}
returnflag;
}
voidfactor(intn)
{inti;
i=2;
while(i<=n)
{if((n%i==0)&&prime(i))
{printf(“%d”,i);
n=n/i;
continue;
}
i++;
}
}
voidmain()
{intnum;
printf(“Enternum:
”);
scanf(“%d”,&num);
printf(“primefactoris:
\n”);
factor(num);
}
实验七数组程序设计(4学时)
1、下列程序的功能是:
输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include
voidmain()
{inti,n,a[10],avg;
for(i=0;iscanf(“%d”,a[i]);
for(i=0;i{if(i%3==0)printf(“\n”);
printf(“%d”,a[i]);
}
for(i=0;iavg+=a[i];
printf(“\navg=%f\n”,avg);
}
2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
(实验指导书P147)
3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。
(实验指导书P153)
4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。
5、给定某年某月某日,将其转换成这一年的第几天并输出。
(实验指导书P152)
6、编写