




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上中南大学现代远程教育课程考试复习题及参考答案C语言程序设计一、单项选择题若以下各题所有库函数都可以合法使用,且变量定义如下:int m=5, i=3,j=2,*p, a=8,b=0;int arr10=0,1,2,3,4,5,6,7,8,9,td 3=1,2,3,4,5,6;float x=2.5,y=3.0;double z=0; long n=1;char c=A,ch20=a,b,c,0,d,0;struct student int num; char name20; float score; struct student *next;st1,st2,*ps;
2、FILE *fp; 1若将3和10从键盘输入给变量a、x,输入语句为scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(表回车): A a=3,x=10 B 3,10 C 3 10 D 3,10.02. 以下不是死循环的语句是:A for ( ; ;y+=i+); B while(a) y+=i+ ;C do y+=i+while (a>0);D for (b=0;(c=getchar()!=n);)b+;3.若p=arr;正确的语句是: A *p=arr10; B *p=arr2*a; C p=arr5; D pi=arr0;4.若ps=&st1
3、;则下面描述正确的是: A ps->num与st1->num等价。 B ps.num与st1.num等价。 C ps->num与num等价。 D ps->num与st1.num等价。5.语句printf(“%d",a<i>j);的输出结果是:A 1 B 0 C 8 D都不对 6.表达式 j/i+a%i+x 的值是:A 6 B 4.5 C 6.0 D 5.5 7.表达式 b|a+i&&i<j 的值是:A 不确定 B 0.0 C 1 D 08.若执行语句 a=b+=3*j+(int)x;则b的值为:A 1 B 8 C 0 D 8.
4、59. 若执行语句 a=b>j ?+i : i+;则a与i的值分别为:A 4 ,4 B 3 ,4 C 4 ,3 D 3 ,3 10.if (a<b) if (c=d) x=8;else x=1;表示的逻辑关系是: 8 a<b 且c=d 8 a<b 且c=dA x= B x= 1 a<b 且cd 1 ab且c=d 8 a<b 且c=d 8 a<b 且c=dC x= D x=1 ab 1 a<b 11.将字符串“Wan Ming”输入数组ch中,正确的是: A、scanf(“%s”,ch) B、scanf(“%s”,&ch) C、ch=“Wa
5、n Ming” D、gets(ch)12. 执行语句printf(“%c”,td10+A)的结果是: A、A B、B C、D D、E13下列关于main()函数说法正确的是A、 C语言程序总是从main()开始执行 B、 C语言程序可以没有main()函数C、C语言程序可以包含多个main()函数,但必须在不同的模块中 D、C语言程序中main()函数不能有形式参数14下列关于函数说法正确的是A、 C语言程序的函数内还可定义其他的函数B、 C语言程序的函数内不可再定义其他的函数C、 C语言程序的函数不能自己调用自己D、 C语言程序中只有同一源文件中的函数才能有调用与被调用关系15若#defin
6、e squ(x) x*x 执行语句printf(“result=%d”,squ(i+j);结果为:A、result=36 B、36 C、result=11 D、1116. 若#define squ(x) (x)*(x) 执行语句printf(“result=%d”,squ(i+j);结果为:A、result=36 B、result=17 C、result=11 D、result=2517C语言对宏命令叙述正确的是A、 宏替换占用运行时间B、 编译程序对宏命令的处理是在对源程序中其它成分编译之前进行的C、 宏命令的处理是在程序执行时进行的D、 宏命令的处理是在程序连接时进行的18. 若执行语句a
7、- =a+=a*=10;a的值为:A、0 B、-10 C、-100 D、10019若执行语句p=arr; printf(“%d”,*(p+i);输出结果为A、0 B、2 C、3 D、120若执行printf(“%s”,ch);结果为:A、abc B、abc C、abcd D、abc0d21.若对数组进行初始化:char carr =s,t,u,d,e,n,t,barr =”student”;则正确的是A、carr与barr长度相同 B、carr比barr长C、carr与barr相同 D、carr比barr短22若有说明语句int (*p)N;则p是A、N个指向整型变量的指针 B、可指向有N个整
8、型元素的一维数组的指针C、指向N个整型变量的函数指针 D、有N个指针元素的一维指针数组23若有说明语句int *f( );则函数f是A、f是一个指向整型变量的数组指针 B、f返回一个整型数据C、f是一个指向整型变量的函数指针 D、f 返回一个整型指针,指向函数本身24若函数f定义如下:void f(char *d, char *s) while ( *d+=*s+);函数f的功能是:A、串比较 B、串复制 C、求串长 D、串反向25表达式100+a+a+x*z的值的数据类型为A、int B、float C、double D、char26若要动态申请一个double型内存单元,正确的语句是A、p
9、d=double malloc(sizeof(double) B、pd=( * double)malloc(sizeof(double)C、pd=double * malloc(sizeof(double) D、pd=(double *)malloc(sizeof(double)27若要从键盘上输入67892到变量n中,正确的语句是A、scanf(“%lf”,&n); B、scanf(“%ld ”,&n); C、scanf(“%lf ”,n); D、scanf(“%d ”,&n); 28判断字符变量c是否不为小写英文字母的正确表达式是A、a<=c <=z B
10、、c>= a && c<=zC、ac z D、c<a | c>z 29下列每组表达式被执行后,结果完全等价的是A、 !(b= =0)与 !(!b ) B、b=(a=4,4*5) 与 b=a=4,4*5C、float(i/j) 与 float i/j D、0<x<100 与 x>0 && x<10030.表达式(m&1)=(m%2)的值是A、 0 B、无法确定C、 1 D、以上都不对 31数学式ln2x+asin(60°)的C语言表达式是A、log(2*x)+a*sin(60) B、ln(2*x)
11、+a*sin(60/180*3.14)C、ln(2*x) +a*sin(60) D、log(2*x)+a*sin(3.14*60/180) 32. 要打开一个已经存在的非空文件file用于修改,则正确的语句是A、fopen(“file”,”r+”) B、fopen(“file”,”w”) C、fopen(“file”,”a+”) D、fopen(“file”,”r”) 33. 若打开文件时发生错误,则fopen()函数的返回值是A、1 B、0 C、不确定 D、没有返回值 34. 调用函数fseek(fp,-25L,2),其操作结果是A、 文件位置指针从文件开始处前移25字节 B、文件位置指针从
12、文件结尾处后移25字节 C、文件位置指针从文件当前位置处前移25字节 D、文件位置指针从文件当前位置处后移25字节35. 能正确表示a和b同时为正或同时为负的逻辑表达式是A、 (a>=0|b>=0)&&(a<0|b<0)B、 (a>=0&&b>=0)&&(a<0&&b<0)C、 (a*b>0&&(a*b<=0)D、 a*b>036. 若x=y=z=1;表达式(x-|+y)&&(z+)执行后,x,y,z的值分别为:A. 0,1,1 B.
13、 0,1,2 C. 0,2,1 D. 0,2,237.下列变量的初始化,不正确的是:A. int x,y=5; B. float x=y=3.5; C. char s=”a”; D. int a3=1,0,9;38. 可以代替while(x!=0)中的条件x!=0的是:A. x B. !x C. x=1 D. x!=139.有关函数参数,下列说法不正确的是:A. 实参和形参是不同的变量; B. 实参可以将数据传给形参;C. 形参可以将数据传给实参; D. 实参和形参必须个数相等,类型一致。40.为避免嵌套的条件语句if-else的二义性,C语言规定else与if的配对原则是:A. 同一行上的未
14、配对if B. 缩排位置相同的未配对if C. 它之前最近的未配对的if D. 它之后最近的未配对if41.对于一个二维数组,以下几种方法中,不能正确表示i行j列元素的是:A.tdij B. *(tdi+j) C. *(*(td+i)+j) D.*(td+i+j)42.下面语句段不是死循环的是:A. for(i=1;i+) B. k=0; s=s+i; do k+; while(k>0); C. i=0; D. a=1; while(1) while(a<10) i+; if(a>5) continue; if(i=20) break; a+; 43.下列字符串中,可以用作变
15、量名的是:A. _out2 B. 12abc C. while D. stu&344. 表达式0<a<5和0<a&&a<5的值分别为:A. 0和0 B. 0和1 C. 1和0 D. 1和145.下列常数中,符合C语法规则的是: A. B. .5e2 C. 018 D. e346.以下为合法的整型常量的是: A. 027a B. 0.0 C. 0x4e3 D. 3×102 47.以下为合法的整型常量的是:A 3 B. 281 C. 5af D. 10148.以下为合法的实型常量的是: A. 1.5×102 B. 1e-5 C.
16、1e1.5 D. E+5 49.以下为合法的实型常量的是: A. B. .5 C. 025.3 D. 050.以下为合法的字符型常量的是: A. A B. 64 C. 啊 D. n51. 以下为非法的字符型常量的是:A. ok B. * C. A D.11152 以下为合法的变量定义的是: A. #define N 10 B. int a=12,b,c; float x,y,a=1.5;int a3*N; C. int m,f(x); D. char c,*pc=&c,n; 53以下为非法的变量定义的是:A char 21cn; B int k=0,*p=&k;C int a=
17、b=c=21; D static char4=”Good”; 54以下是合法的表达式的是:A. y=mn B. (x+y)+ C. x+y=8 D. putchar(A ) 55. 以下是非法的表达式的是: A. a+=b*c B. i=0,k=k+ C. k=0 D. !a|mn &&756下是非法赋值语句的是:Aa+b=0 B. pc=&x C. ps->name=”Tan Jing” D. static char4=G,o,o,d二、程序理解题(指出程序执行的结果)1 #include <stdio.h>main( ) int i,j,x=0;f
18、or (i=0;i<2;i+) x+;for (j=0;j<3;j+) if (j%2 ) continue; x+; x+; printf(“x=%dn”,x); 2. #include <stdio.h>main( ) int k=0,j,x=0;while (k<2) +x;for (j=0;j<3;j+) if (j%2 ) break; x+; k+; +x; printf(“x=%dn”,x); 3. #include <stdio.h>main()int a=2,b=7,c=5;switch (a>0)case 1:switc
19、h (b<0) case 1: printf(“$”);break; case 2: printf(“!”); break; case 0: switch (c= =5) case 0: printf(“*”);break; case 1:printf(“#”);break; default: printf(“%”); default: printf(“&”); printf(“n”); 4. main() int i,sum=0; for (i=1;i<=50;i+) sum+=i; if (sum>10) break; printf(“sum=%-5dn”,sum
20、); 5. 若输入字符串program时,下列程序输出为: #include <stdio.h>main() char str80;void prochar(char *str,char ch); scanf(“%s”,str); prochar(str,r); puts(str);void prochar(char *str,char ch) char *p; for (p=str;*p!='0'p+) if (*p=ch)*str=*p;(*str)+;str+; *str='0'6. #include <stdio.h> #incl
21、ude <string.h>main() int i,j,temp, d44=1,2,3,4,5,6,7,8,4,3,2,1,1,2,3,4;for (i=0;i<4;i+) for (j=0;j<i;j+) if (dij>dji) dji=dij; for (i=0;i<4;i+) printf("n"); for (j=0;j<4;j+) if (j>=i) printf("%6d",dij ) ; else printf("%6c",' ') ; 7. #incl
22、ude<stdio.h>main() int k; printf("n"); for (k=1;k<10;k+) switch(k%2) case 0: printf("#");break; case 1: k+=2;printf("*"); defalt: printf("n"); 8 int d=1; fun(int p) static int d=5; d+=p; printf("(f)%-4d",d); return (d); main() int a=3;
23、 printf("n(m)%d",fun(a*fun(d); 9. #include <stdio.h> main()char a26="sun","moon" int j,i,len2; for(i=0;i<2;i+) for (j=0;j<6;j+) if (aij='0') leni=j;break; printf("%8s:%dn",ai,leni); 10. int x=2,y=4;f1(int x) x+;y+; printf(“f1:x=%d,y=%dn”,x,
24、y);f2(int *y) x+;(*y)+; printf(“f2:x=%d,y=%dn”,x,*y); main() int y=6; f1(x);f2(&y); printf(“main:x=%d,y=%d”,x,y);三、程序填空题1.从键盘输入两个整数,按由大到小输出,程序如下: main( ) int a,b; ; scanf(“%d,%d”,&a,&b); if ( ) swap( ); printf(“%d,%d”,a,b);void swap(int * x,int * y) ; t= *x; ; *y=t; 2.输入任意多个十进制正整数,将其对应的二
25、进制数的各位反序,形成新的十进制数输出。当输入0时程序结束。例如:输入13,131101101111,输出11。#include <stdio.h>main() int x,y,m,t; printf(“Enter a integer:”);scanf(“%d”,&x);m=x;while ( ) y=0;do t=x%2; y= x=x/2; while ( );printf(“nOld integer is:%d,New integer is: %d”,m,y);printf(“Enter a integer:”);scanf(“%d”,&x); 3. 以下函数
26、creatlist用来建立一个带头节点的单向链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回。读入时字符以#表示输入结束(#不存入链表)。struct node char data; struct node *next; ; creatlist() struct node *head,*s,*r;char ch;head=(struct node *)malloc(sizeof(struct node);
27、160; r=head; ch=getchar(); while (ch!=# ) s=(struct node *)malloc(sizeof(struct node); s->data= ;r->next=s; ch=getchar(); r->next= ; ;
28、60; 4. 程序功能:输出10100之间的全部素数,每行显示5个。#include <stdio.h>main() int i, j, for(i=11; i<=100; i+=2) for(j=2; ; j+) if(i%j= =0) ; if( j >= i ) ;counter+;if( ) printf("n"); 5. 求菲波那契数列第n项的值。n由键盘输入。菲波那契数列的第一、二项为1,以后各项为前两项之和。即:f1=f2=1,fn=fn-1+fn-2#include <stdio.h>main() i
29、nt k,n,f1,f2,f; scanf( ) ; f1=f2=1; if ( ) f=1 ; else for ( ;k<=n;k+) f=f1+f2 ; f1=f2; ; printf("fibonacci number=%dn",f); 6从键盘上输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。 #include <stdio.h> main()int data,temp,k; static int a9=-10,2,4,8,10,15,25,50; printf("nEnter a data:"); scanf(
30、"%d",&data); ; for (k=8; ;k- -) if (ak<ak-1) ; ak=ak-1; ak-1=temp; else ; for (k=0; ;k+) printf("%7d",ak);7求1!+2!+9!+20!,程序如下: #include <stdio.h> main() float sum=0; int k; for (k=1; ;k+) sum+=jiecheng(k);printf( ,sum);float jiecheng(int n) int j; for (j=1; ; j+) t=t
31、*j; 8. 从键盘上输入一个整数字符串,将其转换为一个整数,如输入“-1234”转换为-1234。#include<stdio.h>#include<string.h>main()char s6; int n; gets(s); if (*s='-') n= ; else n=chnum(s); printf("%dn",n); int chnum(char *p) int num=0,k,len,j; len=strlen(p); for (; ;p+) k= ; j=(-len); while (j->0) ; num=n
32、um+k; ; 9以下程序从键盘输入10个不相同的数到数组a中,再输入一个数到x中,在a中查找与x值相同的元素所在的位置,填空完善该程序。main()int a11,x,i; printf("Input 10 integers:n"); for(i=1; ;i+) scanf("%d", ); printf("Input x:"); scanf("%d",&x); *a=x;i=10; while (x!=*(a+i) if ( ) printf("%6d's position is :%
33、3dn",x,i); else printf("%6d Not bee found !n",x); 10. 从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。 #include <string.h> main()int i=0,c52=0,m=0; char str80; printf("Input a string:"); scanf( ,str); while (stri) if (stri>='A' && ) cstri-'A'+;
34、 if (stri>='a' && stri <='z') ; i+; for (i=0;i<26;i+) if (ci) if (m%8=0) putchar('n');m+; printf("%c:%-d ",i+'A',ci); for (i=0;i<26;i+) if (ci+26)if (m%8=0) putchar('n');m+; printf("%c:%-d ", ,ci+26); 四、用波浪线标出错误,并在空白处改正(
35、不要重写程序)1. 从键盘上输入一个数,判断其是否为素数#include<stdio.h>main() int a,flag,k; scanf(“%d”,a);flag=1; for (k=2;k<i;k+)if (a/k=0) break;flag=0; if (flag=0); printf(“%d” is a prime number”,a);2. 计算分段函数的值 2-x 0x<1 1+x 1x<3 y= 2-0.5(x-3) 3x<6 x2 6x<10 #include <stdio.h>main() float x,y; pri
36、ntf("Input a data:"); scanf("%d",%x); if (x<0 && x>=10 ) printf("Input error!n"); else if (0x<1) y=2-x; else if (x<3) y=1+1/2x; else if (x<6) y=2-0.5*(x-3.0); if (x<10) y=x2; printf("x=%.2f,y=%.1fn",x,y); 3. 计算下列分段函数的值 x 64x<81 y=
37、x+4 49x<64 -1 25x<490 其它#include <stdio.h>main()int x; y ; scanf(“%d”, x ); switch ( sqrt(x) ) case 8: y=fabs(x);break; case 7: y=2/3x+4;break; case 5,6:y=+1 ; default: y=0; printf(“y=%.2f”,&y); 4. 将“computer”按逆序显示,程序如下: #include <stdio.h>main() char a=computer; void print(char
38、 *str) print(&a); void print(char *str) char *str ; int count ; if (*str!='0') while (*str) str+;count+; str - -; while(count- -)printf("%c", str);str+ ; 5求满足如下条件的最大自然数n.:12+22+32+n21000#include <stdio.h>;main()int n=s=0; while (s<=1000); n+; s+=s+n*n; print("n=%d
39、",n );_五、编程题1从键盘上输入不超过50个非0数,计算这些数的平均值并输出,输出高于平均值的数。输入0时结束。2计算 1+3. 回文是从前向后读与从后向前读都是一样的句子。编写一函数判断字符串是否为回文。字符串(少于80字符)从主函数中输入。4. 公鸡5元一只,母鸡3元一只,小鸡一元3只,100元买100鸡,求有多少中买法并输出所有可能的买法,。5求1000以内的完全数。一个整数如果正好等于它的因子之和(自身除外),则称该数是完全数。如6=1+2+3,所以6是完全数。6用下面的公式求的近似值,要求最后一项的绝对值小于10-4为止。公式为:/41-1/3+1/5-1/7+1/9
40、-1/11+题型题量及分值一、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号内。二、阅读程序,写出执行结果。三、程序填空题。四、程序改错题。用波浪线标出错误,在空白处改正(不得重写程序)。五、编写程序。参 考 答 案一、单项选择题 1. A 2. D 3. D 4. D 5. B 6. B 7. D 8. B 9. B 10. A 11.D 12.D 13. A 14.B 15.C 16 .D 17.B 18. A 19.C 20.B 21. D 22. B 23 .C 24 B 25.C 26.D 27.B 28 D 29 A 30.C 31.
41、D 32.A 33 . B 34. B 35. D 36.B 37.B 38.A 39.C 40.C41.D 42. C 43. A 44.C 45.D 46.C 47.B 48.B 49.B 50.D51. A 52. A 53.B 54. D 55. D 56.C二、程序理解题(指出程序执行的结果)1 x=82. 程序输出为:x=63. 程序输出为:#&4. 程序输出为: sum=1 sum=3 sum=6 sum=10 5当键盘输入program时,下列程序的输出: pogam6. 程序输出为: 1 5 4 46 7 82 347. 程序输出为: * #* #* 8. 程序输出为
42、: (f)6 (f)24 (m)249 . sun:3moon:4 10. f1:x=3 ,y=5 f2:x=3 ,y=7 main:x=3 ,y=7三、程序填空题1void swap(int * x,int * y); a<b; &a,&b; int t; *x= *y;2x!=0 、 y+2*t 、 x!=0 、 m=x;3. 以下函数creatlist用来建立一个带头节点的单向链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回。读入时字符以#表示输入结束(#不存入链表)。struct node
43、;char data; struct node *next; ;struct node creatlist() struct node *head,*s,*r;char ch;head=(struct node *)malloc(sizeof(struct node); r=head; ch=getchar(); while (ch!=# ) s=(stru
44、ct node *)malloc(sizeof(struct node); s->data= ch ;r->next=s;r=s; ch=getchar(); r->next= NULL ; return head; 4. 输出10100之间的全部素数,每行显示5个。#include <stdio.h>main() int i, j
45、, counter=0; for(i=11; i<=100; i+=2) for(j=2; j< i; j+) if(i%j= =0) break; if( j >= i ) printf("%8d",i); counter+;if(counter%5= =0) printf("n"); 5. 求菲波那契数列第n项的值。n由键盘输入。菲波那契数列的第一、二项为1,以后各项为前两项之和。即:f1=f2=1,fn=fn-1+fn-2#include <stdio.h>main() int k,n,f1,f2,f; scanf(&
46、quot;%d",&n) ; f1=f2=1; if (n<=2) f=1 ; else for ( k=3;k<=n;k+) f=f1+f2 ; f1=f2; f2=f; printf("fibonacci number=%dn",f); 6从键盘上输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。 #include <stdio.h> main()int data,temp,k; static int a9=-10,2,4,8,10,15,25,50; printf("nEnter a data:"
47、;); scanf("%d",&data); a8=data; for (k=8;k>0;k- -) if (ak<ak-1) temp=ak; ak=ak-1; ak-1=temp; else break; for (k=0;k<=8;k+) printf("%7d",ak);7求1!+2!+9!+20!,程序如下: #include <stdio.h> main() float sum; int k; float jiecheng(int n);sum=0;for (k=1;k<=20;k+) sum+=jiecheng(k);printf(“sum=%.1f”,sum);float jiecheng(int n) int j;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纪委监委舆情管理办法
- 企业安全知识培训讲师课件
- 2025年深入贯彻中央八项规定精神学习教育应知应会试题及答案
- 出租屋灭火安全培训课件
- 企业安全工作培训会课件
- 出海安全培训课件
- 无人机信号安全管控技术-洞察及研究
- 2025国家能源集团内蒙古上海庙发电有限公司煤炭买卖合同
- 企业安全培训资料模板课件
- 出口退税课件介绍
- 2023广东惠州市惠城区桥西街道办事处招聘治安队员、党建联络员、社区“两委”班子储备人选笔试通告笔试备考题库及答案解析
- 《现代汉语》(增订6版)笔记和课后习题(含考研真题)详解
- 碳水化合物计算2
- 2022年贵州省贵阳市中考语文试卷及答案
- 开学第一课课件-外研版七年级英语上册
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- “探究”测定某种食物中的能量实验报告单
- 羊奶的营养价值(课堂PPT)
- 最新海关AEO高级认证培训课件
- 食品工艺学夏文水课件
- 选矿厂安全风险分级管控表
评论
0/150
提交评论