《程序设计基础》参考答案第一章一.填空题1.硬件系统、软件系统2.中央处理器、存储器、输入设备、输出设备3.系统软件、应用软件4.说明语句、表达式语句、分支语句、循环语句、控制流程语句5.数据结构、算法二.选择题1 C 2 B 3 ABCD 4 AB 5 C三.问答题1.答:(1)由三种基本控制结构:顺序结构、选择结构和循环结构2)有限制的使用goto语句3)籍助于结构化程序设计语言来书写4)采用自顶向下,逐步求精或自底向上,逐步积累的程序设计策略2.答:(1)对于变量,先定义其数据类型,再使用 (2)C程序由函数构成,一个程序至少要有一个以上的函数 (3)C程序总是从main()函数开始执行 (4)书写格式自由,在一行可以有若干语句 (5)数据的输入与输出是通过输入输出函数实现,例如:scanf(),printf()函数等 (6)C程序用/* */进行注释3.答:(1)由键盘输入源程序; (2)经过编辑后生成f.c磁盘文件; (3)经过编译后生成f.obj文件; (4)经过连接后形成f.exe文件; (5)执行。
4.答:用伪代码描述如下: 开始 for(n=3; n<=100;n++) { for(m=2; m<= ; m++) {n/m的余数=>r; if(r==0) break; } if(m>=+1)输出n;} 结束5.答:描述如下:第二章一.填空题1.常量、整型常量、实型常量、字符型常量2.变量、先定义3.单精度、双精度4.+、-、*、/、%5.关系表达式、“0”、“1”二.选择题1 C 2 B 3 B 4 D 5 B三.问答题1.答:字符常量是一个字符,在程序中字符是用单引号括起来的字符串变量由0个或若干个字符组合而成,在程序中字符串是用双引号括起来的,在存储时系统自动在字符串最后面加一个结束符号‘\0’2.解: (1)2.5(2)3.53.解:运行结果为: (1) 9,11,9,10 (2) (1) b=2 (2) a=3 (3) c=2 (4) b=4 (5) c=94.解:(1)0 (2)0 (3)0 (4)1 (5)15.解: (1)24 (2)10 (3)60(4)0 (5)0 (6)0第三章一.填空题1.顺序语句、选择语句、循环语句、转移语句2.#include “stdio.h”3.break4.z=(x>y)?x:y;5.将给定的一个字符常量或字符变量的内容输出到显示器屏幕上二.选择题1 B 2 B 3 B 4 B 5 C三.问答题1.解:#include void main(){ int units,tens,hundreds,a,b; printf("Please input a number(100~999):"); scanf("%d",&a); hundreds=a/100; tens=(a-hundreds*100)/10; units=a-hundreds*100-tens*10; b=100*units+tens*10+hundreds; printf("after change,the number is:%d\n",b);}2.解: #include void main(){ int a ,b,c; scanf("%d%d%d",a,b,c); if(a>b) if(b>c) printf("mid=%d\n",b); else if(a>c) printf("mid=%d\n",c); else printf("mid=%d\n",a); else if(a>c) printf("mid=%d\n",a); else if(b>c) printf("mid=%d\n",c); else printf("mid=%d\n",b);}3.解:#include #include void main(){ double a,b,c; /*方程系数*/ double disc; /*判别式*/ double re,im; /*方程实部虚部*/ printf("Enter a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); if(a==0.0) if(b==0.0) printf("The equation has not soluble!\n"); else printf("Single root is %f\n",-c/b); else if(c==0.0) printf("Two roots:x1=%lf\t x2=%lf\n",-b/a,0); else { disc=b*b-4*a*c; re=-b/(2*a); im=sqrt(fabs(disc))/(2*a); if(disc>=0.0) printf("Two roots:x1=%f\t x2=%f",re+im,re-im); else printf("Two complex roots:x1=%f+i*%f\t x2=%f-i*%f\n",re,im,re,im); }}4.解:#include #include void main(){ int i,j,result; printf("\n"); for(i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result); } printf("\n"); }}5.答: #include void main(){ float a,b; char optor; printf("Please input the value of a,b:"); scanf("%f%f",&a,&b); printf("Enter operator:"); getchar(); scanf("%c",&optor); switch(optor) { case '+':printf("%f+%f=%f\n",a,b,a+b); break; case '-':printf("%f-%f=%f\n",a,b,a-b); break; case '*':printf("%f*%f=%f\n",a,b,a*b); break; case '/':if(b==0) printf("can not adivided by 0!\n"); else printf("%f/%f=%f\n",a,b,a/b); break; default:printf("Input error!"); } }第四章一.填空题1.[0 , N-1]2.10223.a[4][5]4.“string.h”5.0、‘\0’二.选择题1 D 2 A 3 D 4 B 5 C三.问答题1.解:#include void main(){ int a[15]; int i,j; a[0]=0; a[1]=1; printf("%-4d%-4d",a[0],a[1]); for(i=2;i<15;i++) { a[i]=a[i-1]+a[i-2]; printf("%-4d",a[i]); }}2.解:#include void main(){ int a[10]; int i,min,k,temp; printf("Please input 10 integer numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { min=i; for(k=i+1;k<10;k++) { if(a[k]<=a[min]) min=k; } temp=a[i]; a[i]=a[min]; a[min]=temp; } for(i=0;i<10;i++) printf("%-4d",a[i]);}3.解:#include void main(){ int a[10],i,j,temp; printf("Please input 10 integer numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) fo。