上海市计算机二级考试(C语言)复习资料题目答案(共23页).doc

上传人:飞****2 文档编号:13981218 上传时间:2022-05-02 格式:DOC 页数:23 大小:104KB
返回 下载 相关 举报
上海市计算机二级考试(C语言)复习资料题目答案(共23页).doc_第1页
第1页 / 共23页
上海市计算机二级考试(C语言)复习资料题目答案(共23页).doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《上海市计算机二级考试(C语言)复习资料题目答案(共23页).doc》由会员分享,可在线阅读,更多相关《上海市计算机二级考试(C语言)复习资料题目答案(共23页).doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上上海理工大学上海市计算机二级考试(C语言)复习资料题目解答第一部份:基础知识1. B 2. C 3. C 4. B 5. D 6. A 7. A 8. C 9. C 10. A 11. C 12. A 13. B 14. B 15. C 16. B 17. D 18.B 19. A 20. C21. C 22. B 23. B 24. C 25. D 26. B 27. B 28. D 29. C 30. C31. D 32. C 33. C 34. B 35. C 36. D 37. C 38. B 39. C 40. B41. C 42. B 43. C 44.

2、B 45. B 46. A 47. D 48. D 49. D 50. D51. A 52. C 53. (Sqrt( x)+ sqrt( y)/2/( x+ y) or similar 54. The 234 is namely the string234 55. B 56.D 57.D 58. B 59. C 60.D61.B 62. D 63.A 64.D 65.C 66.B 67.C 68. D 69. C 70.C71.A 72.A 73.B 74.B 75.C 76. C 77.C 78.A 79.D 80.B81.D 82.D 83.C 84.D 85.B 86.D 87.B 8

3、8.D 89.B 90.C91.C 92.B 93.B 94.B 95. N+096. 0The x1400 moves is ex-, binary system Bs or eight enter the 024 Qs of system97. The first answer 65 ds or 41 hses or a the second answer 1 or not098. 85 99. 14 100. x=-60第二部分 读程序,写结果1. 0,2,4,32. 3.1423. 84. m/10%10*100+m/100*10+m%105. ?uoy_era_woHHwaeyu6.

4、 7,3 7. 546568. A the = biggest number, b= is most the fraction9. 110. 5,511.12. 1 3 5 7 913. j=0 m=4The first k : 4 j=1 m=414. The second k : 515. Count=0, position=0( did not find out)16. 0 -3017. 输出12 14 22 24 32 34,函数s是用插入法对数组a的前n个元素从小到大排序18. 输出 2 3 5 7 11 13 函数p的功能是求k(包括k )以内的质数19. 输出n=91, a=0,

5、 10, 21, 3120. 输出Feith21. 输出72 56 38 4922.23. k=524. 125. 926. 用递归函数实现10-2进制转换第三部分 程序改错1. #4 scanf(“%d”,&x); #10 low=m+1 #11 high=m-1 2. #7 scanf(“%c”,&stri); #8 break 3. #7 x , n #13 n=0 #15 x*xn(x,n-1) 4. #5 t=t*x/i #15 e=ex(x) 5. #4 scanf(%d”,&x);#10 low=m+1#11 high=m-16. #3 fun(str)#5 while (*(s

6、tr+num)!=0) num+; #9 char str10,*p=str;7. #14 flag=0 ; #19 flag=1; i+; 8. #3 func(str) #5 while (*(str+num)!=0) num+; #9 char str10,*p=str; 9. #5 n=n/10; #6 while (!n); #12 scanf(“%ld”,&n); 10. #10 else if (xam) low=m+1; #11 else high=m-1;11. #6 a=1.0;#8 a/=i;#9 e+=a;12. #6 char *temp;#10 if(strcmp(

7、temp,namei)0)#12 printf(“%s n”, temp );13. #3 stri!=0#4 stri= 0 & stri=0&stri=9)#9 n2+; 15. #5 i=eps)#13 return (2*s);19. #3 long fun(char *p)#17 num+=pi-48;或 num+=pi-0;#29 printf(“%ldn”,n); /* 必须有%ld */20. #9 ajaj&aj#18 aj=bk21. #2 void printcol(int (*p)N, int row, int col)#6 printf(“tt%dn”,*(*(p+i

