文档库

最新最全的文档下载
当前位置:文档库 > C语言基础知识部分模拟试题

C语言基础知识部分模拟试题

C语言基础知识部分模拟试题

[1] 下面叙述中正确的是__B__。

A.调用函数时的实参只能是有确定值的变量

B.return( )语句中的括号中,可以是变量,常量或有确定值的表达式

C.C语言中,函数调用时实参变量和形参变量间的参数传递方式都不是值传递

D.实参和形参若类型不匹配,编译时将报错

[2]下面叙述中错误的是__A__

A.主函数中定义的变量在整个程序中都是有效的

B.在其它函数中定义的变量在主函数中也不能使用

C.形式参数也是局部变量

D.复合语句中定义的函数只在该复合语句中有效

[3]下列说法中正确的是__A__。

A.带参数的宏定义中的参数是没有类型的

B.宏展开将占用程序的运行时间

C.宏定义命令是C语言中的一种特殊语句

D.使用#include命令包含的头文件必须以“.h"为后缀

[4] 完成将文件指针fp重新指向文件的开头位置的函数是__D__。

A.feof(fp)

B.ferror(fp)

C.fseek(fp)

D.rewind(fp)

[5] 下面说法中错误的是_D___。

A.以二进制形式输出文件,则文件的内容与内存中完全一致

B.定义:int a=123;若以ASCII文件的形式存放,变量a将在磁盘上占三个字节

C.C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的

D.C语言的文件中,数据以记录为界线,便于区分

[6]. C语言中,switch后的括号内表达式的值可以是__D__。

A.只能为整型

B.只能为整型,字符型,枚举型

C.只能为整型和字符型

D.任何类型

[7.] 若函数的形参为一维数组,则下列说法中正确的是_B___。

A.调用函数时的对应实参必为数组名

B.形参数组可以不指定大小

C.形参数组的元素个数必须等于实参数组的元素个数

D.形参数组的元素个数必须多于实参数组的元素个数

[8]. 系统的标准输出文件是_D___。

A.键盘

B.硬盘

C.内存

D.显示器

[9]. C语言的switch语句中case后__B__。

A.只能为常量

B.只能为常量或常量表达式

C.可为常量或表达式或有确定值的变量及表达式

D.可为任何量或表达式

[10]. 下面叙述中正确的是__C__。

A.对于用户自己定义的函数,在使用前必须加以说明

B.说明函数时必须明确其参数类型和返回类型

C.函数可以返回一个值,也可以什么值也不返回

D.空函数在不完成任何操作,所以在程序设计中没有用处

[11]. 整型变量x=1,y=3,经下列计算后,x的值不等于6的是_C___。

A. X=(x=1+2,x*2)

B. X=y>2?6:5

C. X=9-(--y)-(--y)

D. X=y*4.8/2

[12.] 下面叙述中正确的是___B_。

A.全局变量在定义它的文件中的任何地方都是有效的

B.全局变量在程序的全部执行过程中一直占用内存单元

C.同一文件中的变量不能重名

D.使用全局变量有利于程序的模块化和可读性的提高

[13.] 下列变量中合法的是__C__。

A. B.C.Tom

B. 3a6b

C. _6a7b

D. $ABC

[14]. 下面叙述中错误的是__C__。

A.函数的形式参数,在函数未被调用时就不被分配存储空间

B.若函数的定义出现在主调函数之前,则可以不必再加说明

C.若一个函数没有return语句,则什么值也不会返回

D.一般来说,函数的形参和实参的类型应该一致

[15]. 下面说法中错误的是__D__。

A.共用体变量的地址和它各成员的地址都是同一地址

B.共用体内的成员可以是结构变量,反之亦然

C.在任一时刻,共用体变量的各成员只有一个有效

D.函数可以返回一个共用体变量

[16]. C语言函数的隐含存储类别是__D__。

A.static

B.auto

C.register

D.extern

[17]. C程序的基本结构单位是__C__。

A.文件

B.语句

C.函数

D.表达式

[18]. C语言的if语句中,用作判断的表达式为__A__。

A.任意表达式

B.逻辑表达式

C.关系表达式

D.算术表达式

[19]. 下列说法中正确的是__A__。

A.在进行宏定义时,可以引用已经定义过的宏名

B.在宏名作用域内所有与宏名相同的字符串都将被替换

C.宏展开时若出现语法错误,将立即报错

D.宏名必须是大写字母

[20]有宏定义:#define E 2.718则编译预处理时将E替换成一个__D__。

A.单精度常量

B.单精度变量

C.双精度变量

D.字符串

[21] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是_D___。

A.aa数组元素的值分别是"abcd"和"ABCD"

