9512.net
甜梦文库
当前位置:首页 >> 电子/电路 >>

C语言试题及答案3


《C 语言》课程综合复习资料
一、单选题
1. 在 C 语言中,字符型数据在内存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII 码

2. 在 C 语言中,十进制数 47 可等价地表示为 A) 2f B) 02f C) 57 D) 057

3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3

4. 设有定义语句:char str[][20]={"Beijing","中国石油大学"},*p=str; 则 printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 fun(int *p) { 该函数的返回值是 A)不确定的值 C)形参 p 中存放的值 6. C 语言中,函数返回值的类型是由 A)return 语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } B)形参 p 所指存储单元中的值 D)形参 p 的地址值 return *p; } D) 20

5. 已定义以下函数:

若以下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); D) void fun( 10 , 12.5 );

C) fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) B) char char

b[]={′H′,′e′,′l′,′l′,′o′,′!′}; b[10];b="Hello!";

第 1页

C) D)

char char

b[10]= "Hello!"; *str="Hello!";

9. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符 g 的表达式是 A) ps+3 B)s[3] C) ps[3] D) ps+=3,*ps

10. 当对两个字符串进行比较时,应该使用的函数是 A) strcat B) strcmp C) strcpy D) strlen

11. 若 i 为整型变量,则以下循环的次数是 for(i=2;i==0;)printf(“%d”,i--); A) 无限次 B) 0 次 C) 1 次 D) 2 次

12. 以下关于数组的描述正确的是 A) 数组大小固定,但是可以有不同类型的数组元素 B) 数组大小可变,但是所有数组元素的类型必须相同 C) 数组大小固定,所有元素的类型必须相同 D) 数组大小可变,可以有不同类型的数组元素 13. 以下能正确定义数组并正确赋初值的语句是 A)int N=5,b[N][N]; C)int c[2][]= {{1,2},{3,4}}; 14. 设有定义 A)5 15. 11 B)int a[1][2]={{1},{3}}; D)int d[3][2]={{1,2},{34}};

int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-2) , *(a+4) 的值是 B)1 9 C)5 9 D)有错误

已知 char b[5],*p=b; ,则正确的赋值语句是 A)b=“abcd” ; B)*b=“abcd”; C) p=“abcd”; D)*p=“abcd”;

16. 用数组名作为函数调用时的实参,则实际传递给形参的是 A)数组的第一个元素值 C)数组的首地址 17. 以下叙述中不正确的是 A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效 18. 当对两个字符串进行比较时,应该使用的函数是 B)数组中全部元素值 D)数组的元素个数

第 2页

A) strcat

B) strcmp m;char

C) strcpy c;float x;double

D) strlen y;则表达式 c+m*x/y 的值的

19. 有如下定义:long 类型是 A) long

B) char

C) float int

D) double

20. 假设已定义 char

c[8]= "test";

i; 则下面的输出函数调用中错误的是 printf("%c",c[i]); puts(c[i]);

A) printf("%s",c); C) puts(c)

B) for(i=0;i<8;i++) D) for(i=0;i<8;i++)

21. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符 g 的表达式是 A) ps+3 B) s[3] C) ps[3] D) ps+=3,*ps

22. 以下选项中不能正确赋值的是 A) char B) char C) char D) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; b[10];b="Hello!"; b[10]= "Hello!"; *str="Hello!";

23. 有以下函数定义: void fun( int n , double x ) { …… }

若以下选项中的变量都已正确定义并赋值, 则对函数 fun 的正确调用语句是_________。 A) fun( int y , double m ); B) D) k=fun( 10 , 12.5 ); void fun( 10 , 12.5 );

C) fun( 10 , 12.5 );

24.从变量的作用域来分,可分为全局变量和局部变量,形参是 A)局部变量 B)全局变量 C) 静态变量 D) 动态变量

二、读程序,写出程序的执行结果
1. #include <stdio.h> void main() { int x[]={1,2,3}; int s,i,*p=x; s=1; for(i=0;i<3;i++) s*=*(p+i);

