C语言试题1.docx

上传人:b****5 文档编号:6439833 上传时间:2023-01-06 格式:DOCX 页数:27 大小:33.78KB
下载 相关 举报
C语言试题1.docx_第1页
第1页 / 共27页
C语言试题1.docx_第2页
第2页 / 共27页
C语言试题1.docx_第3页
第3页 / 共27页
C语言试题1.docx_第4页
第4页 / 共27页
C语言试题1.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言试题1.docx

《C语言试题1.docx》由会员分享,可在线阅读,更多相关《C语言试题1.docx(27页珍藏版)》请在冰豆网上搜索。

C语言试题1.docx

C语言试题1

模拟测试

1.C语言的结构

1.在C语言中,程序的基本单位是______,一个C源程序至少包含一个______,当然也可以包含一个______和许多个其他的______。

2.C语言具有层次清晰的特点,它用函数作为程序模块以实现程序的______,从而使得程序易于调试和维护,符合现代编程的风格,所以C语言是一种______语言。

阅读下面的程序,回答3、4题。

程序1-1:

P1-1.c

#include

#include

main()

{

doubles;

printf("Inputanumber:

\n");

scanf("%f",&s);

s=sqrt(s);

printf("%lf\n",s);

}

3.在上面的程序中,include称为______,而类似math.h的以.h为扩展名的文件称为______。

4.在程序1-1中,属于数据说明的语句是______,整个函数体包含在______之中。

5.与一般的编程语言相比较,C语言具有限制小,灵活性______,语法限制______,程序设计自由度大,可移植性______,并且能够______访问内存。

6.以下说法中正确的是()。

A)C语言程序总是从第一个函数开始执行

B)在C语言程序中,要调用的函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

2.数据类型及其运算

1.C语言的数据类型可以分为基本类型、______类型、______类型和空类型。

其中基本类型又可以分为整型、______、______和枚举类型。

构造类型可以分为______类型和______类型。

2.在C语言中,合法的字符常量是()。

A)'\084'B)'\x43'

C)'ab'D)"\0"

3.在C语言中不但规定了运算符的优先级,并且规定了运算符的______,这也是其他高级语言所没有的,同时也增加了C语言的复杂性。

例如,算术运算符的结合性是______,自增运算符“++”的结合性是______。

4.C语言中,运作对象必须是整型数据的运算符是()。

A)%B)\

C)%和\D)**

5.为表示关系x≥y≥z,应使用C语言表达式()。

A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)

C)(x>=y>=z)D)(x>=y)&(y>=z)

6.如果假设

a=2,b=3,x=3.5,y=2.5

那么下面的算术表达式的值是()。

(float)(a+b)/2+(int)x%(int)y

A)2B)3

4C)3.5D)2.5

7.在C语言中,合法的长整型常数是()。

A)OLB)4962710

C)324562&D)216D

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

程序1-2:

P1-2.c

main()

{

intx=10,y=10;

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

}

A)1010B)99

C)910D)109

3.基本语句

1.C语言中一共有5类语句,它们是控制语句、______语句、______语句、空语句和______。

其中______语句在程序中可以用作空循环体。

2.以下合法的赋值语句是()。

A)x=y=100;B)d--;

C)x+y;D)c=int(a+b);

3.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。

A)INPUTx、y、z;B)scanf("%d%d%d",&x,&y,&z);

C)scanf("%d%d%d",x,y,z);D)read("%d%d%d",&x,&y,&z);

4.以下的语句中,错误的是()。

A)putchar('a');B)printf("%d",n);

C)getchar();D)scanf("%7.2f",&a);

5.以下叙述中正确的是()。

A)输入项可以是一个实型常量,如:

scanf("%f",3.5);

B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:

scanf("a=%d,b=%d")'

C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:

scanf("%4.2f",&d);

D)当输入数据时,必须指明变量地址,例如:

scanf("%f",&f);