8、)+col);#14 while (colN-1);22. #2 (char *s) #4 (*p) 或(*p!=0) 或(*p!=0) #9 gets(x);23. #6 t=n%10;#10 n/=10;#11 while(n); 或 while (n!=0);24. #4 for (j=0;jnum,&p1-score); head=NULL; while (p1-num!=0) n=n+1; if (n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct st *)malloc(LEN); scanf(%u,%d,&p1-num,&p1-sco

9、re); p2-next=NULL; return (head); 2. 对N个数据,降序排列并输出 #define N 10 main() int aN=1,5,0,3,-6,9,-8,7,2,4; int i,j,t; for (i=0;iN-1;i+) for (j=i;jN;j+) if (aiaj) t=ai; ai=aj;aj=t; for (i=0;iN;i+) printf(%3d,ai); 3. 有二维数组如下 1 2 3 4 5 6 7 89 10 11 12 现要求输入某元素所在的行和列,将其后的所有元素输出,必须用指针技术编程。例如,输入2 ,3 表示从第二行第三列元素

10、7开始输出其余元素 7 8 9 10 11 12main() int a34=1,2,3,4,5,6,7,8,9,10,11,12; int *p,i,j; scanf(%d%d,&i,&j); p=&ai-1j-1; for (;p&a00+12;p+) printf(%5d,*p); 4. 将一个磁盘文件的数据读到一个链表中去,队列或堆栈不论。要求如下:l 磁盘文件放在A盘的一级目录(即一级子文件夹)abc下,文件名是flile.datl 链表结点的结构为struct node char val; strct node *next; l 工作用的指针名为 h 和 p#include #in

