吉林大学 软件学院 C语言 作业参考答案.docx
- 文档编号:6433571
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:54
- 大小:129.61KB
吉林大学 软件学院 C语言 作业参考答案.docx
《吉林大学 软件学院 C语言 作业参考答案.docx》由会员分享,可在线阅读,更多相关《吉林大学 软件学院 C语言 作业参考答案.docx(54页珍藏版)》请在冰豆网上搜索。
吉林大学软件学院C语言作业参考答案
软件学院
高级语言程序设计作业参考答案
2010年12月
目录
第二章简单程序1
第三章分支程序设计3
第四章循环程序设计9
第五章模块化程序设计――函数12
第六章批量数据组织――数组15
第七章指针22
第八章表单数据组织——结构体24
第九章再论函数28
第十章外部数据组织——文件29
第十一章程序开发32
第十二章动态数据组织33
第二章简单程序
2.1用赋值表达式表示下列计算
1)
2)
3)
4)
5)
参考答案:
1)y=pow(x,a+pow(b,c))
或者:
exp((a+exp(c*log(b)))*log(x))
2)x=pow(log(sqrt(a+d*d))-exp(26),5.0/2)
或者:
exp(5.0/2*log(log(sqrt(a+d*d))-exe(26)))
3)y=sin(x)/(a*x)+fabs(cos(3.1415926*x/2))
4)R=1.0/(1.0/R1+1.0/R2+1.0/R3)
5)y=x/(1+(x/(3+(pow(2*x,2)/5+(pow(2*x,3)/(7+pow(4*x,2)))))))
2.5编写程序,输入两个整数,分别求它们的和、差、积、商、余数并输出。
参考答案:
#include
voidmain()
{
intm,n;
printf("请输入2个整数\n");
scanf("%d%d",&m,&n);
printf("%d+%d=%d\n",m,n,m+n);
printf("%d-%d=%d\n",m,n,m-n);
printf("%d*%d=%d\n",m,n,m*n);
printf("%d除以%d:
%f\n",m,n,(float)m/n);
printf("%d除以%d的余数:
%d\n",m,n,m%n);
}
2.8已知摄氏温度C与华氏温度F的转换关系是
编写一个摄氏温度与华氏温度转换的程序,输入C,输出F.
参考答案:
#include
voidmain()
{
floatf,c;
printf("请输入摄氏温度的值:
\n");
scanf("%f",&c);//输入33
//f=9*c/5+32;//结果为91.4
f=9.0/5*c+32;//结果为91.4
//f=9/5*c+32;//结果为65
printf("转换为华氏温度是:
%f\n",f);
}
第三章分支程序设计
3.2编写程序,输入一个字母,若其为小写字母,将其转换成相应的大写字母,然后输出。
参考答案:
#include
voidmain()
{
charc1;
printf("请输入一个小写字母:
\n");
scanf("%c",&c1);
if(c1>='a'&&c1<='z')//if(c1>=97&&c1<=122)
{
c2=c1-('a'-'A');//c1=c1-32;
printf("该字母对应的大写字母是:
%c\n",c1);
}
else
printf("该字符不是小写字母\n");
}
程序运行结果:
3.9编写程序,读入一个点的X、Y,计算
参考答案1:
#include
#include
#defineEPS1e-6
voidmain()
{
floatx,y,z;
printf("请输入x和y的值:
\n");
scanf("%f%f",&x,&y);
if(fabs(x) { printf("输入错误,该点在坐标轴上.\n"); return; } if(x>0) { if(y>0)//第一象限 z=log(x)+log(y); else//第四象限 z=tan(x+y); } else { if(y>0)//第二象限 z=sin(x)+cos(x); else//第三象限 z=exp(2*x)+exp(3*y); } printf("z=%f\n",z); } 参考答案2: #include voidmain() { floatx,y,z; intk ; printf("请输入x和y的值: \n"); scanf("%f%f",&x,&y); if(x>0) if(y>0)k=1;//第一象限 elsek=4;//第四象限 else if(y>0)k=2;//第二象限 elsek=3;//第三象限 switch(k){ case1: z=log(x)+log(y);break; case2: z=sin(x)+cos(x);break; case3: z=exp(2*x)+exp(3*y);break; case4: z=tan(x+y); } printf("z=%f\n",z); } 3.10编程序,输入一个整数,判断它能否被3、5、7整除,并输出如下信息。 A.能同时被3、5、7整除; B.能同时被两个数整除,并指明是哪两个数; C.能被一个数整除,并指明是哪个数; D.不能被所有数整除。 参考答案0: #include"stdio.h" voidmain(){ intn; inta,b,c; printf("pleaseinputn: "); scanf("%d",&n); a=b=c=0;//important! if(n%3==0)a=3; if(n%5==0)b=5; if(n%7==0)c=7; switch(a+b+c){ case15: printf("3,5,7");break; case12: printf("5,7");break; case10: printf("3,7");break; case8: printf("3,5");break; case7: printf("only7");break; case5: printf("only5");break; case3: printf("only3");break; default: printf("nevercanbe! "); } } 参考答案1: #include"stdio.h" voidmain(){ intn; inta,b,c; printf("pleaseinputn: "); scanf("%d",&n); a=b=c=0;//important! if(n%3==0)a=1; if(n%5==0)b=1; if(n%7==0)c=1; switch(a+b+c){ case3: printf("3,5,7"); break; case2: if(a==0)printf("5,7"); if(b==0)printf("3,7"); if(c==0)printf("3,5"); break; case1: if(a==1)printf("only3"); if(b==1)printf("only5"); if(c==1)printf("only7"); break; default: printf("nevercanbe! "); } } 参考答案2: #include voidmain() { intn; printf("Pleaseinputaninteger: \n"); scanf("%d",&n); if(n%3==0) { if(n%5==0) { if(n%7==0) printf("3,5,7\n"); else printf("3,5\n"); } else { if(n%7==0) printf("3,7\n"); else printf("3\n"); } } else { if(n%5==0) { if(n%7==0) printf("5,7\n"); else printf("5\n"); } else { if(n%7==0) printf("7\n"); else printf("Allnot.\n"); } } } 参考答案3: #include voidmain() { intdata,i,count=0; charch[3]; printf("请输入一个整数: "); scanf("%d",&data); if(data%3==0){ch[count]='3';count++;} if(data%5==0){ch[count]='5';count++;} if(data%7==0){ch[count]='7';count++;} printf("能被其中的%d个数整除,分别是: ",count); for(i=0;i printf("%c",ch[i]); printf("\n"); } 编程序,当输入数值月份时,显示相应英文月份名称。 例如当输入1时输出January,当输入5时输出May,等等。 参考答案1: #include"stdio.h" voidmain(){ intx; printf("Pleaseinputthenumber: "); scanf("%d",&x); switch(x){ case1: printf("January\n"); break; case2: printf("February\n"); break; case3: printf("March\n"); break; case4: printf("April\n"); break; case5: printf("May\n"); break; case6: printf("June\n"); break; case7: printf("July\n"); break; case8: printf("August\n"); break; case9: printf("September\n"); break; case10: printf("October\n"); break; case11: printf("November\n"); break; case12: printf("December\n"); break; default: printf("Wrongnumber! \n"); } } 参考答案2: (枚举类型) #include"stdio.h" voidmain() { enumTMonth{January,February,March,April,May,June,July,August,September,October,November,December,Wrong}month;//声明枚举类型的变量 intx; printf("Pleaseinputthenumber: "); scanf("%d",&x); switch(x){ case1: month=January;break; case2: month=February;break; case3: month=March;break; case4: month=April;break; case5: month=May;break; case6: month=June;break; case7: month=July;break; case8: month=August;break; case9: month=September;break; case10: month=October;break; case11: month=November;break; case12: month=December;break; default: month=Wrong; } printf("%d\n",month);//输出的是month的数值,而不是英文单词 } 参考答案3: (字符数组) #include"stdio.h" #include"string.h" voidmain() { charmonth[20]; intx; printf("Pleaseinputthenumber: "); scanf("%d",&x); switch(x){ case1: strcpy(month,"January");break; case2: strcpy(month,"February");break; case3: strcpy(month,"March");break; case4: strcpy(month,"April");break; case5: strcpy(month,"May");break; case6: strcpy(month,"June");break; case7: strcpy(month,"July");break; case8: strcpy(month,"August");break; case9: strcpy(month,"Septemberv");break; case10: strcpy(month,"Octoberv");break; case11: strcpy(month,"Novemberv");break; case12: strcpy(month,"December");break; default: strcpy(month,"Wrong"); } printf("%s\n",month);//输出的是英文单词 } 第四章循环程序设计 4.1利用展开式 计算 ,分别: 到第100项;到余项小于 (考虑当0 参考答案: (1)到100项: #include voidmain() { inti=0; floatx,result=1.0,item=1.0; printf("请输入x的值: \n"); scanf("%f",&x); while(i<=99) { i++; item=item*x/i; result+=item; } printf("theresultis%g\n",result); } (2)到余项小于 : ( ) #include #include #defineeps1e-8 #defineE3//e=2.71828182845904... voidmain() {inti=0; doublex,result=1.0,item=1.0; doubleRn;//余项 printf("请输入x的值: \n"); scanf("%lf",&x); if(x<=0)//余项中exp(x)中的x取0 Rn=item*x/i; elseif(x>0&&x<=1)//余项中exp(x)中的x取1 Rn=E*item*x/i; else//x>1 Rn=pow(E,x)*item*x/i; while(fabs(Rn)>eps) { i++; item=item*x/i; result+=item; if(x<=0) Rn=item*x/i; elseif(x>0&&x<=1) Rn=E*item*x/i; else Rn=pow(E,x)*item*x/i; }; printf("theresultis%.20g\n",result); } 4.8 略(简单) 4.12编写程序,打印所有3位的Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。 参考答案1: #include voidmain() {inti,bit0,bit1,bit2,tmp0; for(i=100;i<999;i++) { bit0=i%10; tmp0=i/10; bit1=tmp0%10; bit2=tmp0/10; if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2==i) printf("%d\n",i); } } 参考答案2: #include voidmain() {intbit0,bit1,bit2,tmp0; for(bit2=1;bit2<9;bit2++) for(bit1=0;bit1<9;bit1++) for(bit0=0;bit0<9;bit0++) if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2==bit0+bit1*10+bit2*100) printf("%d\n",bit0+bit1*10+bit2*100); } 4.16编程序,打印下图形式的数字金字塔。 1 121 12321 1234321 123454321 ………… ………………… 1234567890987654321 参考答案: #include"stdio.h" voidmain(){ inti,j,k,l; for(i=1;i<=10;i++)//控制行数 { for(j=1;j<=10-i;j++)//打印左边黑色部分 printf(""); for(k=1;k<=i;k++) { if(k==10)//第10行 printf("%2d",k-10); else printf("%2d",k); } for(l=i-1;l>0;l--)//打印右边蓝色部分 printf("%2d",l); printf("\n"); } } 4.18 略(简单) 第五章模块化程序设计――函数 5.1编写程序计算 其中: 参考答案: #include #include //函数定义 floatf(floatv,floatw) { return(w+v)/(7*v); } floatp(floatu) { return(f(u*0.3,u)+u/2)/(2*u); } floaty(floatx) { return(p(x)*p(x)+5*x)*p(x+2)/(p(x+5)-sqrt(x)); } voidmain() {floatx,result; printf("Pleaseenterx: \n"); scanf("%f",&x); result=y(x);//函数调用 printf("Theresultis: %f\n",result); } 5.2编写程序,输入实数a,b,c的值,计算并输出以下算式的值。 参考答案: #include #include #defineN4.25 floatf(float);//函数的声明 voidmain() {floata,b,c,tmp,result; printf("Pleaseenterthevalueofa,b,c: \n"); scanf("%f%f%f",&a,&b,&c); tmp=a+b; result=(N*tmp+f(tmp))/(N+f(c));//函数的调用 printf("Theresultis: %f\n",result); } floatf(floatm)//函数的定义 {returnlog(m+sqrt(m)+1/m);} 5.6分别编写函数,检测一个字符是否为空格、数字、元音字母。 参考答案: #include //函数定义 boolisSpace(charc) {if(c=='') returntrue; returnfalse; } boolisDigital(charc) {if(c>'0'&&c<'9') returntrue; returnfalse; } boolisVowel(charc) {if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U') returntrue; returnfalse; } voidmain() {charvar; printf("Pleaseenteraletter: \n"); scanf("%c",&var); if(isSpace(var))//函数调用 printf("%cisaspace.\n",var); elseif(isDigital(var)) printf("%c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 吉林大学 软件学院 C语言 作业参考答案 软件 学院 语言 作业 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)