29.磁盘文件a1和a2,各自存放一个已按字母顺序排好的字符串,编程合并二个文件到a3文件中,合并后仍保持字母顺序(如a1中存放:“accel”,a2中存放“ilrz”,则a3中为“acceillrz”)。 30.已知顺序文件C.DAT 存放着程序设计基础的考试成绩,每个记录包含学号(8位字符)和成绩(三位整数)两个数据项。编制程序,从文件中读入学生成绩,将大于或等于60分的学生成绩再形成一个新的文件SCORE60.DAT保存在A盘上,并显示出学生总人数(少于1000)、平均成绩和及格人数。
语言程序设计习题答案
1 单项选择题
1. B 2. D 3. C 4. D 5. B 6. B 7. D 8. A 9. C 10. D 11. B 12. C 13. D 14. A 15. A 16. D 17. C 18. B 19. B 20. A 21. C 22. B 23. D 24. B 25. D 26. C 27. C 28. A 29. A 30. C 31. C 32. D 33. C 34. C 35. A 36. D 37. B 38. D 39. A 40. C 41. B 42. C 43. A 44. C 45. D 46. C 47. A 48. B 49. B 50. A 51. D 52. D 53. C 54. D 55. B 56. B
2 填空题
1. 2.5 2. 16 3. 2 4. 0 5.0 6.sqrt(s*(s-a)*(s-b)*(s-c)) 7. (-b+sqrt(b*b-4*a*c))/2/a
8. p*pow(1+r,5) 9.(x+1)*exp(2*x) 10.ch>=?A?&&ch<=?Z? 11. abs(n)>9&&abs(n)<100 12. a!=0&&b!=0 13. a==-b 14. a==0&&b!=0||b==0&&a!=0 15. m%2==1&&m/10%2==0
16. 11、11、6 17. 4、4、10、6 18. 18、3、3 19. 20、15 20. (a>b)?a:b 21. –17 22. ?D? 23. 31 24. m=1b 25. small 26. 0 27.2 28. 30、0 29. s未定义初值0 30. jc存放10!字长不够
31. static int a[10]; 32. char a[10]=”continue”; 33. int a[5],*p=a; 34. int a[4][5],*p=a[0]; 35. windows 95 36. windows 95 37. 5 38. 7 39. windows 40. 8
41. printf(”%d\\n”,m); 42. fopen(”a.txt”,”rw”); 43. x[i]>=?A?&&x[i]<=?Z? 44.1、7、1 45.0、707、-1 46.1、0、56 47. 值传递 48. 值传递 49. 地址传递 50. 值传递 51.7 52.17 53. 10、5 54. p=(int*)malloc(n*sizeof(int)); 55.free(p); 56.fseek(fp,25l,1);
25
3 写输出结果题
1. A C E G 2. K=8 3. 4 25 27 16 4. 1 0 2 2 5 7 13 20 5. SUM=2468 6. x|y&z=3 、x^y&~z=1、x&y&z=0、!x|x=1、~x|x=-1 7. 2 4 6 9
8. 9.
- - - - - - * * * * * * * | | * * * * * | | * * * | | * - - - - - -
10. 11. 12.
7 7 7 7 7 7 7 g a b c d e f b c d e f g a 5 5 5 5 5 f g a b c d e c d e f g a b 3 3 3 d e f g a b c e f g a b c d 1
13. 14. 3 15.
* 5,-7,3 1 4 2 * * * 1 1 4 * * * * * 3 2 1 # # # # # #
16. 2 3 5 7 17. 1 5 3 8 4 9 –4 6 18. afternoon 19. $ evening $ $ $ $ $ $ $ $ morning
$ $ $ $ $ $ $ night
20. 1 21. 256.000000 22. U=32.000v=18.000 23.a,d 24. 0 25. All=abcdefghijklmnop abc,def e seek1 ch=a ghi,mno 1 seek2 ch=l hi,no i seek3 ch=n
4 程序填空题
1. ⑴ ”%d%d”,&m,&n ⑵ gbs%n!=0
⑶ m*n/gbs; ⑷ printf(”%d %d\\n”,gbs,gys); 2. ⑴ int i,n; float nox; ⑵ nmin=no1;
⑶ &nox ⑷ else if(nox 3. ⑴ #include 26 4. ⑴ int s1=0,s2=0; ⑵ ch=getchar() ⑶ ||ch>=’A’&&ch<=’Z’ ⑷ prnitf(”%d %d\\n”,s1,s2); 5. ⑴ #include 7. ⑴ scanf(”%d”,&n); ⑵ (int*)malloc(n*sizeof(int)) ⑶ gbs%*(p+i)!=0 ⑷ goto l1; 8. ⑴ printf(”%f\\n”,s); ⑵ s=find(a,7,-1); “-1”也可以改为其它负数 ⑶ t=*p; ⑷ return t; 9. ⑴ sort(a,7); ⑵ float *p,int n ⑶ *(p+j)>*(p+k) ⑷ t=*(p+i); 10. ⑴ &time.hour,&time.minute,&time.second ⑵ time.second ⑶ time.minute++; ⑷ time.hour==24 11. ⑴ ip-=11; ⑵ jg=3; ⑶ m[i]!=m[1] ⑷ i==12 ⑸ num-1 12. ⑴ float t; ⑵ else fh=1 ⑶ j 2n 15. 下列函数求任意阶多项式 a0+a1X+a2X+...+anX的值并返回多项式的值。 ⑴ flaot *a,int n,float x ⑵ int i; ⑶ t=t*x; ⑷ return y; 16. ⑴ *p,*max,*min ⑵ float t; ⑶ *min=*p; ⑷ t>*max 17. ⑴ flaot *a,int n ⑵ j=i+1;j 24. ⑴ FILE *fp; ⑵ int m,e,c,i,n; ⑶ fp=fopen(”student.dat”,”W”); ⑷ fclose(fp); 25. ⑴ f3=fopen(\⑵ fprintf(f3,”%d\\n”,y); ⑶ fprintf(f3,”%d\\n”,y); ⑷ ”%d\\n”,x ⑸ fscanf(f1,\ 5 编程题参考答案 1.编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。 #include \ #define N 50 void main() 27 { float x; unsigned int s1,s2,s3,i; s1=s2=s3=0; for(i=1;i<=N;i++) { scanf(\ if(x<0) s1++; else if(x==0) s2++; else s3++; } printf(\负数%u个,零%u个,正数%u个\\n\ } 22 2. 编程,计算并输出方程 X+Y=1989 的所有整数解。 #include \ void main() { int x,y; for(x=-45;x<=45;x++) { y=-45; while(y<=45) { if(x*x+y*y==1989) printf(\ y++; } } } 3.编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。 #include \ void main() { unsigned int x; printf(\请输入一个十进制正整数:\ printf(\八进制数 %o=十六进制数%x\\n\ } 4.编程,找出1000以内的所有完数,并输出其因子。 #include \ void main() { int i,j,s=1; for(i=1;i<=1000;i++,s=1) { for(j=2;j<=i/2;j++) if(i%j==0) s+=j; // 求 i的因子和 if(s==i) { printf(\如果i 是完数则输出其各因子 for(j=2;j<=i/2;j++) if(i%j==0) printf(\ printf(\ } 28 } } 5. 输入一个正整数,输出它的所有质数因子。 #include \ void main() { int m,i=2; printf(\请输入一个整数:\ while(m!=1) if(m%i==0){ printf(\ printf(\ } 6. 输入20个整数,输出其中能被数组中其它元素整除的那些数组元素。 #include \ #define N 20 void main() { int a[N],i,j; for(i=0;i if(a[i]%a[j]==0&&i!=j) { printf(\ } 7. 输入两个数组(数组元素个数自定),输出在两个数组中都出现的元素。 #include \ #define NA 6 #define NB 8 void main() { float a[NA],b[NB]; int i,j; for(i=0;i if(a[i]==b[j]) { printf(\ } 8. 输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素。 #include \ #define NA 6 #define NB 8 void main() { float a[NA],b[NB]; int i,j; for(i=0;i 29