第 3页

printf(“%d\n”,s); }

答案 6 2. #include <stdio.h> char fun(char *s) { if( *s >= ?a? && *s <= ?z? ) *s=*s-32; return *s; } void main() { char a[20]="Welcome",*p,ch; for(p=a;*p!=?\0?;p++) { ch=fun(p); putchar(ch); } } 答案 WELCOME 3. #include <stdio.h> void main() { int x=26587,x1,r,sum=0; x1=x; while(x>0) { r=x%10; sum+=r; x/=10; } printf( "Sum of the digits in %d is %d", x1,sum); }答案 Sum of the digits in 26587 is 28

第 4页

4.#include <stdio.h> int fun(int x) { int y=1; static int z=4; z+=1;++y; return(x+y+z) ; } void main() { int i; for(i=1;i<=3;i++) printf("%3d",fun(i)); } 8 10 12 5.#include <stdio.h> void main() { int x=3,y=4; int j; for(j=1 ; y>0 ; y -- ) printf(“j=%d\n”,j); } 运行结果:j=81 6.#include <stdio.h> void main() { int x,y; for(y=1,x=1; y<=20;y++) { if(x>=8) break; if(x%2==1){ x+=5; x-=3; } printf("x=%d, y=%d\n",x,y); continue ; } j=j*x;

第 5页

} 运行结果:x=8,y=4 7. #include <stdio.h> void main() { char x[]="language"; char *ptr=x; while(*ptr) { printf("%c\n",*ptr-32); ptr++; } } 运行结果:L A N G U A G E

8. #include <stdio.h> void main() { int x[]={5,6,7}; int s=1,i,*p=x; for(i=0;i<3;i++) s*=*(p+i); printf(“%d\n”,s); } 运行结果:210 9.#include <stdio.h>

第 6页

int fun(int x) { } void main() { int a=12; printf(“%d, %d\n”,a,fun(a)) } 运行结果:12,12 10. #include <stdio.h> void ex( ) { static int x=3 ; --x ; printf(“%d”,x) ; } void { main ( ) ; return(x>0 ? x : -x);

ex( ); ex( ); }

运行结果:21 11. #include <stdio.h> void main() { int i=0,a=0; while( i<20 ) { for(;;) if((i%10)= =0) break; else i- -; i+=11; a+=i; } printf("%d\n",a);

第 7页

} 32 12. #include <stdio.h>

void main() { int a[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}}; int i,j,row=0,colum=0,max; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d",max,row,colum); } max=10 ,row=1,colum=2 13. #include <stdio.h> int f(int b[], int m,int n) { int i,s=0; for(i=m;i<n;i+=2) s+=b[i] ; return s; } void main() { int x, a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,3,8); printf("%d\n",x); } 18 14. #include <stdio.h>

第 8页

void swap(int {

b[])

int *p,*p1,*p2; p1=&b[0] ;p2=&b[1]; p=p1; p1=p1+1; p2=p;

} void main() { int a[]={5,9}; printf("%d,%d\n",*a,*(a+1)); swap(a); printf("%d,%d\n",a[0],a[1]); } 5,9 15. #include <stdio.h> int b=3;

int fun(int *a) { b+=*a; return(b); } void main() { int a=2, b=2; b+=fun(&a); printf(“%d\n”,b); } 7 16. #include <stdio.h> void main() { int a[10],*p,*s,i; for(i=0;i<10;i++) scanf(%d”,a+i); if(*p>*s)s=p;

for(p=a,s=a;p-a<10;p++)

printf(“max=%d,index=%d\n”,*s, s-a);

第 9页

} 简述上列程序完成的功能:查找数组中最大值并记录元素下标

17. #include <stdio.h> void main() { int x,y; for(y=1,x=1; y<=20;y++) { if(x>=8) break; if(x%2==1){ x+=5; x-=3; } printf(“x=%d, y=%d\n”,x ,y); }运行结果:x=8,y=4 18. #include <stdio.h> #define N 3 void zz(int x[N][N]) { int i,j,t; for(i=0;i<N;i++) for(j=0;j<i;j++) { t=x[i][j]; x[i][j]=x[j][i]; x[j][i]=t; } } void main() { int str[N][N]={1,2,3,4,5,6,7,8,9}, i,j; continue ; }

