C语言模拟试题3

C语言复习题三

一、单项选择

1.下列程序执行后的输出结果是()。

(A)G (B)H (C)I (D)J

main( )

{ int x = …f … ; printf ( “ % c \n “, …A? + ( x –… a … + 1 )) ; }

2. 以下程序的输出结果是

main()

{ int a=3; printf("%d\n",a+(a-=a*a) ); }

(A) -6 (B)12 (C) 0 (D) –12

3. 若有以下定义和语句:

int x=010,y=0x10,z=10; printf("%d,%d,%d\n”,x,y,z);

则输出结果是( ).

(A) 8,16,10 (B) 10,10,10 (C) 8,8,10 (D) 8,10,10

4.以下程序的运行结果是( )。

(A) 2 0 (B)3 1 (C) 3 2 1 (D) 2 1 0

main()

{int n = 4 ;

while( n--) printf(“%d ”, -- n ) ;

}

5.将字符串str2复制到str1中,应用使用()。

A.str1=str2 B.str1=str2

C.strcpy(str1,str2) D.strcpy(str2,str1)

6.定义字符数组“char a[20],b[20];”后,正确的输入语句是()。

A.gets(a,b); B.scanf(“%c%c”,a,b);

C.scanf(“%s%s”,&a,&b) D.gets(a);gets(b);

7.已知函数fun的定义如下, 则以下说明正确的是()。

void fun(int a)

{ ………… }

A.函数fun没有返回值。 B.调用函数fun,将不再返回主调函数。

C.函数fun的返回值类型不确定。 D.调用函数fun,不需要传递参数。

8.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是()。

A.extern B.auto C.static D.register 9.宏定义#define div(a,b) a/b的引用div(x+5,y-5)替换展开后是()。

A.(x+5)/y-5 B. x+5/y-5; C. x+5/(y-5) D. (x+5)/(y-5); 10.若有如下定义,则下列表达式错误的是( )。

int a[10], *p=a,j=2, k=4,x;

A. p[j++]=a[--k];

B. x=a[p-a];

C. a=p+1;

D. *p++=a[k++];

11.假如指针p已经指向变量a,则&*p相当于( )。

A.a

B.*p

C.&a

D.**p

12.下面程序段的输出是:( )。

int a,b,*p1,*p2; a=3;b=3; p1=&a;p2=&b;

if (*p1==*p2) printf(“%d,%d”,a*b,*p1=*p2*2);

else printf(“%d,%d”,a+b,*p1=*p2+2);

A. 18,6

B.8,5

C. 9,6

D.6,5

13.若有以下说明和语句,且0<=i<10,则( )不是数组元素的值。

int a[]={1,2,3,4,5,6,7,8,9,0},*p=a,i;

A. *(a+i)

B. a[p-a]

C. p+i

D. *(&a[i])

14.若共用体变量a定义为“union data{char ch;int x;}a;”,则不正确的语句是()。

A.a={‘x’,10};

B.a.x=10;a.x++;

C.a.ch=’x’;a.ch++;

D.a.x=10;a.ch=’x’;

15.对于“union data{char a1; int a2; float a3;}yy;”,sizeof(yy)的值为()。

A.4

B.5

C.6

D.7

16.下列说法中正确的是()。

A. 用typedef可以产生新的数据类型。

B. 用typedef既可以声明新的类型名,又可以定义变量。

C. 用typedef不能定义新的数据类型,但可以定义变量。

D. typedef只是用来声明新的类型名,不产生新的数据类型,也不可以定义变量。17.执行“ struct work{int num; int age; char name[20]}tom;”后,错误语句是()。

A scanf(“%d,%d,%s”,&tom);

B scanf(“%d”,&tom.num);

C scanf(“%d”,&tom.age);

D scanf(“%s”,http://m.wendangku.net/doc/de3c3fe7524de518964b7dee.html);

18.能将文件位置指针fp移到距离文件开头100个字节位置的函数是()。

A. fseek(fp, 100L, 0);

B. fseek(fp, 100L, 2);

C.fseek(fp, 100L, 1); D. fseek(fp, -100L, 1);

二、判断正误

1.C语言程序是由函数构成的,任何C语言程序至少包含一个main()函数。

2.C语言中任何变量必须先定义,后使用。

3.字符串函数strlen返回包括字符串结束标志(ASCII为0的字符)在内的全部的字符个数。

4.定义数组”int a[4][5];”, 此数组的20个元素中下标最大的元素是a[4][5]。

5.以下定义的str1和str2完全等价。

char str1[ ]= “abcdef”;

char str2[ ]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’};

6.任何被调函数中都要至少包含一个return语句。

7.如果函数值的类型与“return(表达式);”语句中的表达式的值类型不同,则以函数值的类型为准。

8.凡在定义时不加类型说明的函数,一律自动按整型处理。

9.函数的递归调用是指在调用一个函数的过程中,出现直接或间接地调用该函数本身的现象。

10.数组名作函数的实参和形参时,是把实参数组的起始地址传给形参数组,两个数组共占同一段内存单元。

11.若定义数组a[2][3],则a+1和*(a+1)表示同一个地址。

12.某函数的形参为一个数组名,则调用函数时只能用数组名做对应的实参,不能用指针变量做对应的实参。

13.共用体内的成员可以是结构体变量,结构体内的成员也可以是共用体变量。

14.若有“int a=7,b=12,c=a&b;”,则变量c的值是4。

15.若有“int a=14,b=15,c=a^b; ”,则变量c的值是1。

16.在读写文件以前,应该先打开文件,而使用结束以后,必须关闭文件。

17.当已存在一个文件data.txt时,执行函数fopen(data.txt”, “r+”)的功能是:打开文件data.txt,可以读取文件内容、写入新的内容。

18. 语句“fprintf(fp, “%d,%5.2f”,a,b);”中的fp是文件名称。

三、阅读程序,说明每个程序的作用,并回答问题

1.

main( )

{ int a,b,c,t;

scanf(“%d,%d,%d”,&a,&b,&c);

if (a>b) {t=a;a=b;b=t;}

if (a>c) {t=a;a=c;c=t;}

if (b>c) {t=b;b=c;c=t;}

printf(“%3d,%3d,%3d”,a,b,c);

}

运行时输入9,13,7,输出什么?

2.

main( )

{ int a,b; char c;

scanf(“%d,%d”,&a,&b);

if (a>b) c=?*?;

else if (a=b) c=?#?;

else c=?$?;

printf(“%c\n”,c);

}

运行时输入-36,-18,输出什么?

3.

main( )

{int chj,num;

scanf(“%d”,&chj); num=chj/10;

switch(num)

{case 10:

case 9: printf(“A\n”);break;

case 8: printf(“B\n”);break;

case 7:

case 6: printf(“C\n”);break;

default :printf(“D\n”);

}

}

运行时输入100,输出什么?

运行时输入75,输出什么?

运行时输入39,输出什么?

4.

main( )

{int n,sum=0;

for (n=100;n<=1000;n++)

{if (n%10==3 && n%3!=0)

sum=sum+n;

else

continue;

if (sum>=500)

break;

}

printf(“%d,%d\n”,sum,n);

}

运行程序,输出什么?

5.

main( )

{int n,m; char k=……;/*k的值是空格*/

for (n=1;n<=7;n=n+2)

{for (m=1;m<=10-n;m++)

printf(“%c”, k);

for (m=1;m<=n;m++)

printf(“%c%c”, 64+n ,k);

}

}

运行程序,输出什么?

6.

# define N 4

main()

{char str[N][20]; int i,j,k1,k2,k3,k4;

k1=k2=k3=k4=0;

for (i=0;i

for (i=0;i

for (j=0; str[i][j]!=’\0’;j++)

if (str[i][j])>=’a’&& str[i][j])<=’z’) k1++;

else if (str[i][j])>=’A’&& str[i][j])<=’Z’) k2++;

