C语言程序设计(西华大学)智慧树知到答案2024年西华大学_第1页
C语言程序设计(西华大学)智慧树知到答案2024年西华大学_第2页
C语言程序设计(西华大学)智慧树知到答案2024年西华大学_第3页
C语言程序设计(西华大学)智慧树知到答案2024年西华大学_第4页
C语言程序设计(西华大学)智慧树知到答案2024年西华大学_第5页
已阅读5页,还剩74页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计(西华大学)西华大学智慧树知到答案2024年第一章测试

下列叙述中正确的是()。

A:C语言所有函数都是外部函数B:C语言编译时不检查语法C:C语言的函数可以嵌套定义D:C语言的子程序有过程和函数两种

答案:D以下叙述中正确的是()。

A:C源程序经编译形成的二进制代码可以直接运行B:C语言中的函数不可以单独进行编译C:C语言的源程序不必通过编译就可以直接运行D:C语言中的每条可执行语句最终都将被转换成二进制的机器指令

答案:DC语言的注释定界符是()。

A:[]B:/**/C:{}D:\**\

答案:BC语言源程序的基本单位是()。

A:函数B:标识符C:过程D:子程序

答案:A一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是()

A:可行性B:有零个或多个输出C:有零个或多个输入D:有穷性

答案:B以下叙述中正确的是()。

A:C语言可以不用编译就能被计算机识别执行B:C语言比其他语言高级C:C语言出现的最晚,具有其他语言的一切优点D:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

答案:D有一个命名为C001.C的C语言源程序,当正常执行后,在当前目录下不存在的文件是

A:C001.DATB:C001.EXEC:C001.CD:C001.OBJ

答案:A能将高级语言编写的源程序转换为目标程序的是()。

A:链接程序B:解释程序C:编译程序D:编辑程序

答案:C结构化程序由三种基本结构组成,由这三种基本结构组成的算法()。

A:只能完成一些简单的任务B:可以完成任何复杂的任务C:只能完成部分复杂的任务D:能完成符合结构化的任务

答案:D以下叙述中错误的是()。

A:C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B:C语言源程序经编译后生成后缀为.obj的目标程序C:C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件D:用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

答案:AC语言程序将从源程序中第一个函数开始执行

A:对B:错

答案:BC语言程序中可以有多个函数,但只能有一个主函数。

A:错B:对

答案:B在C语言中,程序的模块化是利用函数实现的

A:错B:对

答案:B结构化程序设计中由三种基本结构构成的程序只能解决小规模的问题

A:错B:对

答案:A所有C程序都需要编译链接无误后才能进行

A:对B:错

答案:AC程序在运行过程中所有计算都以十进制方式进行

A:对B:错

答案:BC语言具有简洁明了的特点。

A:对B:错

答案:AC语言是一种具有某些低级语言特征的高级语言。

A:错B:对

答案:BC语言的书写格式不会影响程序的可读性。

A:对B:错

答案:B

第二章测试

以下语句中,不能实现回车换行的是()。

A:fwrite("\n",1,1,stdout);B:printf("\n");C:fprintf(stdout,"\n")D:putchar("\n");

答案:D以下标识符中,不能作为合法的C用户定义标识符的是()。

A:toB:answerC:_ifD:signed

答案:D下面四个选项中,均是不合法的用户标识符的选项是()。

A:_123tempintB:b-agotointC:AP_0doD:floatla0_A

答案:B执行以下程序段后,输出结果和a的值是()。

inta=10;printf("%d",a++);

A:10和10B:11和11C:10和11D:11和10

答案:C下列字符序列中,是C语言保留字的是()。

A:sizeofB:sqrtC:scanfD:include

答案:A以下数据中,不正确的数值或字符常量是()。

A:5LB:o13C:0D:9861

答案:B若整型变量a与i已正确定义,且i已正确赋值,合法的语句是()。

A:a==1B:a=a++=5;C:a++=i;D:++i;

答案:D下列变量说明语句中,正确的是()。

A:intx,z;B:char:abc;C:intx;z;D:chara;b;c;

答案:A设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值()。

A:3B:2C:1D:0

答案:BC语言标准格式输出函数printf()的参数表是由若干个表达式组成。

A:对B:错