zz(str); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf(“%3d”,str[i][j]) ; printf("\n") ; } } 运行结果:1 4 7

第 10页

2 3

5 6

8 9

19.#include <stdio.h> void main ( ) { char a[20]= "abcXYZ", c ; int i, j;

j= strlen(a)-1 ; for (i=0; { j>i; i++,j--) }

c=*(a+i); *(a+i)=*(a+j); *(a+j)=c;

puts(a); }运行结果:ZXYcba 20. #include <stdio.h> int a=100,b=200; void f( ) { printf(“%d,%d\n”,a,b); a=1;b=2; } void main() { int a=5,b=7 ; f( ); printf(“%d,%d\n”, a,b) ; }运行结果:5,7 21. #include <stdio.h> int d=1 ; int fun(int p) { static int d=3 ; d+=p; printf("%3d" , d) ; return(d) ; }

第 11页

void main( ) { printf("%3d\n" , fun(2+fun(d))) ; } 运行结果:5,12,12

22.#include <stdio.h> void main() { char x[]="123456789",*p=x ; int i=0; while(*p) { if(i%2==0) *p='*’; p++; i++; } puts(x); } 运行结果:*2*4*6*8* 三、编程题 1.编程输入实数 x,计算下面函数的值,并输出 y 值。 x
2

x<1

y=

3x-1

1 ? x ? 10

x 5

x > 10

程序结果:#include <stdio.h> void main() { int x,y; scanf(“%d”,&x); if(x<1)

第 12页

y=x*x; else if(x>=1&&x<=10)y=3*x-1; else y=x/5; printf(“x=%d,y=%d\n”,x,y); }

2.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字 符的个数,并输出统计结果。 程序结果:#include<stdio.h> #include<conio.h> void main() { char c; int m=0,n=0,a=0,b=0; printf("请输入任意字符串.\n"); while((c=getchar())!='\n') { if((c>=65&&c<=90)||(c>=97&&c<=122)) { m=m+1; } else if(c==32) { n=n+1; } else if(c>=48&&c<=57) { a=a+1; }
第 13页

/*主函数*/

/*定义变量*/

/*输入提示部分,提示输入*/

/*循环语句,将由键盘输入的非'\n'字符赋值给 c*/

/*第一个选择语句,统计英文字符个数*/

/*第二个选择语句,统计空格字符的个数*/

/*第三个选择语句,统计数字字符的个数*/

else b=b+1; } printf("%d%d%d%d",m,a,n,b); getch(); }

/*统计其他字符的个数*/

/*输出最后统计结果*/ /*输出结果后屏幕停留*/

3. 编写打印如下图形的程序 (必须用循环语句实现) * * * * * * * * * * * * * * * 程序结果:#include<stdio.h> main( ) { int n,i,j; printf(“n=%d\n”); scanf(“%d”,&n); for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++) Printf(“ for(j=0;j<i+1;j++) Printf(“*”); printf(“\n”); } ”);

4. 编写程序,从键盘上任意输入 20 个整数,存入一个数组中,然后输出这些数中最大数 及其下标以及最小数及其下标 程序结果:#include<stdio.h> void main( )
第 14页

{ int a[20],i,max,min,num1,num2; for(i=0;i<20;i++) {printf(“input the number%d:”,i); scanf(“%d”,&a[i]); printf(“\n”); } for(i=0;i<20;i++) { If(a[i]<= a[0]) {min=a[i]; Num1=i; } Else {max=a[i]; num2=i; } } printf(“min=%d,num1=%d\n”,min,num1); printf(“max=%d,num2=%d\n”,max,num2);}

5.

编程打印下列的杨辉三角形。 (设 8 行) 1 1 1 1 1 1 1 2 3 4 5 1 3 6 10 1 4 10 1 5 1

