省二C复习资料 下载本文

A)return语句中的表达式值的类型 B)调用该函数的主调函数类型 C)调用该函数时传递的实参类型 D)定义该函数时指定的函数类型 32. 若要说明a是整型变量,pa为指向a的整型指针变量,则下列选项中正确的是

_______。

A)int a,*pa=&a ; B)int a,pa=&a; C)int a,*pa=a D)int *pa=&a,a; 33. 设有int s[ ]={1,3,5,7,9},*p=s;,则下列选项中值为7的表达式是_______。

A)*p+2 B)*p+3 C)*(p+3) D)*(p+2) 34. 对于类型相同的两个指针变量之间,能进行的运算是_______。

A)% B)= C)! D)/ 35. 设有

struct student { char name[21]; int age; char sex;

}std={“Li Ming”,19,?M?},*p; p=&std;

则下列输出语句中错误的是_______。 A)printf(“%d”,(*p).age); B)printf(“%d”,p->age); C)printf(“%d”,std.age); D)printf(“%d”,p.age); 36. 设有

uion data

{ int i; char c; float f;}a; int b;

则下列语句中正确的是______。 A)a=1.6; B)a.c=?\\101?; C)b=a; D)printf(“%d\\n”,a); 37. 设有

typedef struct ABC

{ long a; int b; char c[2];}NEW; 则下列语句中正确的是______。 A)以上的说明形式非法 B)ABC是一个结构体变量 C)NEW是一个结构体类型名 D) NEW是一个结构体变量 38. 设有int x=28;,则执行语句printf(“%d\\n”,x>>2);后的输出结果为_______。

A)7 B)14 C)28 D)56 39. C语言中,根据数据的组织方式,文件可分为ASCII文件和_______。

A)二进制文件 B)只读文件 C)只写文件 D)随机文件 40. 以读写方式打开一个已存的文本文件data.txt,下列选项中正确的是_______。

A)FILE *fp;fp=fopen(“data.txt”,”rb”); B)FILE *fp;fp=fopen(“data.txt”,”w”); C)FILE *fp;fp=fopen(“data.txt”,”r”); D)FILE *fp;fp=fopen(“data.txt”,”r+”);

二、填空题(每空2分,共20分)

1. 结构化程序设计的三种基本结构分别是:顺序结构、 (1) 、循环结构。 2. 设有int a=65;,执行语句printf(“%x\\n”,a);后的输出结构是 (2) 。

3. 设有double x=56.789;,则执行语句printf(“%.2f\\n”,x);后的输出结果是 (3) 。 4. 设有int a=27;,则执行语句a%=4;后a的值是 (4) 。

46/48

5. 6. 7. 8.

设有int a[3][4]={{1,2},{0,1},{4,6,8,10}};,则a[1][1]+a[2][2]的值是 (5) 。 C标准库函数中,常用的字符串比较函数是 (6) 。

表示变量存储方式的关键字有auto、 (7) 、register和extern。 下列程序的输出结果是 (8) 。 #include void main( )

{ char s[ ]={”Computer”},*p=s; printf(“%c”,*p+5); }

9. 设有#define M(x) x*x,则M(1+2)的值是 (9) 。

10. 设有enum weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};,则

枚举元素Saturday对应的数值是 (10) 。

三、阅读理解题(每题4分,共20分)

1. 运行以下程序时从键盘输入2010,其运行结果是________________。

#include void main( ) { int year,leap=0;

scanf(“%d”,&year);

if((year%4==0&&year0!=0)||(year@0==0)) leap=1; if(leap==1) printf(“%d is a leap year!\\n”,year); else printf(“%d is not a leap year!\\n”,year);

}

2. 以下程序的运行结果为________________。

#include void main( ) { char ch=?c?; switch(ch)

{ case ?a?: case ?A?: case ?b?:

case ?B?:printf(“good!\\n”);break; case ?c?:

case ?C?:printf(“pass!\\n”);break; case ?d?:

case ?D?:printf(“warning!\\n”);break; default: printf(“error!\\n”); } }

3. 以下程序的运行结果为________________。

#include void main( )

{ char s[]=”I/love/C/Programming/”; int i,num;

num=0;

47/48

for(i=0;s[i]!=?\\0?;i++)

if(s[i]!=?/?&&s[i+1]= =?/?) num++; printf(“num=%d\\n”,num); }

4. 以下程序的运行结果为________________。

#include int f(int n) { int m;

if(n= =0||n= =1) m=3;

else m=n*n-f(n-2); return(m); }

void main( ) { int n=4,m; m=f(n);

printf(“n=%d,m=%d\\n”,n,m);

}

5. 以下程序的运行结果为________________。

#include void main( ) {

char a[]=”ABCDEFGH”,b[]=”abCDefGH”; char *p1,*p2; printf(“%s\\n”,a); printf(“%s\\n”,b);

for(p1=a,p2=b;*p1!=?\\0?;p1++,p2++) if(*p1= =*p2) printf(“%c”,*p1); printf(“\\n”);

}

四、编程题(共20分) 1.(6分)输入两个正整数a和b,如果a能被b整除,输出商,否则输出商和余数。 2.(7分)利用循环语句编写程序,计算s=1+11+111+1111+11111并输出结果。 3.(7分) 输入10位学生成绩,输出学生成绩及其所对应的名次。 例如,下面有10位学生的成绩及计算后对应的名次: 成绩 名次 90 5 85 8 90 5 95 2 80 9 88 7 70 10 100 1 95 2 95 2 其中“95分”排名第2,由于有3个“95分”,下一个较小的成绩“90分”则排名第5。 说明:算法及输出形式不限,相同的成绩及名次可以不重复输出。

48/48