答案:AC语言规定:定义符号常量时必须用大写字母。

A:错B:对

答案:Adouble型变量在内存中占的字节数比int型变量在内存中占的字节数多。

A:对B:错

答案:AC语言标准输入操作中,gets()函数一次只可读取一个字符。

A:对B:错

答案:B下划线是标识符中的合法字符。

A:对B:错

答案:A变量的类型通常指存储类型和数据类型两种。

A:错B:对

答案:BC语言标准输出操作中,putchar()函数可以输出显示一个字符串。

A:错B:对

答案:A一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。

A:错B:对

答案:A任何表达式语句都是表达式加分号组成的。

A:错B:对

答案:B

第三章测试

下列()表达式的值为真,其中a=5;b=8;c=10;d=0

A:a-bB:(a*2-c)||dC:a&&dD:a*2>8+2

答案:A在C语言中,要求运算数必须是整型或字符型的运算符是()。

A:!B:&&C:&D:||

答案:C如果inta=2,b=3,c=0,下列描述正确的是()

A:a>b!=c和a>(b!=c)的执行顺序是一样的B:a&&b>c的结果为假C:a||(b=c)执行后b的值为0D:!a!=(b!=c)表达式的值为1

答案:Dvoidmain()

{intx=1,a=0,b=0;

switch(x)

{case

0:b++;

case

1:a++;

case

2:a++;b++;

}

printf("a=%d,b=%d",a,b);}该程序的输出结果是(

)

A:1,1B:2,2C:1,0D:2,1

答案:D以下程序的运行结果是(

)。

voidmain()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

else

c+=1;

printf(“%d”,c);

}

A:1B:0C:3D:2

答案:D设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。

A:if(a>b)c=a,a=b,b=c;B:if(a>b){c=a;a=b;b=c;}C:if(a>b){c=a,a=b,b=c;}D:if(a>b)c=a;a=b;b=c;

答案:D有以下程序

#include<stdio.h>

voidmain()

{intc=0,k;

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

switch(k)

{default:c+=k;

case2:

c++;

break;

case4:

c+=2;break;

}

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

}

程序运行后的输出结果是(

)。

A:7B:3C:9D:5

答案:B与语句:k=a>b?(b>c?1:0):0;功能相同的是()。

A:if(a<=b)k=0;

elseif(b<=c)k=1;B:if((a>b)&&(b>c))k=1;

elsek=0;C:if((a>b)||(b>c)k=1;

elsek=0;D:if(a>b)k=1;

elseif(b>c)k=1;

elsek=0;

答案:B若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。

A:1B:0C:不知道a的值,不能确定D:2

答案:A一个结构化程序必须同时由顺序、分支、循环三种结构组成

A:错B:对

答案:B逻辑表达式的值只能为1或0。

A:错B:对

答案:B有条件表达式:(EXP)?i++;j--,中(EXP)与EXP==1是等价的

A:错B:对

答案:A正确表达某个人的年龄age在10~20岁之间(不含边界)的C语言表达式是10

A:对B:错

答案:B在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。

A:对B:错

答案:A在switch语句中,每一个的case常量表达式的值可以相同。

A:对B:错

答案:Bcase语句后如没有break,顺序向下执行。

A:错B:对

答案:BC语言表达式’0’<=c<=’9’可以判断c中的字符是否为数字字符

A:对B:错

答案:B条件表达式不能取代一般if的语句。

A:对B:错

答案:Bif(a=5)是允许的。

A:错B:对

答案:B

第四章测试

C语言中while和do-while循环的主要区别是()。

A:do-while允许从外部转到循环体内B:do-while循环体不能是复合语句C:While的循环控制条件比do-while的循环控制条件严格D:do-while的循环体至少无条件执行一次

答案:D以下不是死循环的语句是()。

A:for(;(c=getchar())!=’\n’;)printf(“%c”,c);B:for(;;x+=i);C:while(1){x++;}D:for(i=10;;i++)sum+=i;

答案:A以下程序段的输出结果是(

)。

inti,j,m=0;

for(i=1;i<=15;i+=4)

for(j=3;j<=19;j+=4)

m++;

printf(“%d”,m);

A:20B:12C:15D:25

答案:A有以下程序:#include<stdio.h>voidmain(){inty=9;for(

;y>0;y--)if(y%3==0)

