江苏省计算机二级C语言试题笔试 - (5)

更新时间:2024-03-13 12:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

江苏省二级C语言考试

一、选择题(本题共20道小题,共40分。) 1. 有下列程序 #include main() { union { int k; char i[2]; }*s,a; s=&a;

s->i[0]=0x39;s->i[1]=0x38; printf(\}

输出结果是

A)3839 B)3938 C)380039 D)390038

2. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf(\

为了把100和765.12分别赋给i和f,则正确的输入为 A)100<空格>765.12<回车> B)i=100,f=765.12<回车> C)100<回车>765.12<回车> D)x=100<回车>,y=765.12<回车>

3. 设已有定义: char *st=\下列程序段中正确的是 A) char a[11], *p; strcpy(p=a+1,&st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st);

D) char a[], *p; strcpy(p=&a[1],st+2);

4. 设j为int型变量,则下面for循环语句的执行结果是 for(j=10;j>3;j--) { if(j%3)j--; --j;--j; printf(\}

A)6 3 B)7 4 C)6 2 D)7 3

5. 以下程序的输出结果是 main() {

int i,k,a[10],p[3]: K=5;

for (i=0;i<10;i++) a[i]=i; for (i=0;i<3;i++) p[i]=a[i*(i+1)]; for (i=0;i<3;i++) k=p[i]*2; printf(\}

A)20 B)21 C)22 D)23 6. 若有以下说明:

int w[3][4]o={{0,1},{2,4},{5,8}}; int(*p)[4]=w; 则数值为4的表达式是

2A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]

7. 若k是int型变量,且有下面的程序片段: k=-3

if(k<=0) printf(\else printf(\上面程序片段的输出结果是

A) #### B) &&&& C) ####&&&& D) 有语法错误,无输出结果

8. 以下程序运行后,输出结果是 main( ) {

int y=18,i=0,j,a[8]; do {

a[i]=y%2;i++; y=y\\2; } while(y>1=1); for(j=i-1;j>=0;j--) printf(\,a[j]); printf(\}

A)10000 B)10010 C)00110 D)10100 9. 以下叙述中不正确的是

A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量

10. 请读程序: #include func( int a, int b) { int c; c=a+b; return c; } main()

{ int x=6, y=7, z=8, r; r=func( x--,y==,x+y),z--); printf(\}

上面程序的输出结果是

A) 11 B) 20

11. 以下程序的输出结果是 # include main() { int a=2,c=5;

printf(\ }

A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d

12. 设a=1,b=2,c=3,d=4,则表达式:a

13. 执行以下程序后,y的值是 main ( )

C) 21

D) 31

{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y + = * (p + x); printf(\ }

A) 17 B) 18 C) 19

14. 下面四个选项中,全是不合法的用户标识符的是: A、A P_0 do B、float la0 _A C、b-a goto int D、_123 temp INT 15. 以下程序的输出结果是 main( )

{ int n=4;

while(n--)printf(\,--n); }

A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0 16. 设有如下的变量定义: int i=8,k,a,b; unsinged long w=5 double x=1,42,y=5.2

则以下符合C语言语法的表达式是

A)a+=a-=(b=4)*(a=3) B)x%(-3); C)a=a*3=2 D)y=float(i)

17. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 main( ) { int x;

scanf(\

if(x + + >5) printf(\

else printf(\ }

D) 20

A) 7和5 B) 6和3 C) 7和4 D) 6和4

18. 若有以下定义: char a;int b; float c;double d;

则表达式a*b+d-c值的类型为

A)float B)int C)char D)double 19. 设有以下定义:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*prt)[3]=a,*p=a[0];

则下列能够正确表示数组元素a[1][2]的表达式是 A) *((*prt+1) [2]) B) *(*(p+5)) C) (*prt+1)+2 D) *(*(a+1)+2)

20. 给出以下定义: char x[]=\

char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为

A)数组X和数组Y等价 B)数组x和数组Y的长度相同

C)数组X的长度大于数组Y的长度 D)数组X的长度小于数组Y的长度

二、填空题(每空1分,共10分。)

1. 假定p所指对象的值为25,p+1所指对象的值为46,则执行\;\语句后,p所指对象的值为___________。

2. 如果变量定义有:int a=9,c=8;则表达式(――a!=c++)?――a:++c的值为________。