程序结果:#include <stdio.h>

第 15页

#define N 11 void main() { int i,j,a[N][N]; for(i=1;i<N;i++) { a[i][1]=1; a[i][i]=1; } for(i=3;i<N;i++) for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<N;i++) {for(j=1;j<=i;j++) printf(“%6d”,a[i][j]); printf(“\n”); } printf(“\n”); } /*输出数组各元素的值*/ /*从第 3 行开始处理*/ /*使第 1 列元素的值为 1*/ /*使对角线元素的值为 1*/ /*数组为 11 行 11 列,0 行 0 列不用*/

6.求分段函数的值

?1 ? e x ? Y ? ?1 ? ln x 2 ?

X ? 0 X ? 0 X ? 0

程序结果:#include<stdio.h> #inclde<math.h> main() { double x ,y; scanf(“%lf”,&x); if(x<0) y=log(x*x); else if(x==0) y=1;

第 16页

else y=1+exp(x); printf(“Y=%lf”,y); }

7.编程打印以下图形 (要求用循环控制语句实现) & & & & & & & & & & & & & & & & & & & & &

程序结果#include<stdio.h>
main() {

int i,j; for(i=1;i<=6;i++) { for(j=1;j<=6-i;j++) printf(" "); for(j=1;j<=i;j++) printf("& "); printf("\n"); } }:

《C 语言》课程综合复习资料答案
一、单选题:
1D 2D 3A 4A 5D 6B 7C 8B 9A 10B 11B 12C 13D 14A 15C 16C 17D 18B

第 17页

19D

20D

21A

22B 23C

24A

二、读程序写出程序执行结果:
1、6 2、WELCOME 3、Sum of the digits in 26587 is 28 4、8 10 12 5、j=81 6、x=8,y=4 7、L A N G U A G E 8、210 11、32 13、18 17、x=8,y=4 18、1 2 3 4 5 6 7 8 9 19、ZYXcba 20、5,7 21、5,12,12 9、12,12 10、21

12、max=10,row=1,colum=2 14、5,9 15、7 16、查找数组中最大值并记录元素下标

22、*2*4*6*8* 三、编程题 1、#include <stdio.h> void main() { int x,y; scanf(“%d”,&x);
第 18页

if(x<1) y=x*x; else if(x>=1&&x<=10)y=3*x-1; else y=x/5; printf(“x=%d,y=%d\n”,x,y); } 2. #include<stdio.h> #include<conio.h> void main() { char c; int m=0,n=0,a=0,b=0; printf("请输入任意字符串.\n"); while((c=getchar())!='\n') { if((c>=65&&c<=90)||(c>=97&&c<=122)) { m=m+1; } else if(c==32) { n=n+1; } else if(c>=48&&c<=57) { a=a+1; } else b=b+1; /*统计其他字符的个数*/ /*第三个选择语句,统计数字字符的个数*/ /*第二个选择语句,统计空格字符的个数*/ /*第一个选择语句,统计英文字符个数*/ /*输入提示部分,提示输入*/ /*定义变量*/ /*主函数*/

/*循环语句,将由键盘输入的非'\n'字符赋值给 c*/

第 19页

} printf("%d%d%d%d",m,a,n,b); getch(); } 3. #include<stdio.h> main( ) { int n,i,j; printf(“n=%d\n”); scanf(“%d”,&n); for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++) Printf(“ for(j=0;j<i+1;j++) Printf(“*”); printf(“\n”); } ”); /*输出最后统计结果*/ /*输出结果后屏幕停留*/

4. #include<stdio.h> void main( ) { int a[20],i,max,min,num1,num2; for(i=0;i<20;i++) {printf(“input the number%d:”,i); scanf(“%d”,&a[i]); printf(“\n”); } for(i=0;i<20;i++) { If(a[i]<= a[0]) {min=a[i];

第 20页

Num1=i; } Else {max=a[i]; num2=i; } } printf(“min=%d,num1=%d\n”,min,num1); printf(“max=%d,num2=%d\n”,max,num2);}

