C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年_第1页
C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年_第2页
C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年_第3页
C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年_第4页
C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计(延边职业技术学院)智慧树知到期末考试答案2024年C语言程序设计(延边职业技术学院)已知:int

i,

x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是(

)for(

i=0;

i<3;

i++)printf(“%d”,

x[i][2-i]

);

A:369B:357C:159D:147答案:357若二维数组a有m列,则在a[i][j]之前的元素个数为:(

A:i*m+j+1B:i*m+j-1C:i*m+jD:j*m+i答案:i*m+j以下不能对二维数组进行正确初始化的语句是(

A:int

a[

][3

]={1,2,3,4,5,6};B:int

a[2][3]={0};C:int

a[

][3]={{1,2},{0}};D:int

a[2][3

]={{1,2},{3,4},{5,6}};答案:intC语言程序中,结构体类型变量在程序执行期间(

)。

A:部分成员驻留在内存中B:所有成员一直驻留在内存中C:没有成员驻留在内存中D:只有一个成员驻留在内存中答案:所有成员一直驻留在内存中执行语句for(i=1;i++<4;);后变量i的值是:

__。(

A:4B:不定C:3D:5答案:5下面程序的输出结果是main(){int

s,k;

for(s=1,k=2;k<5;k++)

s+=k;

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

}

A:15B:9C:1D:10答案:10已知:int

a[3][4]={0};则下面说法正确的是(

A:数组a中每个元素均可得到初值0B:只有元素a[0][0]可得到初值C:此定义语句是错误的D:数组a中每个元素都可得到初值,但其值不一定为0答案:数组a中每个元素都可得到初值,但其值不一定为0下列关系表达式中,结果为“假”的是(

A:(3!=4)>2B:(3+4)>6C:(3<4)==1D:3<=4||3答案:(3!=4)2已知:char

a[20],b[20];则以下正确的输入语句是(

A:gets(a,b);B:scanf(“%s%s”,&a,&b);C:scanf(“%s%s”,a,b);

D:gets(“a”);gets(“b”);答案:scanf(”%s%s”,a,b);下面对C语言字符数组描述错误的是(

A:可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值B:字符数组可以存放字符串C:字符数组中的字符串可以进行整体输入输出D:字符数组元素的下标从0开始答案:可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值以下符合C语言语法的赋值表达式是(

A:d=9+e,f=d+9B:d=9+e=d+7C:d=9+e+f=d+9D:d+1=9+e,e+1,d+9答案:d=9+e成员运算符“.”比指针运算符“*”优先级高。(

A:正确B:错误答案:正确定义a、b为双精度型变量的语句为:“doublea,b;”。

A:对B:错答案:对如果程序定义了一个符号常量

#define

PI

3.14159

程序在运算过程中为PI分配float类型的空间。(

A:正确B:错误答案:错误结构体变量必须先定义后才可以使用。(

A:正确B:错误答案:正确整型常数可用以下三种形式表示:十进制、二进制、八进制。

A:正确B:错误答案:错误实参向形参进行数值传递时,数值传递的方向是单向的,即形参变量值的改变不影响实参变量的值。(

A:正确B:错误答案:正确在C语言中,%是只能用于整数运算的运算符。(

A:对B:错答案:对内部静态变量的作用域和寿命与自动变量的相同。(

A:错B:对答案:错在C语言中,字符串常量存放在字符数组中要有一个结束符,该结束符是0。

A:正确B:错误答案:错误以下叙述正确的是(

A:do-while语句构成的循环不能用其他语句构成的循环来代替;B:do-while语句构成的循环只能用break语句退出;C:用do-while语句构成的循环,在while后的表达式为零时结束循环。D:用do-while语句构成的循环,在while后的表达式为非零时结束循环;答案:AI参考:正确选项是:D:用do-while语句构成的循环,在while后的表达式为非零时结束循环;\n\ndo-while循环的执行规则是在循环体中先执行一次循环体,然后再判断是否继续循环。当while后面的表达式为非零时,会继续循环;只有当表达式为零时,才会退出循环。因此,D选项是正确的。A、B、C选项都存在错误,因为do-while循环可以被其他类型的循环所替代,也可以使用break语句退出,或者在while后的表达式为零时结束循环。'下面程序段的循环次数是:

int

k=0;while(k<10)

{if(k<1)

continue;

if(k==5)

break;

k++;}

A:死循环,不能确定循环次数B:6C:5D:4答案:AI参考:正确答案是D,程序的循环次数是4。解析如下:程序首先将k赋值为0,然后进入循环。在循环中,如果k小于10,则执行循环体中的代码。在循环体中,如果k小于1,则使用continue语句跳过本次循环,继续下一次循环。如果k等于5,则使用break语句跳出循环。因此,在所有条件都不满足的情况下,k会自增1,继续下一次循环。因此,整个循环的次数是4。所以答案是D。'如下程序,

main()

{

int

y=3,x=3,z=1;

printf(“%d

%d\n”,(++x,y++),z+2);

}

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

A:4

2B:3

3C:3

4D:4

3答案:AI参考:运行该程序的输出结果是“C:3

4”。\n\n程序中,变量x、y和z分别被赋值为3、3和1。在第一个printf语句中,(++x,y++)的运算顺序是从右向左,先执行y++,再执行++x,所以x的值变为4,y的值不变为3。因此,(++x,y++)的结果为“4

3”。\n\n在第二个printf语句中,z+2的值为3+2=5。\n\n所以程序的输出结果是“3

4”。'以下正确的语句是(

A:int

a[3][

]={{1},{2},{3}};B:int

a[1][4]={1,2,3,4,5};C:int

a[2][3

]={{1},{1,2},{1,2,3}};D:int

a[

][3

]={0};答案:AI参考:正确选项是B:inta[1][4]={1,2,3,4,5};。\n\n在A选项中,初始化时第一维的大小未给出,无法初始化。在C选项中,第二维的大小为3,但是初始化时却有两个元素,也存在问题。在D选项中,数组声明但未赋值,也不符合要求。只有B选项完全符合题目要求,首先声明了一个一维数组a,然后逐个初始化其元素。'C语言最基本的数据类型是()

A:整型、实型、字符型B:整型、逻辑型、字符型C:整型、实型、逻辑型D:实型、逻辑型、字符型答案:AI参考:正确选项是C语言最基本的数据类型是:整型、实型、逻辑型。\n\n解释:C语言中有四种基本数据类型,分别是整型(int)、实型(float)、字符型(char)和逻辑型(bool)。其中,整型和实型是最常用的两种数据类型,它们分别对应着整数和浮点数。逻辑型数据在C语言中并不常用,但在某些特殊情况下可能会用到。字符型数据用于存储单个字符,也是C语言中最常用的数据类型之一。因此,选项C是正确的答案。'以下使i的运算结果为4的表达式是(

A:int

i=0,j=0;

(i=3,(i++)+i);B:int

i=1,j=1;

i+=j+=2;C:int

i=0,j=1;

i++=j++*2;D:int

i=1,j=0;

j=i=((i=3)*2);答案:AI参考:正确答案是【D】:inti=1,j=0;j=i=((i=3)*2)。\n\n解释:选项A中,(i=3,(i++)+i)表达式的执行顺序是先执行括号内的i++,再执行赋值操作,因此i的值是3而不是4;选项B中,i+=j+=2没有括号,优先级不明确,所以表达式的执行结果取决于具体的编译器;选项C中,由于表达式中有多个变量同时进行运算,会造成歧义,正确的写法应该是i+=j+=j*2;选项D中,先对i进行自增赋值操作i=3,然后再对i进行乘2操作,得到的结果是6,再赋值给j,所以j的值为6,最终表达式的结果为4。因此选项D是正确的。'分析以下程序,下列说法正确的是:______________

int

x=1,s=0;

while

(0!=0)

s+=++x;

printf(“%d”,s);

A:运行程序输出:0B:程序段中的控制表达式非法C:运行程序输出:1D:程序段执行无限次答案:AI参考:正确选项是C:运行程序输出:1。\n\n程序中的while循环条件为0!=0,这是一个非法的控制表达式,因为!=是逻辑运算符,不能与数字0进行比较。因此,程序段执行无限次的说法也是错误的。\n\n程序中使用了++x,这是一个自增操作符,会先取出x的值,然后再将x的值加1。因此,在循环中,x的值会先被加1,然后再与0进行比较。由于初始值x=1,所以循环条件为true,程序会一直执行循环体中的语句,s+=++x会将s的值加上x的当前值(即s的值加上1),因此程序输出的结果是s的当前值,即s+=++x后s的值为2,最后使用printf函数输出s的值。因此程序输出的是“1”。\n\n注意:这个程序的执行过程可能会导致程序异常终止或者出错,因为其使用了不合法的控制表达式。在实际编程中,应该避免使用不合法的控制表达式。'分析以下程序运行结果:___________________

main()

{

int

i,j,m=0;

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

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

m++;

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

}

A:12B:20C:15D:25答案:AI参考:程序运行结果为:D:25。\n\n程序中使用了两个嵌套的for循环,外层循环变量i从1到15,内层循环变量j从3到19。在每次内层循环结束后,m自增1,并使用printf函数输出m的值。由于两个循环都是步长为4的等差数列,因此当i从1增加到15时,j从3增加到19,此时m的值会增加到25。因此,程序的运行结果是输出25。\n\n因此,正确选项为D:25。'以下程序段:___________________

int

x=-1;

do{x=x*x;}

while(!x);

A:循环执行一次B:是死循环C:循环执行二次D:有语法错误答案:AI参考:正确选项是B:是死循环。\n\n程序段中的代码是一个do-while循环,循环体内的语句是x=x*x,而初始值x=-1。由于x的初始值为负数,因此每次循环执行x=x*x后,x的值都会增加,但是当x的值大于0时,!x的结果为false,循环终止,因此这个循环是一个死循环。所以选项B是正确的。选项A、C、D都是错误的,因为循环会一直执行下去,没有终止条件。'以下描述正确的是_______________。(

A:只能在循环体内和switch语句体内使用break语句B:在循环体内使用break语句或continue语句的作用相同C:当从多层循环嵌套中退出时,只能使用goto语句D:continue语句的作用是结束整个循环的执行答案:AI参考:正确选项是【A:只能在循环体内和switch语句体内使用break语句】。\n\n解释:\n\nA选项描述正确,因为break语句只能在循环体内和switch语句体内使用,不能在其他地方使用。B选项描述错误,因为break语句可以结束整个循环,而continue语句只结束本次循环,不影响下一次循环。C选项描述错误,因为多层循环嵌套中可以使用break语句退出。D选项描述错误,因为continue语句的作用是结束本次循环,而不是结束整个循环的执行。'对for(表达式1;;表达式3)可理解为(

A:for(表达式1;1

;表达式3)B:for(表达式1;表达式1

;表达式3)C:for(表达式1;0

;表达式3)D:for(表达式1;表达式2

;表达式3)答案:AI参考:正确选项是C:for(表达式1;0;表达式3)。\n\nfor循环的语法通常为:for(初始化表达式;循环条件表达式;执行操作表达式)。这里的for(表达式1;0;表达式3)表示循环次数为0次,即不执行循环体中的操作。这是for循环的一种常见用法,用于控制循环的次数,而非常规意义上的迭代操作。因此,选项C符合这个描述。\n\n选项A和D的表述不够准确,因为“表达式1”在此语境下并非需要执行的操作,而是循环的初始条件。选项B的表述则有些混乱,因为它试图将“表达式1”作为循环的主体,这在语法上是不正确的。'已知:char

str[

]=”ab\n\012\\\””;则执行语句:

Printf(“%d”,

strlen(str));

的结果是(

A:3B:12C:6D:4答案:"AI参考:根据您提供的代码,这是一个关于C语言中的字符数组的问题。执行`printf(%d,strlen(str));`语句时,实际上会打印字符串str的长度。根据字符串中的字符和`12\`等转义字符的特性,实际上只包含了字符串中`a`,`b`,``,``,``,`12`,和一个结尾符(代表字符串结束)的长度,即6个字符。所以正确答案是C:6。"下面程序运行后的结果是(

)。

#include<stdio.h>

int

main()

{

FILE

*fp;

int

i,m=9,n=9;

fp=fopen('d:\test.txt','w');

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

fprintf(fp,'%d',i);

fclose(fp);

fp=fopen('d:\test.txt','r');

fscanf(fp,'%d%d',&m,&n);

fclose(fp);

printf('m=%d,n=%d',m,n);

return

0;

}

A:m=9,n=9B:m=1,n=2C:m=1234,n=9D:m=1,n=234答案:AI参考:正确选项是【A:m=9,n=9】。\n\n程序首先使用fopen函数以写入模式("w")打开一个名为"d:\test.txt"的文件,并在该文件中写入数字1到4。然后,使用fclose函数关闭文件。接着,程序再次以读取模式("r")打开同一个文件,并使用fscanf函数从文件中读取两个整数m和n。由于在写入文件时使用的是"%d",所以在读取文件时也使用"%d"格式化字符串,因此读取的数字为文件中的实际数字,即m=9,n=9。所以程序输出结果为"m=9,n=9"。选项B、C、D都不符合程序的运行结果。'分析如下程序运行结果:________________

main()

{int

a=2,b=-1,c=2;

if(a<b)

if(b<0)

c=0;

else

c++;

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

}

A:1B:2C:0D:3答案:AI参考:答案:D\n\n程序运行结果为3。\n\n首先,程序中定义了三个整数变量a、b和c,其中a的值为2,b的值为-1,c的值为2。\n\n接下来,程序进入第一个if语句,判断a是否小于b。由于a的值为2,而b的值为-1,因此a小于b,所以进入第一个if语句的判断条件部分。\n\n在第一个if语句中,又判断b是否小于0。由于b的值为-1,因此b小于0,所以执行第一个if语句中的c=0;语句,此时c的值为0。\n\n然后程序跳出第一个if语句,进入第二个if语句的判断条件部分,但由于前面的if语句已经执行过c=0;语句,所以此时c的值为0。\n\n由于没有满足第二个if语句的条件(即b不小于0),所以执行else语句中的c++;语句,将c的值加1。此时c的值为1。\n\n最后,程序使用printf函数输出变量c的值,即3。\n\n因此,程序运行结果为3。'如下程序的输出结果是:_____

main()

{int

x=1,a=0,b=0;

switch(x)

{case

0:

b++;

case

1:a++;

case

2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}

A:a=1,b=0B:a=1,b=1C:a=2,b=2D:a=2,b=1答案:AI参考:输出结果为:a=1,b=1。\n\n程序中,变量a和b的值在switch语句中没有被改变,因此初始值仍然是0。在switch语句中,当x等于0时,b++,此时b的值变为1。当x等于1时,case语句没有执行任何操作,因此a的值保持不变。当x等于2时,a++和b++同时执行,此时a的值变为1,b的值变为2。最后,printf函数输出a和b的值,即a=1,b=1。因此,正确选项为B:a=1,b=1。'已知:char

str1[20]=”abcde”,str2[20]=”xyz”;则执行语句:

printf(“%d”,strlen(

strcpy(str1,str2)));

输出结果是(

A:5B:9C:8D:3答案:"AI参考:输出结果为:B:9。首先,strlen()函数用于计算字符串的长度,返回的是字符串中字符的个数。这里使用strcpy()函数将str2复制到str1中,strlen()函数也会计算出str2中字符的个数。而str2中有两个字符z和y,因此strlen(str2)的输出结果为9。因此,最终printf语句中的输出结果为9。注意:strcpy()函数在C语言中是安全的,因为它在内

温馨提示

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

评论

0/150

提交评论