3. 假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 __________。

4. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应scanf(\

调用语句的数据输入形式是__________

5. 若x=5,y=10,则x>y和x<=y的逻辑值分别为________和_______。

6. C语言提供三种逻辑运算符,按优先级高低它们分别是_________, ________,_________。 7. 空字符串的长度是__________。 三、判断题(本题共10道小题,共10分。)

1. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数( ) 2. 函数中的局部变量都是动态存储( )

3. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( ) 4. 函数的定义可以嵌套,但函数的调用不可以嵌套( ) 5. do-while循环中,根据情况可以省略while( ) 6. 形参时虚拟的,不占用存储单元( )

7. 用户若需要调用标准库函数,调用前必须重新定义( )

8. 全局变量使得函数之间的\耦合性\更加紧密,不利于模块化的要求( ) 9. 在实际编程中,do-while循环完全可以用for循环替换( ) 10. if语句,switch语句可以嵌套,而且嵌套的层数没有限制( )

四、程序填空(本题共5道小题,每题4分,共20分。) 1. 编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。 #include main() {

int n,s,sum=0; scanf(\ for(int i=1;i<=n;i++) {

____________; for(int j=1;j<=i;j++) _____________; sum+=s;

}

printf(\}

2. 若输入3个整数3,2,1,则下面程序的输出结果是____________。 #include void sub( n,uu) int n, uu[ ]; { int t;

t=uu[n--]; t+=3*uu[n]; n=n++; if(t>=10)

{ uu[n++]=t/10; uu[n]=t;} else uu[n]=t; } main( )

{ int i, n, aa[10]={0,0,0,0,0,0} scanf( \for(i=1; i

3. 以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data 域不放数据,表空的条件是ph->next = = NULL). #include

struct list { int data;struct list *next;}; _________creatlist() { struct list *p,*q,*ph; int a;

ph=(struct list *) malloc(sizeof(struct list));

p=q=ph; printf(\

scanf(\while(a!=-1)

{ p=(struct list *)malloc(sizeof(struct list)); p->data=a; q->next=p; _________=p; scanf(\ p->next='\\0'; return(ph); } main()

{ struct list *head; head=creatlist();}

4. 以下函数的功能是:求x的y次方,请填空。 double fun( double x, int y) { int i; double z;

for(i=1, z=x; i

5. 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空. #include\#include\main()

{ char str[81],*sptr; int i;

for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\\n') break;

}

str[i]=__________; sptr=str;

while(*sptr) putchar(*sptr__________); }

五、编程题(本题共2道小题,共20分。)

1. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

2. 编写一函数fun,实现矩阵(3行3列)的转置(即行列互换)

江苏省C等级考试(一)

一、选择题(本题共20道小题,共40分。) 1. A 2. B 3. A 4. B 5. B 6. D 7. D 8. B

10

9. D 10. C 11. D 12. D 13. C 14. C 15. A 16. A 17. A 18. D 19. D 20. C

二、填空题(每空1分,共10分。) 1. 26 2. 10 3. a+i或*(a+i) 4. 10,12,410.34 5. 0 ,1 6. ! , && , || 7. 0

三、判断题(本题共10道小题,共10分。)1. 错 2. 错 3. 对 4. 错 5. 错 6. 错

11

7. 错 8. 对 9. 对 10. 错

四、程序填空(本题共5道小题,每题4分,共20分。) 1. s=0 , s+=j 2. 2 7 2 1 或2721 3. struct list * , q 4. x

5. '\\0' 或0 , ++

五、编程题(本题共2道小题,共20分。) 1. main() {

static int k[10]; int i,j,n,s;

for(j=2;j<1000;j++) { n=-1; s=j;

for(i=1;i { if((j%i)==0) { n++; s=s-i; k[n]=i; } } if(s==0)

12

{

printf(\ for(i=0;i printf(\ printf(\ } } }

2. #include #include

int fun(int array[3][3]) { int i,j,t; for(i=0;i<2;i++) for(j=i+1;j<3;j++)

{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;} } main() { int i,j;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; clrscr(); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\printf(\}

fun(array);

printf(\for(i=0;i<3;i++)

13

{for(j=0;j<3;j++) printf(\printf(\} }

14

本文来源:https://www.bwwdw.com/article/30l8.html

Top