四川省C语言(30次)等级考试真题 下载本文

while(i

n=n+strlen(argv[i]); i++; }

printf(\}

若该程序生成的可招待文件名为2-4.exe,运行时输入命令行: 2-4 123 45 67

则程序的运行结果是( 29 )。 29 (A) 3 (B) 5 (C) 7

5. 读程序,回答问题。

# include int a=2; int f(int n) {

static int a=3; int t=0; if(n%2)

{ static int a=4; t+=a++; } else

{ static int a=5; t+=a++; }

return t+a++; }

void main() {

int s=a,i;

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

程序运行结果是( 30 )。 30 (A)26 (B) 28 (C) 29

6. 读程序,回答问题。

# include struct mod { int a,b,c;}; void main()

{ struct mod st[3]={{1,2,3},{4,5,6},{7,8,9}}; int total;

total=st[0].a+st[1].b;

(D) 11

(D) 25

四川省计算机二级考试第二十七次C与C++语言笔试试卷 共11页 第5页

printf(\}

程序的运行结果是( 31 )。 31 (A) total=5 (B) total=6 (C) total=7 (D) total=8

7. 读程序,回答问题。

# include pic(int len,char c) { int k;

for(k=1;k<=len;k++) putchar(c); }

void main() {

int i=4,j; pic(27,' '); j=i;

pic(i+2*j-2,'*'); putchar('\\n'); for(j-=2;j>=0;j--) {

pic(30-j,' '); pic(i+2*j,'*'); putchar('\\n'); } }

程序的运行结果是( 32 )。 32 (A) (B) (C) (D) * ********** **** **********

*** ********** ****** ********

***** ********** ******** ****** ******* ********** ********** ****

8. 以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符集资转储到链表的各个结点中,请选择填空。

# include struct node { char data;

struct node *next; }

( 33 ) CreatList(char *s) { struct node *h,*p,*q;

h=(struct node *)malloc(sizeof(struct node)); p=q=h;

while(*s!=NULL)

{ p=(struct node *)malloc(sizeof(struct node));

四川省计算机二级考试第二十四次C与C++语言笔试试卷 共11页 第6页

p->data=( 34 ); q->next=p; q=( 35 ); s++; }

p->next=NULL; return h; }

void main()

{ char str[]=\ struct node *head; head=CreatList(str); ………… }

33 (A) char * (B) char (C)struct node 34 (A) *s (B) s (C) *s++ 35 (A) p->next (B) p (C) s

9. 读程序并回答问题。

# include # include void fun(char *s,char *t) {

char k; k=*s; *s=*t; *t=k; s++;t--;

if(*s) fun(s,t); }

void main() {

char str[10]=\ p=str+strlen(str)/2+1; fun(p,p-2);

printf(\}

程序中的fun函数被调用的次数是( 36 )。 36 (A) 2 (B)3 (C) 4 程序的运行结果为( 37 )。 37 (A) abcdefg (B)defgabc (C) acegbdf

10. 读程序并回答问题。

# include void main() {

(D) struct node * (D) *(s)++ (D) s->next

(D) 5 (D) gfedcba

四川省计算机二级考试第二十七次C与C++语言笔试试卷 共11页 第7页

int m[12],k; int *p[3],sum=0; for(k=0;k<12;k++) { m[k]=2*k; if(k<3)

p[k]=m+2*k*k; }

for(k=0;k<3;k++)

sum+=(*(p+k))[4-k]; printf(\}

① 程序的运行结果是( 38 )。 38 (A) 18 (B) 28 ② int *p[3]定义的是( 39 )。 39 (A) 指针数组

(C) 指向一维数组的指针

11. 以下程序的输出结果是( 40 )。

# include

# define FUN(x,y) x

int x=5,y=10,z;

z=10*FUN(x+y,x*y); printf(\}

40 (A) 100 (B) 150

(C) 38 (D) 8

(B) 指向函数的指针 (D) 指向指针的指针

(C) 15 (D) 60

注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上 ② 每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空 ( 每空2分,共30分 )

1. 下面函数的功能是将一个字符串逆序存放,请填空。

# include # include void fun(char str[]) {

① ; int i,j;

for(i=0,j=strlen(str); ② ;i++,j--) {

m=str[i];

str[i]= ③ ; str[j-1]=m;

四川省计算机二级考试第二十四次C与C++语言笔试试卷 共11页 第8页