C语言实验一到实验八答案.docx
《C语言实验一到实验八答案.docx》由会员分享,可在线阅读,更多相关《C语言实验一到实验八答案.docx(25页珍藏版)》请在冰豆网上搜索。
C语言实验一到实验八答案
实验一:
1、录入如下C源程序:
main()
{printf("ThisisaCProgram\n")
printf("Iamastudent\n");
}
main()
{printf("ThisisaCProgram\n");
printf("Iamastudent\n");
}
2、编写一个C程序,第一行显示你的名字,第二行显示你所在的街道地址,第三行显示你所在的城市和邮政编码。
#include
intmain()
{printf("JoeSmith");
printf("\n99SomewhereStreet");
printf("\nNonesuch,N.J.,07030");
return0;
}
3、编写一个C程序,输出以下信息:
****************************
Hello,World!
****************************
#include
main()
{
printf("***********************\n");
printf("Hello,World!
\n");
printf("***********************\n");
}
4、编程序,输出如下图形:
**
****
******
********
#include
main()
{
printf("**\n");
printf("****\n");
printf("******\n");
printf("********\n");
}
5、遵循良好的编程习惯重新编写下列程序
#include
intmain(
){
printf
(
“Thetimehascome”
);}
#include
intmain()
{printf("Thetimehascome");
}
6、输入以下程序,查找错误并改正,输出正确的运算结果
#include
voidmain()
{inta,b
a=123;b=456;
sum=a+b
print(sumis%d\n,sum);
}
#include
voidmain()
{inta,b,sum;
a=123;b=456;
sum=a+b;
printf("sumis%d\n",sum);
}
7、编写一个C程序,显示表达式3.0*5.0,7.1*8.3-2.2和3.2/(6.1*5)的结果。
#include
intmain()
{
printf("3.0*5.0=%f\n",3.0*5.0);
printf("7.1*8.3-2.2=%f\n",7.1*8.3-2.2);
printf("3.2/(6.1*5)=%f\n",3.2/(6.1*5));
return0;
}
实验二:
1、编写程序,在程序中定义a=5,b=7,c=71,x=31.19,y=-31.2
实现下面的输出格式和结果(U表示空格):
a=U5,b=U7,a-b=-2,c=U71%
x=31.19,y=U-31.2,z=-31.2U,k=31.1900
#include
main()
{inta=5,b=7,c=71;
floatx=31.19,y=-31.2,z,k;
printf("\na=%2d,b=%2d,a-b=%d,c=%3d%%\n",a,b,a-b,c);
printf("x=%5.2f,y=%6.1f,z=%-6.1f,k=%.4f",x,y,y,x);
}
2、编写程序,显示下面的提示:
Enterthelengthoftheroom:
Enterthewidthoftheroom:
在显示每个提示后,你的程序应该使用scanf()函数调用为所显示的提示接受来自键盘的数据。
在输入长度和宽度后,程序应该计算和显示面积,要求结果只保留两位小数。
#include
main()
{floatl,w,a;
printf("\nEnterthelengthoftheroom:
\n");
scanf("%f",&l);
printf("\nEnterthewidthoftheroom:
\n");
scanf("%f",&w);
a=l*w;
printf("\nlength=%.2f,width=%.2f,area=%.2f\n",l,w,a);
}
3、编写程序,将小写字母转换成大写字母。
要求通过scanf()函数接受来自键盘的字母。
(ASCII码中小写字母比它相应的大写字母ASCII码大32)
#include
main()
{
charc;
scanf("%c",&c);
c=c-32;
printf("%c\n",c);
}
#include
main()
{charc,C;
printf("\nPlease:
\n");
scanf("%c",&c);
C=c-32;
printf("small=%c,large=%c",c,C);
}
4、编写一个程序,计算和显示一年中分钟的数量。
#include
main()
{
longinta,b,c,sum;
a=60;b=24;c=365;;
sum=a*b*c;
printf("\nsum=%ld\n",sum);
}
5编写一个程序,首先显示下面的提示:
EnterthetemperatureindegreesFahrenheit:
程序接收一个从键盘输入的数值并用公式
Celsius=(5.0/9.0)*(Fahrenheit-32.0)把输入的华氏温度转化为摄氏温度值,并输出摄氏温度值,要求结果只保留三位小数。
#include
main()
{floatf,c;
printf("\nEnterthetemperatureindegreesFahrenheit:
\n");
scanf("%f",&f);
printf("Celsius=%.3f",(5.0/9.0)*(f-32.0));
}
6、编写一个程序,使用%d转换控制序列符分别显示小写字母a,m,n的十进制整数值。
#include
main()
{printf("\na=%d,m=%d,n=%d\n",'a','m','n');
}
实验三:
1、编写一个程序,要求用户输入两个数字。
在程序使用一个或多个scanf()函数调用接收这些数字之后,用程序检查这些数字。
如果第一个键入的数字大于第二个数字则输出消息“Thefirstnumberisgreaterthanthesecond”,否则输出消息“Thefirstnumberisnotgreaterthanthesecond”.
#include
main()
{
intx,y;
scanf("%d%d",&x,&y);
if(x>y)printf("\nThefirstnumberisgreaterthanthesecond\n");
elseprintf("\nThefirstnumberisnotgreaterthanthesecond\n");
}
2、输入3个数a,b,c,要求按由小到大的顺序输出。
#include
main()
{
inta,b,c,x;
scanf("%d%d%d",&a,&b,&c);
if(a>b){x=a;a=b;b=x;}
if(a>c){x=a;a=c;c=x;}
if(b>c){x=b;b=c;c=x;}
printf("\n%d%d%d\n",a,b,c);
}
3、编写一个程序,用scanf()函数接收一个字符并确定这个字符是否是一个小写字母。
如果输入的字符是一个小写字母,显示消息“Thecharacterjustenteredisalowercaseletter”,如果输入的字符不是一个小写字母,显示消息“Thecharacterjustenteredisnotalowercaseletter”。
#include
main()
{
charc;
scanf("%c",&c);
if(c>='a'&&c<='z')
printf("\nThecharacterjustenteredisalowercaseletter\n");
elseprintf("\nThecharacterjustenteredisnotlowercaseletter\n");
}
4、有一个函数X(X<1)
y=2X-1(1≤X<10)
3X-11(X≥10)
要求输入x值,输出y值。
#include
main()
{
intx,y;
scanf("%d",&x);
if(x<1){y=x;printf("\ny=x%d\n",y);}
elseif(x<10){y=2*x-1;printf("\ny=2x-1%d\n",y);}
else{y=3*x-11;printf("\ny=3x-11%d\n",y);}
}
5、输入百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’
#include
main()
{floats;
charg;
scanf(“%f”,&s);
while(s>100||s<0)
{printf(“\nPlease\n”);
scanf(“%f”,&s)
}
switch((int)(s/10))
{case10:
case9:
g=’A’;break;
case8:
g=’B’;break;
case7:
g=’C’;break;
case6:
g=’D’;break;
case5:
case4:
case3:
case2:
case1:
case0:
g=’E’;
}
printf(“%c”,g);
}
实验四:
1、编写程序用while循环实现以2为增量输出数字2到10。
程序输出应该是:
246810
#include
main()
{inti=2;
printf("\n");
while(i<=10)
{printf("%d",i);
i=i+2;
}
}
2、求
(用while语句编程)5050
#include
main()
{
intn=1,sum=0;
while(n<=100)
{sum=sum+n;n=n+1;}
printf("\n%d",sum);
}
3、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是“水仙花数”,因为153=13+53+33。
153,370,371,407
#include
main()
{
intn,x,y,z;
printf("\n");
for(n=100;n<1000;n++)
{x=n/100;
y=(n/10)-(n/100)*10;或y=n%100/10;
z=n%10;
if(n==x*x*x+y*y*y+z*z*z)printf("%d",n);
}
printf("\n");
}
4、选择和显示可被3除尽的前20个整数
#include
main()
{intn,x,y;
printf("\n");
for(n=0,x=0;n<20;x++)
{if(x%3==0){printf("%d",x);n=n+1;}
}
printf("\n");
}
5、把100-200之间的不能被3整除的数输出
#include
main()
{intn;
printf("\n");
for(n=100;n<=200;n++)
{if(n%3!
=0)printf("%d",n);}
printf("\n");
}
实验五:
1、编写一个名为Ads()的函数,接收传递给它的一个单精度数,计算它的绝对值且显示这个绝对值。
#include
floatAds(floatx)
{floaty;
if(x>=0)y=x;
elsey=-x;
return(y);
}
main()
{floatx,y;
scanf("%f",&x);
y=Ads(x);
printf("\n%f%f\n",x,y);
}
2、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include
abc(int);
main()
{intx,y;
scanf("%d",&x);
printf("\n");
abc(x);
}
abc(inta)
{inti,j;
for(i=2,j=1;i{if(a%i==0){j=0;break;}}
if(j==1)printf("OK\n");
elseprintf("NOT\n");
}
3、编写一个函数。
计算一个圆的面积a,已知它的周长为c。
这个函数应该调用另一个返回这个给定周长c的圆半径r的函数。
相关公式为:
r=c/2∏和a=∏r2
#include
#definePI3.14
floatradius(floatl)
{floatrad;
rad=l/(2*PI);
returnrad;
}
floatarea(floatc)
{floata,r;
r=radius(c);
a=PI*r*r;
return(a);
}
main()
{floatc,r,a;
printf("\n");
scanf("%f",&c);
a=area(c);
printf("area=%f\n",a);
}
4、编写一个名为whole()的函数,返回传递给这个函数的整数部分。
#include
intinty(floaty)
{intn;
n=y;
return(n);
}
main()
{intx;
floaty;
scanf("%f",&y);
x=inty(y);
printf("%d\n",x);
}
5、xn的数值能够递归的定义为:
X0=1Xn=X*Xn-1编写一个递归函数,返回xn的值
#include
intpower(intx,intn)
{inty;
if(n==0)return1;
elsey=x*power(x,n-1);
return(y);
}
main()
{intx,n,s;
scanf("%d%d",&x,&n);
s=power(x,n);
printf("%d",s);
}
实验六:
1、编写一个程序,输入5个整数数字到一个一维数组中,所有数字输入后,显示输入的这些数字,并且显示数组的平均值,最大值,最小值。
#include
main()
{floatsum=0,x;
inta[5],i,max,min;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("\n");
max=min=a[0];
for(i=0;i<5;i++)
{printf("%d",a[i]);
sum=sum+a[i];
if(a[i]>max)max=a[i];
if(a[i]}
x=sum/5;
printf("\n%5.2fmax=%dmin=%d\n",x,max,min);
}
2、输入一串字符,计算其中空格的个数
#include
main()
{inti,j;
chara[50];
gets(a);
for(i=0,j=0;i{if(a[i]=='')j=j+1;}
printf("\n%d\n",j);
}
3、求一个3*3矩阵对角线元素之和
#include
main()
{inti,j,a[3][3],sum=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{sum=sum+a[i][i];}
printf("\nsum=%d\n",sum);
}
4、有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
#include
main()
{inti,j,a[3][4],max,x,y;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
max=a[0][0];
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
if(a[i][j]>max)
{max=a[i][j];x=i;y=j;}
}
printf("\nmax=%d,x=%d,y=%d\n",max,x,y);
}
5、将一个一维数组中的值按逆序重新存放。
#include
main()
{inta[10],i,x;
for(i=0;i<10;i++)
{scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{x=a[i];a[i]=a[9-i];a[9-i]=x;}
printf("\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
6、一篇文章,共有3行文字,每行有20个字符,要求分别统计出其中英文大写字母,小写字母,数字,空格以及其它字符的个数。
#include
main()
{inti,j,x,y,s,k,q;
chara[3][20];
x=0;y=0;s=0;k=0;q=0;
gets(a);
for(i=0;i<3;i++)
{
for(j=0;j<20&&a[i][j]!
='\0';j++)
if(a[i][j]>='A'&&a[i][j]<='Z')x=x+1;
elseif(a[i][j]>='a'&&a[i][j]<='z')y=y+1;
elseif(a[i][j]>='0'&&a[i][j]<='9')s=s+1;
elseif(a[i][j]=='')k=k+1;
elseq=q+1;
}
printf("\nx=%d,y=%d,s=%d,k=%d,q=%d\n",x,y,s,k,q);
}
实验七:
1、输入3个整数,按由大到小的顺序输出。
#include
max(int*x,int*y)
{intm;
m=*x;*x=*y;*y=m;
}
main()
{inta,b,c,*p,*q,*r;
printf("\n");
scanf("%d%d%d",&a,&b,&c);
p=&a;
q=&b;
r=&c;
if(a
if(aif(bprintf("\n%d,%d,%d\n",a,b,c);
}
2、写一个函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
#include
main()
{intn,m=0;
chara[50],*p;
scanf("%s",a);
p=a;
printf("\n");
for(n=0;n<50;n++,p++)
{if(*p!
='\0'){printf("%c",*p);m++;}
elsebreak;
}
printf("\nsum=%d",m);
}
3、将n个数按输入时顺序的逆序排列,用函数实现。
#include
reverse(int*p)
{intn,x,*p1,*p2;
for(n=0;n<2;n++)
{p1=p+n;
p2=p+4-n;
x=*p1;*p1=*p2;*p2=x;
}
}
main()
{intn,a[5];
printf("\n");
for(n=0;n<5;n++)
scanf("%d",&a[n]);
reverse(a);
printf("\n");
for(n=0;n<5;n++)
printf("%d",a[n]);
}
4、编写一个程序,输入月份号,输出该月的英文月名。
例如,输入“3”,则输出“March”,要求用指针数组处理。
#include
main()
{intn;
char*p,*month[13]={"","January","February","March","April","May","June","July","August","September","Octorber","November","December"};
printf("\n");
scanf("%d",&n);
if((n>=1)&&(n<=12))
printf("\n%s\n",*(month+n));
elseprintf("\nERROR\n");
}
5、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:
①输入10个数;②进行处理;③输出10个数。
#include
input(int*p)
{intn;
for(n=0;n<10;n++,p++)
scanf("%d",p);
}
max_mi