5. #include <stdio.h> #define N 11 void main() { int i,j,a[N][N]; for(i=1;i<N;i++) { a[i][1]=1; a[i][i]=1; } for(i=3;i<N;i++) for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<N;i++) {for(j=1;j<=i;j++) printf(“%6d”,a[i][j]); printf(“\n”); } printf(“\n”); } /*输出数组各元素的值*/ /*从第 3 行开始处理*/ /*使第 1 列元素的值为 1*/ /*使对角线元素的值为 1*/ /*数组为 11 行 11 列,0 行 0 列不用*/

第 21页

6.7 略

第 22页



更多相关文章:
C语言试题及答案3.pdf
C语言试题及答案3 - 《C 语言》课程综合复习资料 一、单选题 1. 在 C
C语言程序设计试题及答案(三).doc
C语言程序设计试题及答案(三) - C 语言程序设计试题及答案(三) 学号: 学
C语言程序设计试卷3(含答案).pdf
C语言程序设计试卷3(含答案) - 注意事项:1、本试卷共 13 页,满分为 1
C语言编程题及答案3.pdf
C语言编程题及答案3 - C 语言编程题及答案(三) 猜数游戏 在这个实验中,我
C语言试题3.doc
C语言试题3 - 第一 题:选择题(1-18 题每题 1 分;19-22 题每题 3 分; 总分数:30) 1: 对于 C 语言源程序,以下叙述错误的是: B)函数之间是平等...
C语言例题与参考答案3.pdf
C语言例题与参考答案3 - C/C++语言 第三次上机作业参考答案 1.排序 使用起泡法选择法对 10 个整数实现递减排序。 起泡法: #include <stdio.h> main( ) ...
C语言期末考试试卷及答案3.pdf
C语言期末考试试卷及答案3 - 一、单项选择题 (本大题共 20 小题,每小题
2018年3月国家计算机二级C语言模拟试题及答案.doc
2018年3月国家计算机二级C语言模拟试题及答案_计算机软件及应用_IT/计算机
c语言试卷套.doc
c语言试卷套 - C语言中运算对象必须是整型的运算符是(B)。 A.= B.
C语言程序设计试题3及答案.doc
C语言程序设计试题3及答案 隐藏>> 一.单项选 择题 1. 设 i
C语言上机考试试题3.doc
C语言上机考试试题3 - C 语言上机考试试题 语言上机考试试题 试题-3 20
c语言程序设计试题3.doc
c语言程序设计试题3 - C 语言试题-3 一、选择题 ( 评分标准 20 分,
C语言试卷3.doc
C语言试卷3 - 淮海工学院 题号 得分 一、选择题(本题共 20 道小题,共
C语言程序设计试题及答案.doc
C语言程序设计试题及答案 - C 语言程序设计试题及答案(三) 学号: 学习中心
C语言网络教育试卷试卷和答案3_图文.pdf
C语言网络教育试卷试卷和答案3 - ……… …密………封……… …线… ……….
11年3月二级C语言试题及答案.doc
11年3月二级C语言试题及答案 - 一、 选择题 (1)下列关于栈叙述正确的是
2010年3月二级c语言笔试真题及答案.doc
详细设计属于 A)定义阶段 定义阶段 D)上述个阶段 上述个阶段 B)开发阶段 开发阶段 C) 维护阶段 (7) 数据库管理系统中负责数据模式定义的语言是 A)数据...
2010年3月计算机二级考试c语言试题及答案.doc
2010年3月计算机二级考试c语言试题及答案 - 2010 年 3 月计算机等级
2010年3月计算机二级考试c语言试题及答案.doc
2010年3月计算机二级考试c语言试题及答案 - 2010 年 3 月计算机等级
C语言考试试题三套.doc
C语言考试试题三套 - C语言辅导试题一 一、单项选择题(每小题 2 分,共 20 分) 1.C 语言程序的三种基本结构是顺序结构、选择结构___结构。 A、...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图