printf("%d",--y);}程序的运行结果是()。

A:875421B:741C:852D:963

答案:C有以下程序:#include<stdio.h>voidmain()

{inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)

break;m*=i*j;}}printf("m=%d\n",m);

}程序运行后的输出结果是()。

A:m=2B:m=6C:m=5D:m=4

答案:B有以下程序

#include<stdio.h>voidmain()

{inty=10;

while(y--);

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

}

程序执行后的输出结果是(

)。

A:y=1B:while构成无限循环C:y=0D:y=-1

答案:D有以下程序

#include<stdio.h>

voidmain()

{intn=2,k=0;

while(k++&&n++>2);

printf(“%d%d\n”,k,n);}

程序运行后的输出结果是(

)。

A:13B:57C:12D:02

答案:C以下程序中的变量已正确定义for(i=0;i<4;i++,j++)

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

printf(”*”);程序段的输出结果是(

)。

A:****B:*C:**D:********

答案:B设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是()。

A:n=0;for(ch=getchar();ch!=’\n’;n++);B:for(n=0;getchar()!=’\n’;n++);C:n=0;while((ch=getchar())!=’\n’)n++;D:n=0;while(getchar()!=’\n’)n++;

答案:A有以下程序#include<stdio.h>voidmain(){inti,j;

for(i=3;i>=l;i--)

{for(j=1;j<=2;j++)

printf("%d",i+j);

printf("\n");

}}程序的运行结果是(

)。

A:234

345B:45

34

23C:23

34

45D:432

543

答案:Bfor循环的三个表达式可以任意省略,while,do-while也是如此。

A:错B:对

答案:A循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。

A:对B:错

答案:Abreak则是结束整个循环过程,不再判断执行循环的条件是否成立。

A:错B:对

答案:Bdo-while循环至少要执行一次循环语句。

A:错B:对

答案:Bbreak用于结束本次循环

A:错B:对

答案:Acontinue不是结束本次循环,而是终止整个循环的执行。

A:对B:错

答案:BC语言的三种循环不可以互相嵌套。

A:错B:对

答案:Ado-while循环的while后的分号可以省略。

A:对B:错

答案:B结构化程序使用goto语句会很便捷

A:对B:错

答案:B已定义inti=-3;则while(i++);是死循环

A:错B:对

答案:A

第五章测试

以下数组定义中错误的是()。

A:intx[2][3]={1,2,3,4,5,6};B:intx[2][3]={{1,2},{3,4},{5,6}};C:intx[][3]={0};D:intx[][3]={{1,2,3},{4,5,6}};

答案:B有以下程序:#include<stdio.h>#defineN

4voidfun(inta[][N],int

b[]){inti;for(i=0;i<N;i++)

b[i]=a[i][i]-a[i][N-1-i];}voidmain(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)

printf("%d,",y[i]);

printf("\n");

}程序运行后的输出结果是()。

A:-3,-1,1,3,B:0,1,2,3,C:-3,-3,-3,-3,D:-12,-3,0,0,

答案:A设有定义:chars[81];inti=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()。

A:while((s[i++]=getchar())!='\n');s[i]='\0';B:scanf("%s",s);C:do{scanf("%c";&s[i]);}while(s[i++]!='\n');s[i]='\0';D:gets(s);

答案:B有以下程序:#include<stdio.h>voidmain(){char

s[]="012xy\08s34f4w2";

inti,n=0;

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

if(s[i]>='0'&&s[i]<='9')

n++;

printf("%d\n",n);}程序运行后的输出结果是()。

A:8B:0C:7D:3

答案:D下列定义数组的语句中,正确的是()。

A:intN=10;

intx[N];B:intx[];C:#defineN10

intx[N];D:intx[0..10];

答案:C有以下程序:#include<stdio.h>voidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:

switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;

}break;case1:a[i]=0;}for(i=0;i<4;i++)

printf("%d",a[i]);

printf("\n");}程序运行后的输出结果是()。

A:3344B:2050C:0304D:3040

答案:D有以下程序:#include<stdio.h>voidmain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)

t+=b[i][b[j][i]];printf("%d\n",t);}程序运行后的输出结果是()。

