c语言上机参考答案.docx
- 文档编号:5861890
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:29
- 大小:30.62KB
c语言上机参考答案.docx
《c语言上机参考答案.docx》由会员分享,可在线阅读,更多相关《c语言上机参考答案.docx(29页珍藏版)》请在冰豆网上搜索。
c语言上机参考答案
C语言上机考试题参考答案
课本例题
1.例4.10:
由边长求三角形的面积
#include
#include
voidmain()
{
floata,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("a=%7.2f,b=%7.2f,c=%7.2fs=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
2.例5.3:
符号函数仅使用switch方法
#include
voidmain()
{
intx,y;
printf("请输入整数x的值:
");
scanf("%d",&x);
switch(x<0)
{
case1:
y=-1;break;
case0:
switch(0==x)
{
case1:
y=0;break;
case0:
y=1;break;
}
}
printf("y=%d\n",y);
}
2.例5.4:
改变字母的大小写
#include
voidmain()
{
charch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
printf("%c\n",ch);
}
3.例5.5:
判断闰年
#include
#include
voidmain()
{
intyear;
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
printf("%dis闰年");
else
printf("%disnot闰年");
}
5例6.6:
求π的近似值
#include
#include
voidmain()
{
ints;
floatn,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
6例7.2:
Fibonacci数列
#include
#include
voidmain()
{
inti;
intf[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
7例7.3:
起泡排序
#include
#include
voidmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;i++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
8例7.4:
矩阵转置
#include
#include
voidmain()
{
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[i][j]=a[i][j];
}
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
9例7.5:
求一组数中的最大或最小数
#include
#include
voidmain()
{
inti,j,row=0,colum=0,max;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
10例8.8:
使用递归方法实现计算阶乘n!
#include
#include
voidmain()
{
floatfac(intn);
intn;floaty;
scanf("%d",&n);
y=fac(n);
printf("%d!
%10.0f\n",n,y);
}
floatfac(intn)
{
floatf;
if(n<0)
{
printf("error");
}
else
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
returnf;
}
11例10.9:
选择法排序
#include
#include
voidmain()
{
voidsort(intx[],intn);
int*p,i,a[10];
p=a;
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d",*p);
p++;
}
}
voidsort(intx[],intn)
{
inti,j,k,t;
for(i=0;i { k=i; for(j=i+1;j if(x[j]>x[k])k=j; if(k! =i) {t=x[i];x[i]=x[k];x[k]=t;} } } 12习题4.9: 华氏度转摄氏度 #include voidmain() { floatc,f; printf("请输入一个华氏温度: "); scanf("%f",&f); c=5*(f-32)/9; printf("对应的摄氏温度为: %.2f\n",c); } 13题5.4: 输出三个数中的最大者 #include #include voidmain() { inta,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(max if(max printf("max=%d\n",max); } 14习题5.6: 成绩分数转为成绩等级(if-else和switch两种方法) 方法一 #include voidmain() { floatgrade=0.0; printf("请输入一个百分制成绩: "); scanf("%f",&grade); if(grade>=90.0&&grade<=100.0) printf("成绩等级为: A\n"); elseif(grade>=80.0&&grade<90.0) printf("成绩等级为: B\n"); elseif(grade>=70.0&&grade<80.0) printf("成绩等级为: C\n"); elseif(grade>=60.0&&grade<70.0) printf("成绩等级为: D\n"); elseif(grade>=0.0&&grade<60.0) printf("成绩等级为: E\n"); else printf("输入有误! 请输入百分制成绩! \n"); return0; } 方法二 #include voidmain() { floatgrade=0.0; intt=0; printf("请输入一个百分制成绩: "); scanf("%f",&grade); if(grade>=0.0&&grade<=100.0) { t=(int)grade/10; switch(t) { case10: case9: printf("成绩等级为: A\n");break; case8: printf("成绩等级为: B\n");break; case7: printf("成绩等级为: C\n");break; case6: printf("成绩等级为: D\n");break; case5: case4: case3: case2: case1: case0: printf("成绩等级为: E\n");break; } } else printf("输入有误! 请输入百分制成绩! \n"); } 15习题5.7: 拆分整数 #include voidmain() { intnum; printf("请输入一个不多于5位的正整数: "); scanf("%d",&num); if(num<=0||num>=100000) { printf("输入有误! "); } else { if(num>=10000) printf("您输入的是5位数。 \n"); elseif(num>=1000) printf("您输入的是4位数。 \n"); elseif(num>=100) printf("您输入的是3位数。 \n"); elseif(num>=10) printf("您输入的是2位数。 \n"); else printf("您输入的是1位数。 \n"); } } 16习题6.3: 求a+aa+aaa+aaaa+… #include voidmain() { inta,n,t; inti,sum=0; printf("请输入a和n的值,用空格分隔: "); scanf("%d%d",&a,&n); t=a; for(i=1;i<=n;i++) { sum=sum+a; a=a*10+t; } printf("a+aa+aaa+...+aaa...a=%d\n",sum); } 17习题6.4: (注意结果不能为long型) #include voidmain() { floatfac=1,sum=0; inti; for(i=1;i<=20;i++) { fac*=i; sum+=fac; } printf("1! +2! +...+20! =%e\n",sum); } 18习题6.6: 求水仙花数 #include voidmain() { inta,b,c,i; printf("水仙花数为: "); for(i=100;i<1000;i++) { a=i/100; b=(i-a*100)/10; c=i%10; if(i==a*a*a+b*b*b+c*c*c) printf("%7d",i); } printf("\n"); } 19习题6.8: 分数数列求和 #include intmain() { inti,t; floata=2,b=1; floatsum=0.0; for(i=1;i<=20;i++) { sum+=a/b; t=a; a=a+b; b=t; } printf("2/1+3/2+5/3+...(20items)=%10f\n",sum); } 20习题6.14: 使用循环打印图案 * *** ***** ******* ***** *** * #include voidmain() { inti,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) putchar(''); for(k=0;k<=2*i;k++) putchar('*'); putchar('\n'); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) putchar(''); for(k=0;k<=4-2*i;k++) putchar('*'); putchar('\n'); } } 21习题7.3: 求方阵对角线元素之和 #include voidmain() { inta[3][3]; inti,j,sum=0; printf("请输入9个整数: "); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) sum+=a[i][i]; printf("对角线元素之和为: %d\n",sum); } 22习题7.5: 逆置数组 #include #defineN5 voidmain() { inti,t=N; inta[N]; printf("请输入%d个整型数,以空格分隔: ",t); for(i=0;i scanf("%d",&a[i]); printf("\n原数组为: "); for(i=0;i printf("%d",a[i]); for(i=0;i { t=a[i];a[i]=a[N-i-1];a[N-i-1]=t; } printf("\n逆序存放后数组为: "); for(i=0;i printf("%d",a[i]); } 23习题7.6: 杨辉三角 #include voidmain() { inti,j; inta[10][10]; for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<10;i++) { for(j=1;j { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } 24题7.11: 使用循环和数组输出字符图形 #include voidmain() { inti,j; charc[]="*****"; for(i=0;i<5;i++) { for(j=0;j printf(""); printf("%s\n",c); } } 25题7.13: 不使用strcat()函数连接两个字符串 #include #include voidmain() { inti,j; charc1[100]={0},c2[30]={0}; printf("请输入2个字符串,以回车分割: \n"); gets(c1); gets(c2); for(i=0,j=strlen(c1);c2[i]! ='\0';i++,j++) { c1[j]=c2[i]; } c1[j]='\0'; printf("连接之后的字符串为: %s\n",c1); } 26习题8.3: 编写求素数函数 #include #include intprime(intn) { intk,i,flag=0; if(n<2) return-1; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>k)flag=1; elseflag=0; returnflag; } voidmain() { intn; printf("请输入一个大于1的自然数: "); scanf("%d",&n); switch(prime(n)) { case0: printf("%d不是素数\n",n);break; case1: printf("%d是素数\n",n);break; case-1: printf("输入有误! \n");break; } } 27习题8.7: 复制字符串中的元音字母到另一字符串 #include voidvowelcopy(charto[],charfrom[]) { inti,j; for(i=0,j=0;from[i]! ='\0';i++) { if('a'==from[i]||'A'==from[i]||'e'==from[i]||'E'==from[i]|| 'i'==from[i]||'I'==from[i]||'o'==from[i]||'O'==from[i]|| 'u'==from[i]||'U'==from[i]) to[j++]=from[i]; } to[j]='\0'; } voidmain() { charto[100],from[100]; printf("请输入一个英文字符串: "); gets(from); vowelcopy(to,from); printf("字符串中的元音字母有: "); puts(to); } 28习题8.13: 递归法求n阶勒让德多项式的值 #include floatlegendre(floatx,intn) { floatlegen; if(0==n) legen=1; elseif(1==n) legen=x; else legen=((2*n-1)*x*legendre(x,n-1)-(n-1)*legendre(x,n-2))/n; returnlegen; } voidmain() { intn; floatx; printf("请输入自变量x的值和阶数n,以空格分隔: "); scanf("%f%d",&x,&n); printf("自变量x值为%6.2f的%d阶勒让德多项式值为: %6.2f", x,n,legendre(x,n)); return0; } 29习题8.16: 进制转换 #include inthex2dec(inthex) { intn,sum=0,t=1; while(hex>0) { n=hex%16;sum+=n*t; t*=16;hex/=16; } returnsum; } voidmain() { inthex; printf("请输入一个16进制数: "); scanf("%x",&hex); printf("16进制数%x对应的10进制数为: %d\n",hex,hex2dec(hex)); } 30习题10.1: 用指针实现3个数排序 #include voidmain() { voidexchange(int*q1,int*q2,int*q3); inta,b,c,*p1,*p2,*p3; scanf("%d,%d,%d",&a,&b,&c); p1=&a;p2=&b;p3=&c; exchange(p1,p2,p3); printf("%d,%d,%d\n",a,b,c); } voidexchange(int*q1,int*q2,int*q3) { voidswap(int*pt1,int*pt2); if(*q1>*q2)swap(q1,q2); if(*q1>*q3)swap(q1,q3); if(*q2>*q3)swap(q2,q3); } voidswap(int*pt1,int*pt2) { inttemp; temp=*pt1; *pt1=*pt2; *pt2=temp; } 上机指导书: 31实验2.5: 模拟计算器 #include void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 参考答案