B.aa是指针变量,它指向含有两个数组元素的字符型一维数组

C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D.aa数组的两个元素中各自存放了字符'a'和'A'的地址

[22]. 任何一个C语言的可执行程序都是从__B__开始执行的。

A.程序中的第一个函数

B.main( )函数的入口处

C.程序中的第一条语句

D.编译预处理语句

C简单程序部分模拟试题

[1]. 以下程序的执行结果是___B_____。

main()

{ int x = 0, s = 0;

while( !x != 0 ) s += ++x;

printf( "%d ",s );}

A.0

B.1

C.语法错误

D.无限循环

[2]. 若有下面的说明和定义,则sizeof(struct aa)的值是_____D___。struct aa

{ int r1;double r2;float r3;

union uu { char u1[5];

long u2[2];} ua;

}mya;

A.30

B.29

C.24

D.22

[3]. 以下程序的执行结果是_____B___。

main()

{ int a = 1, b = 10;

do { b -= a;a++;} while( b-- < 1 );

printf( "a=%d,b=%d \n ",a,b );}

A.a=3,b=11

B.a=2,b=8

C.a=1,b=-1

D.a=4,b=9

[4]. 以下程序的执行结果是______D__。

main()

{ static int x[]={0,1,2,3,4,5,6,7,8,9 };

int s, i, *p;

s=0;p=&x[0];

for( i=1;i<10;i+=2 ) s+=*( p + i );

printf( "%d ",s );}

A.55

B.16

C.18

D.25

[5]. 以下程序的执行结果是_____C___。

void num()

{ extern x, y;int a = 15, b = 10;

x = a - b;y = a + b;}

int x , y ;

main()

{ int a = 7, b = 5;

x = a + b;y = a - b;num();printf( "%d , %d ",x,y);}

A.12 , 2

B.不确定

C.5 , 25

D.1 , 12

[6]. 以下程序的执行结果是_____D___。

main()

{ static int x[]={0,1,2,3,4,5,6,7,8,9 };

int s, i, *p;

s=0;p=&x[0];

for( i=1;i<10;i+=2 ) s+=*( p + i );

printf( "%d ",s );}

A.55

B.16

C.18

D.25

[7]. 以下程序的执行结果是______C__。

main()

{ int num = 0;

while( num <= 2 ) { num++;printf( "%d,",num );} }

A.0,1,2,

B.1,2,

C.1,2,3,

D.1,2,3,4,

[8]. 以下程序的执行结果是_______B_。

main()