A:1B:9C:3D:4

答案:D有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";

inti,n=0;

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

if(s[i]>='0'&&s[i]<='9')

n++;

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

}程序运行后的输出结果是(

)。

A:3B:7C:0D:8

答案:A有以下程序段charname[20];intnum;scanf("name=%snum=%d",name;&num);当执行上述程序段,并从键盘输入:name=Lilinum=1001<回车>后,name的值为(

)。

A:name=LiliB:name=Lilinum=1001C:Lilinum=D:Lili

答案:D在C语言中能逐个地使用下标变量,也能一次引用整个数组。

A:对B:错

答案:B能对二维数组a进行正确初始化的语句是inta[2][]={{1,0,1},{5,2,3,}};

A:错B:对

答案:A若有定义语句:intb[3][4];按在内存中的存放顺序,b数组的第4个元素是a[1][3].

A:错B:对

答案:A能对二维数组a进行正确初始化的语句是inta[][3]={{1,0,1},{},{1,1}};

A:对B:错

答案:B在c语言中,引用数组元素时,其数组下标的数据类型允许是整型表达式

A:对B:错

答案:A一个数组是由连续的一块内存单元组成的,数组名就是这块连续内存单元的首地址

A:错B:对

答案:BC语言允许用字符串的方式对数组作初始化赋值。

A:对B:错

答案:A用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志’\0’。

A:对B:错

答案:A

第六章测试

函数调用可以作为一个独立的语句存在

A:对B:错

答案:A若函数调用时的实参为变量,函数的实参和其对应的形参共占同一存储单元

A:错B:对

答案:A定义时,函数的形参只是形式上的存在,不占用具体存储单元

A:错B:对

答案:B函数可以没有参数,但是不能没有返回值

A:错B:对

答案:A函数定义时必须给出函数体,函数体内至少有一条语句

A:对B:错

答案:BC语言中,函数可以用原型说明,也可用简单说明

A:错B:对

答案:A函数的存储类别有外部的和静态的两种,它们的作用域分别是程序级的和文件级的

A:错B:对

答案:BC程序函数的形参不可以说明为static型变量

A:错B:对

答案:BC程序函数中定义的自动变量,系统不自动赋确定的初值

A:对B:错

答案:A在一个C源程序文件中所定义的全局变量,其作用域为所在程序的全部范围

A:错B:对

答案:A有以下程序:

#include<stdio.h>

intfun(inta,intb)

{if(b==0)

returna;

else

return(fun(--a,--b));

}

voidmain(){printf("%d\n",fun(4,2));}程序的运行结果是(

)。

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

答案:C有以下程序:#include<stdio.h>intf(intx);voidmain(){intn=1,m;m=f(f(f(n)));

printf("%d\n",m);}intf(intx)

{returnx*2;}程序运行后的输出结果是()。

A:8B:4C:1D:2

答案:A有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}voidmain(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)

printf("%d",k[i]);printf("\n");}程序的运行结果是()。

A:876543B:345678C:1098765D:321678

答案:D有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)

return((x+y)/2);else

return(x);}voidmain(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。

A:8B:3C:6D:12

答案:C有以下程序:#include

<stdio.h>int

fun(){static

int

x=1;x*=2;return

x;}voidmain(){inti,s=1;for(i=1;i<=3;i++)

s*=fun();printf("%d\n",s);}程序运行后的输出结果是()。

A:64B:0C:10D:30

答案:A有以下程序

#include<stdio.h>

intf(intx);

voidmain()

{inta,b=0;

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

{b=b+f(a);

purchar('A'+b);

}

}

intf(intx)

{

returnx*x+1;

}程序运行后的输出结果是()。

A:ABEB:BCFC:BD1D:BCD

答案:C有以下程序#include<stdio.h>#defineN

3voidfun(inta[][N],intb[]){inti,j;

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

{b[i]=a[i][0];

for(j=1;j<N;j++)

if(b[i]<a[i][j])

b[i]=a[i][j];

}

}

voidmain(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

fun(x,y);

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

printf("%d,",y[i]);

printf("\n");}

程序运行后的输出结果是(

)。

A:3,5,7B:3,6,9C:2,4,8D:1,3,5

答案:B有以下程序#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}voidmain(){fun1(5,6);

fun2();

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

}程序运行后的输出结果是(

)。