6.在下面的语句中除了使用控制语句以外,还使用的其他语句类型是()。

5while(getchar()!

='\n');

A)复合语句和空语句B)表达式语句和空语句

C)空语句和函数调用语句D)复合语句和函数调用语句选择结构程序设

选择结构程序设计:

1.将下面的程序运行两遍,若分别从键盘上输入6和4,则输出结果分别是()。

程序1-3:

P1-3.c

main()

{

intx;

scanf("%d",&x);

if(x++>5)

printf("%d",x);

else

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

}

A)7和5B)6和3

C)7和4D)6和4

2.阅读以下程序:

程序1-4:

P1-4.c

main()

{

intx;

scanf("%d",&x);

if(x--<5)

printf("%d",x);

else

printf("%d",x++);

}

程序运行后,如果从键盘上输入5,则输出结果是()。

A)3B)4

C)5D)6

3.假定w、x、y、z、m均为int型变量,有如下程序段:

w=1;

x=2;

y=3;

z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

z;

则该程序运行后,m的值是()。

A)4B)3C)1D)2

64.设a=3,b=4,c=5,则下面逻辑表达式的值是:

()。

!

(a+b)+c-1&&b+c/2

A)1B)10.5C)0D)−1

5.阅读以下程序:

程序1-5:

P1-5.c

main()

{

ints;

scanf("%d",&s);

switch(s==!

s)

{

case0:

printf("Thenumberisnot0");break;

case1:

printf("Thenumberis0");break;

}

}

程序运行后,如果从键盘上输入−9,则输出结果是()。

A)Thenumberisnot0B)Thenumberis0

C)程序出错D)0

4.循环结构程序设计

1.若变量i和j已经定义为int类型,则以下程序段中内循环体的总的执行次数是()。

for(i=5;i;i--)

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

{...}

A)20B)25

C)24D)30

2.设I,j,k均为int型变量,则执行完下面的for循环后,k的值为()。

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

A)11B)9

C)20D)10

3.有以下程序:

程序1-6:

P1-6.c

main()

{

inti,j;

for(j=10;j<11;j++)

{

for(i=9;i

if(!

(j%i))

7break;

if(i=j-1)

printf("%d",j);

}

}

输出结果是()。

A)11B)10

C)9D)12

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

程序1-7:

P1-7.c

main()

{

inta,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=10)

break;

if(b%3==1)

{

b+=3;

continue;

}

}

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

}

A)101B)6

C)5D)4

5.假定a和b为int型变量,则执行以下语句后b的值为()。

a=1;

b=10;

do

{

b-=a;

a++;

}

while(b--<0);

A)9B)-2

C)-1D)8

6.在C语言中,下面的说法正确的是()。

A)不能使用do-while语句构成的循环

B)do-while语句构成的循环必须用break语句才能退出

C)do-while语句构成的循环,当while语句中的表达式值为非0时结束循环

D)do-while语句构成的循环,当while语句中的表达式值为0时结束循环

5.数组的定义和引用

1.在下面的数组定义中,合法的是()。

A)inta[]="string";B)inta[5]={0,1,2,3,4,5};

C)vhsts="string";D)chara[]={0,1,2,3,4,5};

2.若有定义和语句:

chars[10];

s="abcd";

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

则结果是(以下k代表空格)()。

A)输出abcdB)输出a

C)输出abcdkkkkkD)编译不通过

3.给出以下定义:

charx[]="abcdefg";

chary[]={'a','b','c','d','e','f','g'};

则正确的叙述为()。

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

C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度4.若有以下定义:

doublew[10];

则w数组元素下标的上限为______,下限为______。

5.下面各语句行中,正确的关于字符串操作的语句行是()。

A)charst[4][5]={"ABCDE"};

B)chars[5]={'A','B','C','D','E'};

C)char*s;s="ABCDE";

D)char*s;scanf("%s",s);

6.下述对C语言字符数组的描述中错误的是()。

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