{ int x = 2, y = -1, z = 2;

if( x

if( y<0 ) z = 0;else z += 1;

printf( " %d",z );}

A.3

B.2

C.1

D.0

[9]. 设有以下说明和定义,则输出语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是_____B___。

typedef union

{ long i;int k[5];char c;} DATE;

struct date

{ int cat;DATE cow;double dog;} too;

DATE max;

A.26

B.30

C.18

D.8

[10]. 若有下面的说明和定义,则sizeof(struct aa)的值是_____D___。

struct aa

{ int r1;double r2;float r3;

union uu { char u1[5];

long u2[2];} ua;

}mya;

A.30

B.29

C.24

D.22

[11]. 以下程序的执行结果是_____B___。

main()

{ int y = 2;

do { printf( "*" );y--;} while( !y == 0 );}

A.*

B.**

C.***

D.空格

[12]. 以下程序的输出结果是___B_____。

main()

{ int a[]={1,2,3,4,5,6}, *p=a;

*(p+2)+=2;

printf("%d,%d\n",*p,*(p+2));}

A.0,5

B.1,5

C.0,4

D.1,4

[13]. 以下程序的执行结果是____B____。

increment()

{ static int x=0;x+=1;printf("%d " , x );} main()

{ increment();increment();increment();}

A.1 1 1

B.1 2 3

C.0 1 2

D.0 0 0

[14]. 以下程序的执行结果是______D__。

main()

{ int w = 1, x = 2, y = 3, z = 4;

w =( w < x ) ? x : w;

w =( w < y ) ? y : w;

w =( w < z ) ? z : w;

printf( "%d " , w );}

A.1

B.2

C.3

D.4

[15]. 以下程序的输出结果是____B____。

main()

{ int y=30;prt(&y);}

prt(int *x)

{ printf("%d,%d\n",*x,++*x);}

A.30,30

B.31,31

C.30,31

D.31,32

[16]. 以下程序的输出结果是_____A___。

void fun(int a, int b, int c)

{ a=456;b=567;c=678;}

main()

{ int x=10, y=20, z=30;

fun(x, y, z);

printf("%d,%d,%d\n", z, y, x);}

A.30,20,10

B.10,20,30

C.456,567,678

D.678,567,456

[17]. 循环语句for(a=0,b=0;a<3 && b!=3;a++,b+=2) a++;___C_____

A.是无限循环

B.循环次数不定

C.循环2次

D.循环4次

[18]. 以下程序的执行结果是_____D___。

main()

{ static char a[80] = "AB" , b[80] = "LAMP" ;int i = 0;

strcat( a , b );

while( a[i++] != '\0' ) b[i] = a[i];

puts( b);}

A.LB

B.ABLAMP

C.AB

D.LBLAMP

[19]. 执行下列程序段后,m的值是__D______。

int w=2,x=3,y=4,z=5,m;

m=(w

m=(m

m=(m

A.4

B.3

C.5

D.2

[20]. 若x=2,y=3则x||y的结果是_____B___。

A.0

C.2

D.3

[21]. 以下程序的执行结果是_____B___。

main()

{ int x = 0, s = 0;

while( !x != 0 ) s += ++x;

printf( "%d ",s );}

A.0

B.1

C.语法错误

D.无限循环

[22]. 对于如下的结构定义,若对变量person的出生年份进行赋值,_____C___是正确的赋值语句。

struct date

{ int year,month,day;};

struct worklist

{ char name[20];

char sex;

struct date birthday;

}person;

A.year=1976

B.birthday.year=1976

C.person.birthday.year=1976

D.29 person.year=1976

[23]. 以下程序的执行结果是_____B___。

main()

{ int a = 1, b = 10;

do { b -= a;a++;} while( b-- < 1 );

printf( "a=%d,b=%d \n ",a,b );}

A.a=3,b=11

B.a=2,b=8

C.a=1,b=-1

D.a=4,b=9

[24]. 以下程序的执行结果是____B____。

#define MOD( x , y ) x%y

{ int z, a=15, b=100;

z=MOD( b, a );

printf("%d ",z++ );}

A.11

B.10

C.6

D.宏定义不合法

[25]. 以下程序的执行结果是_____C___。

main()

{ static char s[20]="abcd";char *sp=s;

sp++ ;puts( strcat( sp , "ABCD" ));}

A.abcdABCD

B.aABCD

C.bcdABCD

D.ABCD

[26]. 以下程序的执行结果是___C_____。

main()

{ int i;

for( i=1;i<=5;i++ )

{ if( i%2 ) printf( "*" );

else continue;

printf("#");}

printf( "$\n") ;}

A.*#*#$

B.#*#*#*$

C.*#*#*#$

D.#*#*$

[27]. 设有以下说明和定义,则输出语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是_____B___。

typedef union

{ long i;int k[5];char c;} DATE;

struct date

{ int cat;DATE cow;double dog;} too;

DATE max;

A.26

B.30

C.18

C语言复杂程序部分模拟试题

[1]. 下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。

int add(int x, int y,____int *z__________)

{ *z=x+y;}

[2]. 下面程序的功能是将字符串a 下标值为偶数的元素由小到大排序,其它元素不变。请填空。

#include "stdio.h"

main()

{ char a[]="labchmfye",t;

int i,j;

for(i=0;i<7;i+=2)

for(j=i+2;_____j<9_________ ;j++)

if(__(a[I]>a[j])&&(j%2= =0)____________)

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

puts(a);putchar('\n');}

[3]. 以下程序的输出结果是__ga______。

main()

{ char a[]="programming", b[]="language";

char *p1=a, *p2=b;

int i;

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

if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));}

[4]. 以下程序运行后,输出结果是__a=2,b=1______。

#include

{ int x=1, y=0, a=0, b=0;

switch(x)

{ case 1: switch(y)

{ case 0: a++;break;

case 1: b++;break;}

case 2: a++;b++;break;

case 3: a++;b++;}

printf("\na=%d, b=%d", a, b);}

[5]. 函数pi的功能是根据以下近似公式求π值,请在下面的函数中填空,完成求π的功能。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

#include

double pi(long n)

{ double s=0.0, m;long i;

for(i=1;i<=n;i++) { m=1.0/(i*i);s=______________;}

return( sqrt( 6*s ) );}

[6]. 以下程序运行后,如果从键盘上输入:

book<回车>

book<空格><回车>

则输出结果是________。

#include

main()

{ char a1[80],a2[80],*s1=a1,*s2=a2;

gets(s1);gets(s2);

if( !strcmp(s1,s2)) printf("*");

else printf("#");

printf("%d\n",strlen(strcat(s1,s2)));}

[7]. 以下程序运行后,输出结果是__x=8______。

main()

{ int j, k, x=0;

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

{ x++;

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

{ if(k%2) continue;

x++;}

x++;}

printf("x=%d\n", x);}

[8]. 以下程序运行后的输出结果是__10010______。

main()

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

do

{ a[i]=y%2;i++;

y=y/2;

} while(y>=1);

for(j=i-1;j>=0;j--) printf("%d",a[j]);

printf("\n");}

[9]. 下面程序的功能是将字符串a 下标值为偶数的元素由小到大排序,其它元素不变。请填空。

#include "stdio.h"

main()

{ char a[]="labchmfye",t;

for(i=0;i<7;i+=2)

for(j=i+2;____j<9__________ ;j++)

if(_(a[I]>a[j])&&(j%2= =0)_____________)

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

puts(a);putchar('\n');}

[10]. 以下程序的功能是从键盘上输入一行字符并存入一个字符数组中,然后输出该字符串,请填空。

#include "stdio.h"

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______________ );}