A:5634B:1256C:3456D:5612

答案:A设有如下函数定义intfun(intk){if(k<1)return0;

elseif(k==1)

return1;

else

returnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是(

)。

A:5B:2C:4D:3

答案:D有以下程序

#include<stdio.h>intfun()

{staticintx=1;

x+=1;

returnx;

}voidmain()

{inti,s=1;

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

s+=fun();

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

}

程序运行后的输出结果是(

)。

A:21B:11C:6D:120

答案:A有以下程序#include<stdio.h>intf(intt[],intn);voidmain(){inta[4]={1,2,3,4},s;

s=f(a,4);

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

}intf(intt[],intn){if(n>0)

returnt[n-1]+f(t,n-1);

elsereturn0;

}程序运行后的输出结果是(

)。

A:10B:14C:4D:6

答案:A有以下程序#include<stdio.h>intf(intx,inty)

{return((y-x)*x);}voidmain(){inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf(“%d\n”,d);}程序运行后的输出结果是(

)。

A:7B:9C:8D:10

答案:B有以下程序

#include<stdio.h>

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

voidmain()

{intz;

z=f(3);

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

}

程序的运行结果是(

)。

A:8B:6C:0D:9

答案:B在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A:extern和registerB:auto和staticC:auto和registerD:static和register

答案:C有以下程序voidf(intb[]){inti;

for(i=2;i<6;i++)b[i]*=2;}voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;

f(a);

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

printf(“%d,”,a[i]);}程序运行后的输出结果是(

)。

A:1,2,6,8,10,12,7,8,9,10B:1,2,3,4,5,6,7,8,9,10,C:1,2,3,4,10,12,14,16,9,10,D:1,2,6,8,10,12,14,16,9,10,

答案:A在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A:称为函数的循环调用B:称为函数的间接递归调用C:称为函数的直接递归调用D:C语言中不允许这样的递归调用

答案:B以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。voidf(charp[][10],intn)

{chart[20];

inti,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(strcmp(p[i],p[j])<0)

{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}

}voidmain()

{charp[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};

inti;f(p,5);

printf(“%d\n”,strlen(p[0]));

}

程序运行后的输出结果是(

)。

A:4B:6C:5D:3

答案:C有如下程序

voidf(intx,inty)

{intt;

if(x<y)

{t=x,x=y;}

}

voidmain()

{inta=4,b=3,c=5;

f(a,b);

f(a,c);

f(b,c);

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

}

执行后输出结果是(

)。

A:4,3,5B:5,4,3C:3,4,5D:5,3,4

答案:A

第七章测试

有以下程序:#include<stdio.h>#definef(x)x*x*xvoidmain(){inta=3,s,t;

s=f(a+1);

t=f((a+1));

printf("%d,%d\n",s,t);}程序运行后的输出结果是(

)。

A:64,10B:64,64C:10,10D:10,64

答案:D有以下程序:#include<stdio.h>#definePT3.5;#define

S(x)

PT*x*x;voidmain(){inta=1,b=2;

printf("%4.1f\n",S(a+b));}程序运行后的输出结果是()。

A:31.5B:7.5C:14.0D:程序有错无输出结果

答案:Dfun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是()。#include<stdio.h>#defineN5viodfun(intx[N]){intm;

for(m=N-1;m>=0;m--)

scanf(“%d”,

);}

A:&x[++m]B:x+(m++)C:&x[m+1]D:x+m

答案:D有以下程序#include<stdio.h>#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;

printf("%d\n",S(k+j));}程序运行后的输出结果是(

)。

A:143B:28C:33D:197

答案:A有以下程序#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);}voidmain(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=O;i<N/2;i++)

{printf("%d",a[i]);}printf("\n");

}程序运行后的输出结果是(

)。

A:3234B:1313C:1234D:2234

答案:A在“文件包含”预处理语句的使用形式中,当#inlcude后面的文件名用“”(双引号)括起时,寻找被包含文件的方式是()。

A:仅仅搜索源程序所在目录B:先在源程序所在目录搜索,再按系统设定的标准方式搜索C:直接按系统设定的标准方式搜索目录D:仅仅搜索当前目录