7.定义如下变量和数组:

inti;

intx[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是()。

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

printf("%d",x[i][2-1]);

A)1,5,9B)1,4,7C)3,5,7D)3,6,9

6.函数

1.以下函数调用语句中含有()个实参。

func((exp1,exp2),(exp3,exp4,exp5));

A)1B)2C)4D)5

2.sizeof(double)是()。

A)一种函数调用B)一个双精度型表达式

C)一个整型表达式D)一个不合法的表达式

3.设有以下语句:

charstr1[]="string",str2[8],*str3,*str4="string";

则()不是对库函数strcpy的正确调用。

A)strcpy(str1,"HELLO1");B)strcpy(str2,"HELLO2");

C)strcpy(str3,"HELLO3");D)strcpy(str4,"HELLO4");

4.设有如下的函数:

g(x)

floatx;

{

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

}

则函数的类型

A)与参数x的类型相同B)是void

C)是intD)无法确定

5.C语言规定,程序中各函数之间()。

A)既允许直接递归调用又允许间接递归调用

B)不允许直接递归调用又不允许间接递归调用

C)允许直接递归调用不允许间接递归调用

D)不允许直接递归调用允许间接递归调用

6.以下对C语言函数的有关描述中,正确的是()。

A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B)C函数既可以嵌套定义又可以递归调用

C)函数必须有返回值,否则不能使用函数

D)C程序中有调用关系的所有函数必须放在同一个源程序文件中

7.以下叙述中不正确的是()。

A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容

C)在C中,外部变量的隐含类别是自动存储类别

D)在C中,函数形参可以说明为register变量

7.编译预处理

1.C提供3种预处理功能:

______、______和条件编译。

2.指出下面这句话的问题:

C语言编译预处理是在编译之前完成的。

103.设有如下宏定义

#defineMYSWAP(z,x,y){z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a、b内容交换,请填空。

floata=5,b=16,c;

______;

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

程序1-8:

P1-8.c

#include

#defineM3

#defineNM+1

#defineNNN*N/2

main()

{

printf("%d,",NN);

printf("%d\n",5*NN);

}

A)3,17B)4,18C)6,18D)8,40

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

程序1-9:

P1-9.c

#include

#defineFUDGE(y)2.84+y

#definePR(a)printf("%d",(int)(a))

#definePRINT(a)PR(a);putchar('\n')

main()

{

intx=2;

PRINT(FUDGE(5)*x);

}

A)11B)13C)15D)16

指针

1.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是()。

A)pb=&xB)pb=x;C)*pb=&x;D)*pb=*x

2.下面函数的功能是()。

sss(s,t)

char*s,*t;

{

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}

A)求字符串的长度B)比较两个字符串的大小

11C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中

3.设有说明

int(*ptr)[m];

其中的标志符ptr是()。

A)m个指向整型变量的指针

B)指向m个整型变量的函数指针

C)一个指向具有m个整型元素的一维数组的指针

D)具有m个指针元素的一维指针数组,每个元素都只能指向整型量

4.若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元:

int*p;

p=______malloc(sizeof(int));

则应填入()。

A)intB)int*

C)(*int)D)(int*)

5.下面函数的功能是()。

intfunl(char*x)

{

char*y=x;

while(*y++);

return(y-x-1);

}

A)求字符串的长度B)比较两个字符串的大小

C)将字符串x复制到字符串yD)将字符串x连接到字符串y后面

6.设有以下定义:

inta[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)+2D)*(*(a+1)+2)

7.函数NewPrint用于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPrint的原型为()。

A)doubleNewPrint(doublex)

B)voidNewPrint(double(*f)(doublex))

C)void(*NewPrint)(doublex)

D)void(*NewPrint)(doublef(doublex))

8.结构体与共用体

1.结构体又称为“______”,是由具有不同数据类型的多个变量组合而成的数据存储形式。

定义一个结构体类型的一般形式为:

12struct结构体名{成员列表};