else if (str[i][j])>=’0’&& str[i][j])<=’9’) k3++;

else k4++;

printf(“%d,%d,%d,%d\n”, k1,k2,k3,k4);

}

运行时依次输入下面4个字符串,输出什么?

STUDY hard

3456 $$##

AABBprogram

**** 987

7.

int max,min;

void maxmin(int b[][4])

{int i,j,k;

max=min=b[0][0];

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

for (j=0;j<4;j++)

{ if (b[i][j]>max) max=b[i][j];

if (b[i][j]

}

}

main()

{ int a[3][4]={{9,15,60,55},{2,67,85,99},{95,76,46,90}}; maxmin(a);

printf("MAX value is %d\n",max);

printf("MIN value is %d\n",min);

}

运行程序,输出什么?

8.

# include "stdio.h"

main( )

{int m; char t,s1[30];

gets(s1);

scanf("%c",&t);

m=han(s1,t);

if (m==strlen(s1)+1)

printf("not found");

else

printf("%c at %d,in %s",t,m,s1);

}

int han(char s2[],char r)

{char *q; int b=0;

q=s2;

while(*q!='\0')

{if (*q==r)

{printf("%c\n",*q);b++;break;}

b++;q++;

}

return(b);

}

运行时先输入ASDFGH,回车后再输入D,输出什么?

运行时先输入abcdefgh,回车后再输入h,输出什么?

运行时先输入AEBUFWQM,回车后再输入D,输出什么?

9.

# include "stdio.h"

{ char str1[20],str2[20];

int i,n=0,b[20]={0};

gets(str1); gets(str2);

n=han(str1,str2,b);

puts(str1);puts(str2);

printf("%d\n",n);

for(i=0;i<20;i++)

if (a[i]!=0) printf("%d ",i);

}

han(char *p1,char *p2,int a[])

{int k,m;

for(k=0;*p1!='\0';k++,p1++,p2++)

if(*p1==*p2) {m++; a[k]=1;}

return(m);

}

运行时先输入abefxy,回车后再输入abrtxygh,输出什么?

10.

struct student

{int num;

char name[20];

float score;

};

main()

{ void select(struct student *p);

int i;

struct student stu[3]={{1,"AAA",65},{2,"BBB",78},{3,"CCC",89}} ;

select(stu);

}

void select(struct student *p)

{ int k,shu; struct student *q;

scanf("%d",&shu);

for(q=p,k=0;k<3;k++,q++)

if (shu==q->num)

{printf("%s,%f\n", q->name,q->score);

return;

}

printf(“not find !”); return;

}

运行时输入2,输出什么?

运行时输入5,输出什么?

四、程序填空

1.程序的作用是:随机从键盘输入的两个整数,将大的赋给a, 将小的赋给b。输出a和b。

{ int x,y,a,b;

scanf(“%d,%d”,&x,&y);

if (x>=y) {_____________}

else {b=x; a=y;}

printf(“%d,%d”,a,b);

}

运行时输入213951,321427,输出什么?

2. 程序的作用是:随机从键盘输入的10个整数,计算它们的平均值.

main( )

{ int i=1,n; float sum=0;

while (i<=10)

{ scanf(“%d”,&n);

sum=sum+n;

________;

}

printf(“%f”,sum/10);

}

3. 程序的作用是:将从键盘依次输入的8个英文字母按照从小到大的顺序排列,然后输出。# define N 8

main( )

{int i,j,t; char a[N];

for(i=0;i

scanf(“%c”,&a[i]) ;

for(i=0;i

for(_________;j

if (a[i]>a[j])

{t=a[j];a[j]=a[i];a[i]=t;}

for(i=0;i

printf(“%c, ”, a[i]) ;

}

五、编写程序

1、使用数组和循环编写:输入10个整数,求其中所有偶数的平均值,然后输出该平均值。

2、使用循环编写:求1/2+3/4+5/6+…前100项的和。

3、使用循环编写:输入一串由字母和数字组成的字符串,分别统计其中大写字母的个数、小写字母的个数、数字的个数。

4、使用循环编写:已知a数组的N个元素已经按降序排列好了,从键盘输入一个数b,将数b插入a数组中,使插入后的N+1个数仍按降序排列。

相关推荐
相关主题
热门推荐