答案:B有以下程序#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;

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

b[i]=a[i][i];}voidmain(){intx[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},y[N],i;

fun(x,y);

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

printf("%d,",y[i]);

printf("\n");}程序的运行结果是()。

A:1,4,5,9B:1,2,3,4C:3,4,8,10D:1,0,7,0

答案:D有一个名为init.txt的文件,内容如下:

#define

HDY(A,B)

A/B

#define

PRINT(Y)

Printf(“y=%d\n”,Y)有以下程序#include“init.txt”voidmain(){inta=1,b=2,c=3,d=4,k;k=HDY(a+c,b+d);PRINT(k);}下面针对该程序的叙述正确的是(

)。

A:运行出错B:编译有错C:运行结果为y=6D:运行结果为y=0

答案:C下列说法中正确的是(

)。

A:使用带参的宏时,参数的类型应与宏定义时的一致B:在程序的一行上可以出现多个有效的预处理命令行C:宏替换不占用运行时间,只占用编译时间D:在以下定义中CR是称为”宏名”的标识符

#defineCR045

答案:C预处理命令行必须位于C源程序的起始位置

A:对B:错

答案:BC语言的预处理不能实现宏定义和条件编译的功能

A:对B:错

答案:B预处理命令行的最后不能以分号表示结束

A:错B:对

答案:B在程序中凡是以“#”开始的语句行都是预处理命令行

A:对B:错

答案:A若程序中有宏定义行:#defineN100,宏定义行中定义了标识符N的值为整数100

A:错B:对

答案:A

有以下程序:

#include<stdio.h>

#defineN5

#defineMN+1

#definef(x)(x*M)

voidmain()

{inti1,i2;

i1=f(2);

i2=f(1+1);

printf("%d

%d\n",i1,i2);

}程序的运行结果是(

)。

A:1111B:117C:127D:1212

答案:B

第八章测试

指针数组的元素可以是不同类型的指针。

A:对B:错

答案:B若有定义int(*pt)[3];定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

A:错B:对

答案:B若有定义语句:inta[2][3],*p[3];

则p[0]=&a[1][2];是正确的

A:对B:错

答案:A指针可以加上或减去一个int型数,也可以加上一个指针。

A:错B:对

答案:A定义语句:int*p[4];与int*(p[4]);是等价的

A:对B:错

答案:A有以下程序:

#include<stdio.h>

voidmain()

{inta=1,b=3,c=5;

int*p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2);

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

}执行后的输出结果是(

)。

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

答案:A

有以下程序:

#include<stdio.h>

voidf(int*p,int*q);

voidmain()

{intm=1,n=2,*r=&m;

f(r,&n);

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

}

voidf(int*p,int*q)

{

p=p+1;

*q=*q+1;}程序运行后的输出结果是(

)。

A:1,3B:1,2C:2,3D:1,4

答案:A有以下程序:#include<stdio.h>

voidfun(char*a,char*b)

{

while(*a=='*')

a++;

while(*b=*a){b++;a++;}}

voidmain()

{char*s="*****a*b****",t[80];

fun(s,t);

puts(t);

}程序的运行结果是(

)。

A:a*b****B:a*bC:*****a*bD:ab

答案:A设有以下函数:

voidfun(intn,char*s)

{

……

}则下面对函数指针的定义和赋值均正确的是(

)。

A:void

*pf();

pf=fun;B:void(*pf)(int,char*);pf=fun;C:void

(*pf)(int,char);

pf=&fun;D:void*pf();*pf=fun;

答案:B有以下程序:

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j)

{t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

voidmain()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);

fun(a,4,9);

fun(a,0,9);

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

printf("%d",a[k]);

printf("\n");

}程序的运行结果是(

)。

A:4321098765B:0987651234C:0987654321D:5678901234

答案:D以下选项中正确的语句组是()。

A:char*s;s="BOOK!";B:chars[];s="BOOK!";C:char*s;s={"BOOK!"};D:chars[10];s="BOOK!";

答案:A有以下程序:#include<stdio.h>voidfun1(char*p){char*q;

q=p;

while(*q!='\0')