11、clude struct node char val; struct node *next;struct node *create(FILE *fp) struct node *p,*h; char d; h=NULL; fp=fopen(a:abcfile.dat,r); while (!feof(fp) fread(&d,2,1,fp); p=(struct node *)malloc(sizeof(struct node); p-val=d; p-next=h; h=p; fclose(fp); printf(n); printlk(h); return h;printlk(struct

12、 node *h) struct node *p; printf(print link.n); p=h; while (p) printf(%c,p-val); p=p-next; main() struct node *h,*p; FILE *fp; fp=fopen(rd_data,r); if (fp=NULL) printf(read data error!n); exit(0); h=create(fp); printlk(h); exit(0);5.试写一个函数(函数名为f),以十进制正整数n为整型参数,函数的返回值是n的位数(例:278是三位数)。要求循环结构需用do_while

13、控制结构。int f(long n) int c=0; do c+; n=n/10; while (n); return c; main() long n; int num; scanf(%ld,&n); num=f(n); printf(%ld has %d numbersn,n,num); 6将一个nn的矩阵行列转置后输出,转置功能由函数reverse实现,试编程。#define N 3 void reverse(float xN,int n) int i,j; float t; for (i=0;in;i+) for (j=i;jn;j+) t=xij; xij=xji; xji=t;

14、void prtable(float xN,int n) int i,j; for (i=0;in;i+) for (j=0;jn;j+) printf(%10.4f,xij); printf(n); main() int i,j; float aN=1,2,3,4,5,6,7,8,9; prtable(a,N); reverse(a,N); prtable(a,N);7.试用do_while控制结构,计算下列级数的和s=1+3+5+.+(2i-1)+ .当累加到某项s的值大于100时,该项及以后各项不再累加,结束循环求和。main() int s,i; s=0; i=0; do i+; s

15、+= 2*i-1; while ( s+(2*i+1) = 100 ); printf(sum=%d,i=%dn,s,i); 8编程序用于将原字符串按某种规律变成密码:即将字母A 变成E,B变成F,;W变成A,X变成B,Z变成D,对小写字母也是如此编码,标点符号、空格维持原状。#define N 4#include decode() char c; while (c=getchar()!=n) if (c=a&c=A&cZ&cz) c=c-26 ; printf(%c,c); main() decode(); 9. 编写一个带参数宏trans(F),输入一个华氏温度F,要求输出摄氏温度c。公式

16、是,取2位小数。#define trans(F) (F-32)*5/9.0main() float c,F; scanf(%f,&F); c=trans(F); printf(F=%.2f, c=%.2fn,F,c);10. 对非线性方程f(x)=0,可用牛顿迭代公式 求解,要求方程式用函数名f,导函数f名为f1,迭代函数名为g,假设函数f和f已有定义,编写出迭代函数g(x),精度小于10-5。float g(float x) float xi; do xi=x-f(x)/f1(x); x=xi; while (fabs(f(x)=1e-5); return x;11. 编写ptstar无参数

17、函数打印如下图形,顶端的*定位在屏幕第25字符位置,编出完整程序,写出对ptstar的调用。 * * * *printstar() int i,j; printf(n); for (i=0;i4;i+) for (j=0;j=23-i;j+)printf( ); for (j=0;j2*i+1;j+) printf(*); printf(n); main() printstar(); 12. 试写一个函数(函数名为f),以正整数n为整型参数,函数的返回值是下列级数的前n项的和 1+3+5+.+(2n-1)要求用递归法计算级数的和。long f(int n) if (n=1) return 1;

18、 else return (2*n-1+f(n-1);main() long sum; int n; scanf(%d,&n); sum=f(n); printf(sum=%ldn,sum);13. 本程序的主程序为:main() int b=24,12,14,32,22,34; printf(%dn, f(b,6);其中调用函数f,该函数有二个参数,依次为整型数组a和整型数n,函数的返回值是数组的a0到an-1中的最大值。试写出函数f。要求循环结构需用for控制结构。int f(int a,int n) int i,max=-32768; for (i=0;imax) max=ai; ret

19、urn max;main() int b=24,12,14,32,22,34; printf(%dn, f(b,6);14. 编写sort函数,对N个int型数据降升序排列,该函数有2个形参:int a和int n,采用“冒泡法”或“选择法”可任选。void sort(int a,int n) /* 选择法 */ int i,j,sub,temp; for (i=0;in-1;i+) sub=i; for (j=i+1;jaj) sub=j;if(i!=sub) temp=ai; ai=asub; asub=temp; 15. 编写一个名为prime的函数,以m为整型参数,判别m是否为素数。若

20、m为素数,则返回1;若m不是素数,则返回0。#include int prime(int m) int i,k; k=(int)sqrt(m); for( i= 2; i = k ; i+) /* 或 i k) return 1; /* 或 i=m */ else return 0;16. 编写一个名为cntatoz的函数,输入一行字符,统计其中的英文字母个数(大小写不论)。#include main() char ch; int n=0; printf(Input a string:n); while(1) ch=getchar(); if(ch=n) break; if(ch=a&ch=A

21、&ch=Z) n+; printf(Number of letters is %d.n,n);17. 设有3名学生成绩存在如下的数组中::int score34=65,57,70,60,90,87,50,81,90,65,100,98编程输出有成绩低于60分的某学生所有成绩(按C语言的规则,允许第0行)。main() void search(float (*p)4,int n); float score34=65,57,70,60,58,87,90,81,90,99,100,98; search(score,3);void search(float (*p)4,int n) int i,j,f

22、lag; for (j=0;jn;j+) flag=0; for (i=0;i4;i+) if (*(*(p+j)+i)60) flag=1; if (flag=1) printf( No.%d fails,his scores are : n,j+1);for (i=0;i= eps);return s;19. 试用for 控制结构,求数组aN的前k(k = N )个元素的最大值和最小值。将统计结果分别存于变量max和min中。float max,min; void mmai(int a,int k) int i;max=min=a0;for(i=1;ik,i+) if (maxai) mi

23、n=ai;20. 输入10个数,输出这10个数中仅出现一次的数如输入:12 36 72 36 87 99 87 87 12 35则输出:72 99 35main() int a10,i,j; for ( i = 0; i 10; i+ ) scanf(%d, &ai ); for ( i = 0; i 10; i+ ) for ( j = 0; j = 10 ) printf( %d , ai ); 21. 试设计一个函数,它能求出两个整型数的和与积,同时,再编写一个主程序main,调用上述函数以验证该函数的功能与正确性。void test(int a, int b, int *ps, int

24、 *pt) *ps = a + b; *pt = a * b;main() int a, b, s, t; scanf( %d%d, &a, &b ); test( a, b, &s, &t ); printf( %d %dn, s, t );22. 输入若干非0实数,直到输入0时停止,要求输入的实数最多不超过20个,统计其中正数的个数,负数的个数。#include “stdio.h”main() int n,posn,negn;double a;n=posn=0; printf(“Input real numbers:n”);scanf(“%lf”,&a);while(a!=0&n0) po

25、sn+;n+; if (n=a&ch=A&ch= 1.0e-7) u = u/n; e = e+u; n = n+1; printf(“e=%8.6fn”, e);25. 定义一个带参数的宏,其功能是求一个数的绝对值。#define ABSX(x) (x)0 ? 1*(x) : (x) 或类似26. 求出11000之间“水仙花数”。要求的水仙花数是个三位数,它的各位数字之和等于该数本身,例如:153=13+53+53,所以153是个水仙花数。#include main() int i,j,k,num; for (i=1; i=9; i+) for (j=0; j=9; j+) for (k=0

26、; k=9; k+) num=pow(i,3)+pow(j,3)+pow(k,3); if (num=i*100+j*10+k) printf( %5d,num); 27. 应用递归算法求某数a的平方根。求平方根的迭代公式如下: =#include #include double fun(double a,double x0) double x1,y; x1=(x0+a/x0)/2.0; if (fabs(x1-x0)=1e-5) y=fun(a,x1); else y=x1; return y;main() double x; printf(Enter x: ); scanf(%lf,&x)

27、; printf(The square root of %lf is %lfn,x,fun(x,1.0);28. 将十进制正整数m转换成k(2=k=9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制的表示是1000)。#include void fun(int m,int k) int aa20,i; for (i=0; m; i+) aai=m%k; m/=k; for ( ; i; i-) printf(%d,aai-1);main() int b,n; clrscr(); printf(Please enter a number and a base:

28、n); scanf(%d%d,&n,&b); fun(n,b); printf(n);29. 求s=aaaa-aaa-aa-a(此处 aaaa表示n个a,a和n的值在1至9之间)。例如,若a=3,n=6,则以上表达式 为s=-33333-3333-333-33-3,其值是:。a和n是fun 函数的形参,表达式的值作为函数值传回main函数。#include long fun(int a,int n) int j; long s=0,t=0; for (j=0; jn; j+) t=t*10+a; s=t; for (j=1; jn; j+) t=t/10; s=s-t; return s;ma

29、in() int a,n; clrscr(); printf(nPlease enter a and n: ); scanf(%d%d,&a,&n); printf(The value of function is: %ldn,fun(a,n);30. 编写函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为时,t中的数为642。#include void fun(long s,long *t) long s1=10; s/=10; *t=s%10; while (s0) s=s/100; *t=s%10*s1+*t; s1=s1*10;

30、main() long s,t; clrscr(); printf(n Please s: ); scanf(%ld,&s); fun(s,&t); printf(The result is: %ldn,t);31.编写函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上的各元素之和,返回此和数。#include #define M 5int fun(int n,int xxM) int i,j,sum=0; printf(n The %d x %d matrix:n,M,M); for (i=0; in; i+) for (j=0; jn; j+) printf(%4d,xxij);

31、 printf(n); for (i=0; in; i+) sum+=xxii+xxn-i-1i; return sum;main() int aaMM=1,2,3,4,5,4,3,2,1,0,6,7,8,9,0,9,8,7,6,5,3,4,5,6,7; clrscr(); printf(n the sum of all elements on 2 diagnals is %d.,fun(M,aa);32. 编程,对输入的字符串s,删除其中的所有空白字符(包括tab字符、回车符及换行符)。输入字符串时用“#”结束输入。#include #include #include void fun(char *p) int i,t; char c80; for (i=0,t=0; pi; i+) if (!isspace(*(p+i) ct+=pi; ct=0; strcpy(p,c);main() char c,s80; int i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