其中的成员又可以称为“______”,成员表列可以称为“______”。

2.若有以下的说明,则对初值中字符'a'的引用方式为()。

staticstruct

{

charch;

doublex;

chara[];

}c[2][2]={

{{'a',3.5,'bc'},

{'c',4.5,'de'},

{'m',8.6,'abc'}

}

};

A)c.chB)c[0][0].ch

C)c[1][1].chD)a[0]

3.设有以下说明语句:

structex

{

intx;

floaty;

charz;

}example;

则下面的叙述中不正确的是()。

A)struct结构体类型的关键字B)example是结构体类型名

C)x,y,z都是结构体成员名D)structex是结构体类型

4.以下选项中,能定义s为合法的结构体变量的是()。

A)typedefstructabc

{

doublea;

charb[10];

}s;

B)struct

{

doublea;

charb[10];

}s;

C)structabc

{

doublea;

charb[10];

}

abcs;

D)typedefstructabc

{

13doublea;

charb[10];

}

abcs;

5.变量a所占内存字节数是()。

unionU

{

charst[4];

inti;

longl;

};

structA

{

intc;

unionUu;

}a;

A)4B)5C)6D)8

9.位运算

1.在位运算符中除了取反运算符“~”以外,其余均为______运算符,即要求运算符的两侧各有一个运算量,并且运算量只能是______或者______数据。

2.位段就是以位为单位定义长度的______类型中的成员,就是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的______。

3.整型变量x和y的值相等,且为非0值,则以下选项中,结果为0的表达式是()。

A)x||yB)x|yC)x&yD)x^y

4.设有以下语句:

chara=3,b=6,c;

c=a^b<<2;

则c的二进制值是()。

A)00011011B)00010100

C)00011100D)00011000

5.字符(char)型数据在微机内存中的存储形式是()。

A)反码B)补码

C)EBCDIC码D)ASCII码

10.文件操作

1.标准函数fgets(s,n,f)的功能是()。

A)从文件f中读取长度为n的字符串存入指针s所指的内存

B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存

C)从文件f中读取n个字符串存入指针s所指的内存

D)从文件f中读取长度为n-1的字符串存入指针s所指的内存

2.对于用“r”方式打开文件,下列说法正确的是()。

A)用“r”方式打开的文件只能输入,不能输出

B)用“r”方式打开的文件只能输出,不能输入

C)用“r”方式可以打开任何文件

D)以上均不对

3.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include"stdio.h"

FILE*fp;

{

charch;

if((fp=fopen(______))==NULL)

exit(0);

while((ch=getchar())!

='@')

fputc(ch,fp);

fclose(fp);

}

4.下面的程序执行后,文件test.t中的内容是:

程序1-10:

P1-10.C

#include

voidfun(char*fname,char*st)

{

FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i

fputc(st[i],myf);

fclose(myf);

}

main()

{

fun("test","newworld");

fun("test","hello,");

}

A)hello,B)newworldhello,

C)newworldD)hello,rld

5.下面的程序用来统计文件中字符的个数,请填空。

程序1-11:

P1-11.C

#include

main()

{

FILE*fp;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{

printf("Can'topenfile!

\n");exit(0);

}

while______

{

fgetc(fp);

num++;

}

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

fclose(fp);

}

6.设有如下程序:

程序1-12:

P1-12.C

#include

main(argc,argv)

intargc;

char*argv[];

{

FILE*fp;

voidfc();

inti=1;

while(--argc>0)

if((fp=fopen(argv[i++],"r"))==NULL)

{

printf("Cannotopenfile!

\n");

exit

(1);

}

else

{

fc(fp);

fclose(fp);

}

}

voidfc(ifp)

FILE*ifp;

{

charc;

while((c=getc(ifp))!

='#')

putchar(c-32);

}

上述程序经编译、连接后生成可执行文件名为cpy.exe。

假定磁盘上有3个文本文件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1