[11]. 下面程序能找出数组中最大值和该值所在的元素下标,数组元素值从键盘输入,请填空。

main()

{ int x[10],*p1,*p2,k;

for(k=0;k<10;k++) scanf("%d",x+k);

for(p1=x, p2=x;p1-x<10;p1++)

if(*p1>*p2) p2=______________;

printf("MAX=%d,INDEX=%d\n",*p2,______________);}

[12]. 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空。

#include "stdio.h"

FILE *fp;

main()

{ int i, j;

if((fp=fopen(_”bi.dat”_______, "wb"))==NULL) exit(0);

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

{ scanf("%d", &j);

fwrite(&j, sizeof(int), 1,__fp______);

}

fclose(fp);

}

[13]. 以下程序是实现输出x,y,z 三个数中的最大者。

{ int x = 4, y = 6;z = 7;

int u , ____v_____ ;

if(x>y) u = x;else u = y;

if(u>z) v = u;else ____v=z__________;

printf("the max is %d",v );}

[14]. 下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数,若找到,打印此数后退出循环;若未找到,打印"not exist"。请填空。

main()

{ int i, a;

for( i=1;i<=10;i++ )

{ scanf("%d", &a);

if(a%7==0) { printf("%d", a);____break__________ ;} }

if( i==11) printf("not exist \n");}

[15]. 以下程序运行后,如果从键盘上输入:

book<回车>

book<空格><回车>

则输出结果是________。

#include

main()

{ char a1[80],a2[80],*s1=a1,*s2=a2;

gets(s1);gets(s2);

if( !strcmp(s1,s2)) printf("*");

else printf("#");

printf("%d\n",strlen(strcat(s1,s2)));}

[16]. 设有以下结构类型说明和变量定义,则变量 a 在内存所占字节数是____22__________。

struct stud

{ char num[6];

int s[4];

double ave;

} a, *p;

[17]. 下面程序能找出数组中最大值和该值所在的元素下标,数组元素值从键盘输入,请填空。

main()

{ int x[10],*p1,*p2,k;

for(k=0;k<10;k++) scanf("%d",x+k);

for(p1=x, p2=x;p1-x<10;p1++)

if(*p1>*p2) p2=______________;

printf("MAX=%d,INDEX=%d\n",*p2,______________);}

[18]. 以下程序可计算10名学生1门课程的平均分,请填空。

float average( float array[10] )

{ int i;float aver, sum = array[0];

for( i=1;i<10;i++ ) sum += array[i];

aver = sum /10;r eturn aver;}

main()

{ float score[10], aver;int i;

for( i=0;i<10;i++ ) scanf("%f",____&score[ i]__________);

aver =_____average(score)_________;

printf( "average score is %5.2f \n",aver );}

[19]. 以下fun函数的功能是累加数组元素中的值。n 为数组中元素的个数,累加的和值放入x 所指的存储单元中,请填空。

fun(int b[],int n,int *x)

{ int k, r=0;

for(k=0;______________ ;k++) r=r+b[k];

______________ = r;}

[20]. 下面程序由终端键盘输入字符,存放到文件a.dat中,用!结束输入,请填空。

main()

{ FILE *fp;char ch;

if((fp = fopen("a.dat","w")) == NULL )

{ printf("cannot open \n" );exit( 0 );}

printf( "Enter data : \n " );

while(___ch=getchar()!=’!’_______________ ) fputc(___ch,fp___________ );

fclose(fp);}

[21]. 函数fun的功能是使一个字符串按逆序存放,请填空。

void fun(char str[])

{ char m;int i,j;

for(i=0, j=strlen(str);i<____j-1__________ ;i++, j--)

{ m=str[i];str[i]= ____str[j-1]__________;str[j-1]=m;}