{(*q)++;q++;}}voidmain(){chara[]={"Program"},*p;

p=&a[3];

fun1(p);

printf("%s\n",a);}程序执行后的输出结果是(

)。

A:ProgramB:ProhsbnC:PrphsbnD:Progsbn

答案:B有以下函数:

int

aaa(char*s)

{char*t=s;

while(*t++);

t--;

return(t-s);

}以下关于aaa函数功能叙述正确的是(

)。

A:比较两个串的大小B:求字符串s的长度C:将串s复制到串tD:求字符串s所占字节数

答案:B有以下程序:#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));

printf("%s\n",p);}程序运行后的输出结果是()。

A:10,One*Dream!B:9,One*Dream!C:10,One*WorldD:9,One*World

答案:A有以下程序:#include<stdio.h>#include<stdlib.h>intfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;

return

*p;}voidmain(){inta;a=fun(10);

printf("%d\n",a+fun(10));}程序的运行结果是()。

A:10B:0C:出错D:20

答案:D有以下程序:#include<stdio.h>intadd(inta,intb)

{return(a+b);}voidmain(){intk,(*f)(int,int)a=5,b=10;f=add;…}则以下函数调用语句错误的是()。

A:k=add(a,b);B:k=(*f)(a,b);C:k=f(a,b);D:k=*f(a,b);

答案:D以下语句中存在语法错误的是()。

A:char*ss={"right?"};B:char*ss[6];ss[1]="right?";C:charss[20]={"right?"};D:charss[6][20];ss[1]="right?";

答案:D有以下程序:#include<stdio.h>voidswap(char*x,char*y){char

t;

t=*x;

*x=*y;

*y=t;}voidmain(){char*s1="abc",*s2="123";

swap(s1,s2);

printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。

A:123,abcB:1bc,a23C:abc,123D:321,cba

答案:B有以下函数:intfun(char

*x,char

*y){intn=0;while((*x==*y)&&*x!='\0'){x++;y++;n++;}return

n;}函数的功能是()。

A:统计x和y所指字符串中最前面连续相同的字符个数B:查找x和y所指字符串中是否有''C:将y所指字符串赋给x所指存储空间D:统计x和y所指字符串中相同的字符个数

答案:A设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于()。

A:p=0;B:p=’’;C:p='0';D:p="";

答案:A

第九章测试

可以用typedef将已存在的类型用一个新的名字来代表

A:对B:错

答案:A用typedef定义新的类型名后,原有类型名仍有效

A:对B:错

答案:A函数可以返回指向结构体变量的指针

A:对B:错

答案:A函数的返回值类型不能是结构体类型,只能是是简单类型

A:错B:对

答案:A设有定义:

structcomplex

{intreal,unreal;}data1={1,8},data2;

则data2=(2,6);是正确的。

A:错B:对

答案:A以下结构体类型说明和变量定义中正确的是()。

A:struct{intn;charc;}REC;

RECt1,t2;B:typedefstruct{intn;charc;}REC;

RECt1,t2;C:structREC;

{intn;charc;};

RECt1,t2;D:typedefstructREC;

{intn=0;charc='A';}t1,t2;

答案:B有以下程序:#include<stdio.h>#include<string.h>structA{

inta;

charb[10];

doublec;};voidf(structAt);voidmain(){

structAa={1001,"ZhangDa",1098.0};

f(a);

printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){

t.a=1002;

strcpy(t.b,"ChangRong");

t.c=1202.0;}程序运行后的输出结果是(

)。

A:1002,ZhangDa,1202.0B:1001,ChangRong,1098.0C:1001,ZhangDa,1098.0D:1002,ChangRong,1202.0

答案:C有以下程序段:

structst

{intx;int*y;}*pt;

inta[]={1,2},b[]={3,4};

structstc[2]={10,a,20,b};

pt=c;以下选项中表达式的值为11的是(

)。

A:pt->xB:(pt++)->xC:*pt->yD:++pt->x

答案:D有以下程序:

#include<stdio.h>

structS{intn;inta[20];};

voidf(int*a,intn)

{

inti;

for(i=0;i<n-1;i++)

a[i]+=i;

}

main()

{inti;

structSs={10,{2,3,1,6,8,7,5,4,10,9}};

f(s.a,s.n);

for(i=0;i<s.n;i++)

printf("%d,",s.a[i]);

}程序运行后的输出结果是(

)。

A:1,2,3,6,8,7,5,4,10,9,B:2,4,3,9,12,12,11,11,18,9,C:2,3,1,6,8,7,5,4,10,9,D:3,4,2,7,9,8,6,5,11,10,

答案:B有以下程序:#include<stdio.h>#include<string.h>typedefstruct

{charname[9];charsex;floatscore[2];}STU;voidf(STUa){

STUb={"Zhao",'m',85.0,90.0};

inti;

strcpy(,);

a.sex=b.sex;

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

a.score[i]=b.score[i];}voidmain(){STUc={"Qian",'f',95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);}程序的运行结果是(

)。

A:Qian,f,95,92B:Zhao,m,85,90C:Qian,m,85,90D:Zhao,f,95,92

答案:A下面结构体的定义语句中,错误的是()。

A:structord{intx;inty;intz;};structorda;B:struct{intx;inty;intz;}a;C:structord{intx;inty;intz;}a;D:structord{intx;inty;intz;}structorda;

答案:D设有以下程序段structMP3

{charname[20];

charcolor;

floatprice;}std,*ptr;ptr=&std;若要引用结构体变量std中的color成员,写法错误的是()。

A:(*ptr).colorB:ptr->colorC:std.colorD:std->color

答案:D有以下函数#include<stdio.h>structstu{intmun;charname[10];intage;};viodfun(structstu*p){printf(“%s\n”,p->name);}voidmain(){structstux[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};

fun(x+2);}程序运行输出结果是()。

A:zhaoB:19C:wangD:zhang

答案:A#include<stdio.h>structord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",(++p)->x);

printf("%d\n",++(p->y));}程序运行后的输出结果是(

)。

A:3,4B:1,2C:3,5D:2,3

答案:C有如下程序段:#include<stdio.h>

voidmain(){structa{intx;inty;}num[2]={{20,5},{6,7}};printf("%d\n",num[0].x/num[0].y*num[1].y);}执行后的输出结果是(

)。

A:5B:28C:20D:0

答案:B有以下定义和语句structworkers{intnum;

charname[20];

charc;

struct

{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w;能给w中year成员赋1980的语句是(

)。

A:pw->year=1980;B:w.year=1980;C:*pw.year=198O;D:w.s.year=1980;

答案:D有以下程序#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};structAf(structAt);voidmain(){structAa={1001,”ZhangDa”,1098.0};

a=f(a);

printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt){t.a=1002;

strcpy(t.b,”ChangRong”);

t.c=1202.0;

returnt;}程序运行后的输出结果是(

)。

A:1002,ChangRong,1202.0B:1001,ZhangDa,1098.0C:1002,ZhangDa,1202.0D:1001,ChangRong,1098.0

答案:A有以下程序#include<stdio.h>structst{intx,y;}data[2]={l,10,2,20};voidmain(){structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);}程序的运行结果是()。

A:20,2B:10,2C:10,1D:20,1

答案:B有以下程序#include<stdio.h>structtt

{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};voidmain(){inti;

p=a;

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

{printf("%d,",p->x);p=p->y;}}程序的运行结果是(

)。

A:30,17B:20,30C:15,30D:20,15

答案:D设有以下定义

uniondata

{intd1;floatd2;}demo;

则下面叙述中错误的是

A:变量demo与成员d2所占的内存字节数相同B:变量demo中各成员的地址相同C:若给demo.d1赋99后,demo.d2中的值是99.0D:变量demo和各成员的地址相同

答案:C

第十章测试

C语言的文件操作中,既可以顺序读写,又可以随机读写

A:对B:错

答案:A关闭打开的文件时使用函数fclose(),该函数无参数。

A:对B:错

答案:B打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

A:对B:错

答案:BC语言中的文件是流式文件,因此只能顺序存取数据

A:对B:错

答案:B文件由数据序列组成,可以构成二进制文件或文本文件

A:错B:对

答案:B在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

A:对B:错

答案:A在程序结束时,应当用fclose函数关闭已打开的文件

A:错B:对

答案:B设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。

A:\0'B:非0值C:0D:NULL

答案:B设文件指针fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是()。

A:写操作结束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论