C语言程序设计基础智慧树知到期末考试答案2024年_第1页
C语言程序设计基础智慧树知到期末考试答案2024年_第2页
C语言程序设计基础智慧树知到期末考试答案2024年_第3页
C语言程序设计基础智慧树知到期末考试答案2024年_第4页
C语言程序设计基础智慧树知到期末考试答案2024年_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计基础智慧树知到期末考试答案2024年C语言程序设计基础C语言中,执行表达式(*p)++;后p的指向改变了。

A:错B:对答案:错增1(或自增)、减1(或自减)运算符都是双目运算符。

A:对B:错答案:错语句int a=2;if(a=3)b=1;执行后b的值是1。

A:错B:对答案:对if(表达式)语句1else语句2上述结构中,如果表达式中条件是a>10,则else的条件隐含为a

A:对B:错答案:错在数组中,数组名代表该数组的首地址

A:错B:对答案:对二层循环for(i=0;i

A:错B:对答案:对所有关系运算符的运算优先级相同。

A:错B:对答案:错为了提高读写效率,我们进行读写操作后不应关闭文件以便下次再进行读写。

A:错B:对答案:错int a=5,*p;p=则p的值为5。

A:错B:对答案:错C语言中,强制类型转换后,原变量的值和数据类型不变。

A:错B:对答案:对表达式:10!=9的值是

A:trueB:0C:1D:非零值答案:1设变量i是int类型,f是float型,d是double型,执行表达式5+’i’-f*d,其结果的数据类型为。

A:double型B:非法表达式C:float型D:int型答案:double型若有以下数组说明,则数值最小的和最大的元素下标分别是。inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A:0,12B:1,12C:0,11D:1,11答案:0,11与语句while(!s)中的条件等价的是()。

A:s==0B:s=0C:s==1D:s!=0答案:s==0能正确表示逻辑关系“a≥10”或“a≤0”的C语言表达式是()。

A:a>=10||aB:a>=0|aC:a>=10oraD:a>=10&&a答案:a=10C语言中,一个整数如果其值在-323768~32767范围内,认为它是int型,只能赋值给int型变量。

A:正确B:错误答案:错如果将结构体指针作为函数的参数,可以完成比基本类型指针更为复杂的操作。

A:错B:对答案:对结构体指针变量不可以直接指向结构体数组中的元素。

A:对B:错答案:错在C语言中,字符串常量隐含处理成以‘\0’结尾。

A:对B:错答案:对C语言中,符号常量的值在程序运行过程中可以改变。

A:错B:对答案:错C语言中,不要求对程序中所用到的变量进行强制定义。

A:错B:对答案:错程序设计语言有两个功能即数据表达和流程控制。

A:错B:对答案:对指针数组和指向一维数组的指针含义相同。

A:错B:对答案:错C语言中函数参数传递方式有地址传递和值传递两种。

A:对B:错答案:错执行下面程序,正确的输出是()。intx=5,y=7;voidswap(){intz;z=x;x=y;y=z;}intmain(void){intx=3,y=8;swap();printf("%d,%d\n",x,y);return0;}

A:3,8B:8,3C:7,5D:5,7答案:3,8有以下程序,运行后结果是()#includestructS{inta,b;}data[2]={10,100,20,200};main(){structSp=data[1];printf("%d\n",++(p.a));}

A:20B:11C:10D:21答案:21C语言中,逻辑“真”等价于()

A:非零的数B:大于零的整数C:大于零的数D:非零的整数答案:非零的数在位运算中,操作数每左移一位,其结果相当于()

A:操作数乘以2B:操作数除以2C:操作数除以4D:操作数乘以4答案:操作数乘以2下列程序段的输出是____。intc[]={1,3,5};int*k=c+1;printf("%d",*++k);

A:6B:5C:4D:3答案:5以下程序运行后的输出结果是()。#includefloatFun(intx,inty){return(x+y);}intmain(){inta=2,b=5,c=8;printf("%3.0f\n",Fun((int)Fun(a+c,b),a-c));return0;}

A:9.0B:编译出错C:21D:9答案:9.0下面属于动态数据结构的是

A:结构体数组B:字符数组C:链表D:指针数组答案:链表执行以下程序段后,变量i的值是()inti=2;do{i+=5;}while(i<15);

A:17B:16C:20D:21答案:17假设字符变量ch中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是

A:ch=ch-32B:ch=ch-'a'-'A'C:ch=ch+'a'-'A'D:ch-=32答案:ch系列程序执行后的结果是()intmain(){inta,b[5];a=0;b[0]=3;printf("%d,%d\n",b[0],b[1]);return0;}

A:3,0B:3,不确定C:30D:0,3答案:3,不确定下列程序段的功能是:计算数组x中相邻两个元素的和,依次存放到a数组中,然后输出a数组。程序段中待填空的(1)和(2)的正确选项是()。inti;inta[9],x[10];for(i=0;i<10;i++){scanf("%d",&x[i]);}for((1);i<10;i++){/*此处待填空(1)*/a[i-1]=x[i]+(2);/*此处待填空(2)*/}for(i=0;i<9;i++){printf("%d",a[i]);}printf("\n");

A:(1)i=1(2)x[i+1]B:(1)i=0(2)x[i+1]C:(1)i=0(2)x[i-1]D:(1)i=1(2)x[i-1]答案:(1)i=1(2)x[i-1]若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()

A:函数调用可以作为一个函数的形参B:函数调用可以作为一个函数的实参C:函数调用可以出现在表达式中D:函数调用可以作为独立的语句存在答案:函数调用可以作为一个函数的形参运行以下代码的结果是(省略框架代码)inta=1,b=2,c=3,t;while(a

A:1,2,0B:1,2,1C:2,1,0D:2,1,1答案:1,2,1以下哪一项中的循环不是重复5次

A:inti;for(i=0;iB:inti;for(i=0;iC:inti;for(i=1;iD:inti;for(i=1;i答案:inti;for(i=0;i对于以下代码:inti;for(i=0;iprintf("%d",i);for循环后,i的值是多少?

A:11B:9C:0D:10答案:10下列条件语句中,功能与其他语句不同的是

A:if(a)printf("%d\n",x);elseprintf("%d\n",y);B:if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C:if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D:if(a==0)printf("%d\n",x);elseprintf("%d\n",y);答案:D打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#includeintmain(){inti,j,k,n;printf("resultis:");for(n=100;________;n++)//填空1处{i=n/100;//分离出百位填空2处j=____________;//分离出十位填空3处k=____________;//分离出个位填空4处if(_________________________){printf("%d\t",n);//输出结果}}printf("\n");return0;}

A:第1处:n第2处:(n-i*100)/10第3处:n%10第4处:i*100+j*10+k==i*i*i+j*j*j+k*k*kB:第1处:n第2处:(n-100i)/10第3处:n/10第4处:i*100+j*10+k=i*i*i+j*j*j+k*k*kC:第1处:n第2处:(n-i*100)%10第3处:n/10第4处:100i+10kj==i*i*i+j*j*j+k*k*kD:第1处:n第2处:n%100第3处:n%10第4处:100i+10kj=i*i*i+j*j*j+k*k*k答案:第1处:n第2处:(n-i*100)/10第3处:n%10第4处:i*100+j*10+k==i*i*i+j*j*j+k*k*kif语句的基本形式是:if(表达式)语句以下关于“表达式”值得叙述中正确的是()

A:必须是逻辑值B:可以是任意合法的数值C:必须是整数值D:必须是正数答案:可以是任意合法的数值以下程序运行后的输出结果是____。#includestructs{intx;inty;}data[2]={10,100,20,200};intmain(){structs*p=data+1;printf("%d\n",p->x);return0;}

A:20B:21C:10D:11答案:20下面程序的功能是从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负号)。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。程序的运行结果如下:Inputdatais:-4213↙Thesumofthetotalbitis10按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。1.#include2.#include3.intmain()4.{5.inti1,i2,i3,i4,k,n;6.printf("Inputdatais:");7.scanf("%d",&n);8.k=fabs(n);//取绝对值9.i1=___________;//分离出千位10.i2=___________;//分离出百位11.i3=___________;//分离出十位12.i4=___________;//分离出个位13.printf("Thesumofthetotalbitis%d\n",i1+i2+i3+i4);14.return0;15.}

A:第9行:k%100第10行:(k-i1*1000)/100第11行:k/10第12行:(k-i1*100-i2*10)/10B:第9行:k%10第10行:(k-i1*1000)/10第11行:(k-i1*1000-i2*100)/10第12行:k/10C:第9行:k/1000第10行:(k-i1*1000)/100第11行:(k-i1*1000-i2*100)/10第12行:k%10D:第9行:k%1000第10行:(k-i1*100)/10第11行:(k-i1*1000-i2*100)%10第12行:k%10答案:第9行:k/1000第10行:(k-i1*1000)/100第11行:(k-i1*1000-i2*100)/10第12行:k%10能正确表示逻辑关系"a≥10或a≤0"的C语言表达式是()。

A:a>=10||aB:a>=0|aC:a>=10&&aD:a>=10ora答案:a=10以下程序段的输出结果是#includeintmain(void){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%d\n",s);return0;}

A:21B:28C:16D:12答案:16以下程序的输出结果是_。#includeintfunc(inta,intb){return(a+b);}intmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);return0;}

A:14B:13C:12D:15答案:15为使下列程序段不陷入死循环,从键盘输入的数据应该是()intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);

A:任意正奇数B:任意负偶数C:任意负奇数D:任意正偶数答案:任意负奇数执行以下代码后,x的值是inta=0,b=2,c=1,x=35;if(a)x--;elseif(b)if(c)x=3;elsex=4;

A:34B:35C:3D:4答案:3从键盘任意输入一个整数,编程判断它的奇偶性。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。1.#include2.intmain()3.{4.inta;5.printf("Inputanintegernumber:");6.scanf("%d",&a);7.8.if(________)9.10.printf("aisanevennumber\n");11.else12.printf("aisanoddnumber\n");13.14.return0;15.}

A:a/2=0B:a%2!=0C:a%2=0D:a%2==0答案:a%2==0下面的程序段将输出()doublea[][2]={1,2,3};printf("%g\n",a[1][1]);

A:0B:3C:1D:2答案:0下列定义变量的语句中错误的是()

A:int_intB:charForC:floatUS$D:doubleint_C答案:float若有以下语句,则下面表达式的值为1002的是()。structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,2}};structstudent*p;p=stu;

A:(*++p).ageB:(p++)->ageC:(p++)->numD:(*p).num答案:(*++p).age如果有以下定义语句,则输出结果为()。struct{intx,y;}s[2]={{1,3},{2,7}};printf(“%d\n”,s[0].y/s[1].x);

A:0B:3C:1D:2答案:1表达式x&&1用在if的条件中时,和()是等价的?

A:x!=1B:x==0C:x!=0D:x==1答案:x!=0下面程序的运行结果是()structKeyWord{charKey[20];intID;}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};main(){printf("%c,%d\n",kw[3].Key[0],kw[3].ID);}

A:1,4B:f,4C:i,3D:n,3答案:f,4编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:操作数1运算符op操作数2计算并输出表达式的值,其中算术运算符包括:加(+)、减(-)、乘(*)、除(/)。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。1.#include2.intmain()3.{4.intdata1,data2;5.charop;6.printf("Pleaseenteranexpression:");7.scanf("%d%c%d",&data1,&op,&data2);/*输入运算表达式*/8.switch(____)/*根据输入的运算符确定执行的运算*/9.{10.case'+':/*加法运算*/11.printf("%d+%d=%d\n",data1,data2,data1+data2);12.break;13.case'-':/*减法运算*/14.printf("%d-%d=%d\n",data1,data2,data1-data2);15.break;16.case'*':/*乘法运算*/17.printf("%d*%d=%d\n",data1,data2,data1*data2);18.break;19.case'/':/*除法运算*/20.if(_________)/*为避免除0错误,检验除数是否为0*/21.printf("Divisionbyzero!\n");22.else23.printf("%d/%d=%d\n",data1,data2,data1/data2);24.break;25.default:/*处理非法运算符*/26.printf("Invalidoperator!\n");27.}28.return0;29.}

A:第8行:op第20行:data2=0B:第8行:'op'第20行:data2==0C:第8行:"op"第20行:data2=0D:第8行:op第20行:data2==0答案:第8行:op第20行:data2==0有说明inta[10]={1,2,3,4,5,6,7,8,9,10},p=a;则数值为9的表达式是_。

A:*p+=9B:*(p+8)C:*p+9D:p+8答案:*(p+8)编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串,如"level"和"ABCCBA"都是回文。提示:(1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。(2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置(加1),使指针pEnd向后移动一个字符位置(减1),一旦发现两字符不等或两指针已互相超越(不可能是回文),则立即停止循环。(3)根据退出循环时两指针的位置,判断字符串是否为回文。在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include#includeintmain(void){charstr[80],*pStart,*pEnd;intlen;printf("Inputstring:");gets(str);len=__________;//填空1处pStart=str;pEnd=____________;//填空2处while(__________________)//填空3处{pStart++;pEnd--;}if(__________)//填空4处{printf("No!\n");}else{printf("Yes!\n");}return0;}

A:第9行:strlen(str)第13行:str+len-1第15行:(*pStart==*pEnd)&&(pStart<pEnd)第21行:pStart<pEndB:第9行:sizeof(str)第13行:str+len-1第15行:(*pStart==*pEnd)||(pStart<pEnd)第21行:pStartC:第9行:sizeof(str)第13行:str+len第15行:(*pStart!=*pEnd)&&(pStart<pEnd)第21行:pStart!=pEndD:第9行:strlen(str)第13行:str+len第15行:(*pStart=*pEnd)&&(pStart第21行:pStart==pEnd答案:第9行:strlen(str)第13行:str+len-1第15行:(*pStart==*pEnd)(pStartpEnd)第21行:pStartpEnd以下程序段若要使输出值为2,则应该从键盘给n输入的值是ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);

A:-3B:0C:-5D:-1答案:-3以下正确的函数原型是。

A:intfun[intx,inty];B:intfun(intx,y);C:intfun(int,int);D:intfun(intx;inty);答案:AI参考:正确选项是B:intfun(intx,y);。\n\n函数原型是声明一个函数的基本格式,它应该包括函数类型、函数名、参数列表和返回值类型。选项A和D中缺少了参数列表中的参数数量和类型,选项C中缺少了返回值类型。只有选项B符合函数原型的格式要求,它声明了一个名为fun的函数,该函数接受两个int类型的参数x和y,并且没有指定返回值类型。'以下程序的输出结果是。

intx;

voidfun(intx)

{

x*=x;

printf("%d",x);

}

intmain()

{

intx=4;

fun(x);

printf("%d",x);

{

intx=0;

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

}

printf("%d",x);

return0;

}

A:16,4,5,5B:16,16,17,17C:16,4,1,1D:16,4,1,4答案:AI参考:正确答案是【C:16,4,1,1】。\n程序中首先定义了一个变量x,值为4,然后调用fun函数,将x的值传递给fun函数中的x,fun函数中x*=x运算后值为16,然后输出这个值。接着main函数中输出变量x的值,值为4。然后在fun函数中的代码块中又定义了一个变量x,并使用++x将x的值变为1,再输出这个值。最后再次输出变量x的值,此时x的值为1。所以程序输出的结果为:16,4,1,1。因此选项C为正确答案。'以下不是无限循环的语句为。

A:for(i=10;;i--)sum+=i;B:for(;;x++=i);C:for(y=0,x=1;x>++y;x=i++)i=xD:while(1){x++;}答案:AI参考:正确选项是:D:while(1){x++;}\n\n该题目要求找出不是无限循环的语句,因为只有非无限循环的语句才是正确的选项。在四个选项中,只有D选项是条件语句,并且在无限循环的条件为假的情况下,x的值会增加一个单位。其他三个选项都存在无限循环的条件,不符合题目要求。因此,D选项是正确答案。'下面程序运行结果是。

#defineMUL(x,y)x*y

intmain()

{

doublex=4,y=6,z;

z=MUL(x-y,x+y);

printf("%.2f",z);

return0;

}

A:-14B:-20C:24D:12答案:AI参考:正确选项是`C:24`。\n\n程序中使用了宏定义`MUL(x,y)`,它相当于一个函数,将`x*y`的结果返回。在`main()`函数中,将`x-y`和`x+y`分别代入`MUL(x-y,x+y)`中,得到`z=4*6=24`。最后使用`printf("%.2f",z)`输出结果,保留两位小数,所以最终输出结果为`24.00`。'下面程序段中,for循环的执行次数是___________。

char*s=”\ta\018bc”;

for(;*s!=’\0’;s++)printf(“*”);

A:9B:5C:7D:6答案:"AI参考:正确选项是【D:6】。程序段中,首先定义了一个字符指针s,指向字符串a18bc。然后使用for循环遍历这个字符串,直到遇到字符串的结束符为止。在每次循环中,指针s都会向前移动一位,输出一个星号(*)。由于字符串a18bc中有5个字符(包括),因此循环将会执行5次。但是在循环内部使用了printf函数输出星号,因此在执行了前四次循环后,s指针会到达字符串的末尾,因此第五次循环不会再执行,即循环执行次数为6次。所以答案为D。"以下函数的功能是。

voidfun(char*s1,char*s2)

{inti;

char*s=s1;

for(;*s2!='\0';s2++)

{for(j=0,s1=s;*s1!='\0';s1++)

if(*s1!=*s2)

s[j++]=*s1;

s[j]='\0';

}

}

A:找出字符串s1和s2中共有的字符;B:找出在字符串s1中而不在s2中的所有字符;C:比较两个字符串的长度是否相等;D:将字符串s2连接到s1之后;答案:"AI参考:正确选项是【B:找出在字符串s1中而不在s2中的所有字符】。根据代码逻辑,函数的功能是找出在字符串s1中而不在字符串s2中的所有字符。函数首先将字符串s1复制到变量s中,然后遍历字符串s2,如果s1和s2中对应位置的字符不相等,就将s1中该字符复制到s中,并在末尾添加字符串结束符。最后,返回的是在s1中而不在s2中的所有字符。因此,选项B是正确的。选项A、C、D都不符合代码逻辑。"对于return语句说法正确的是。

A:main函数中不能使用return语句。B:return语句必须返回值;C:return语句只能出现在函数的结尾部分;D:return语句可以在一个函数中出现多次;答案:AI参考:正确选项是【B:return语句必须返回值;】。\n\n在编程中,return语句用于从函数中返回结果。在main函数中可以使用return语句,但是通常main函数不需要返回值,它只是一个程序的入口点。return语句通常出现在函数的结尾部分,用于返回函数执行的结果。在函数中可以多次使用return语句,但每次只能返回一个值。因此,选项B是正确的。'下面有关for循环的正确描述是。

A:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来B:for循环是先执行循环体语句,后判断表达式C:for循环只能用于循环次数已经确定的情况D:在for循环中,不能用break语句跳出循环体答案:AI参考:正确选项:A:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。\n\nfor循环的描述中,A选项是正确的。B选项是错误的,因为for循环是先判断表达式,再执行循环体语句。C选项也是错误的,因为for循环可以用于循环次数不确定的情况,例如遍历一个集合或者列表。D选项也是错误的,因为for循环中可以使用break语句跳出循环体。因此,正确答案为A选项。'请读程序:

#include

main()

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

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

上面程序的输出结果是

A:a=2,b=1B:a=1,b=0C:a=2,b=2D:a=1,b=1答案:AI参考:输出结果为:D:a=1,b=1\n\n程序中,变量x的值为1,根据switch语句,执行case1的代码块。在case1的代码块中,又嵌套了一个switch语句,当y的值为0时,a++;当y的值为1时,b++。由于y的值没有变化,所以b只会执行一次,即b++为b=1。\n\n在case1的代码块中,还有一个break语句,用于跳出switch语句。因此,执行完case1的代码块后,a的值变为1,b的值变为1。\n\n接下来执行case2的代码块,由于x的值不是1,所以不会执行case2的代码块。\n\n最后,程序输出变量a和b的值,即a=1,b=1。因此,正确答案是D:a=1,b=1。'选择出合法的判断a和b是否相等的if语句(设intx,a,b,c;)。

A:if(a=b)x++;B:if(a!=b)x++;C:if(a=D:if(a=>b)x++;答案:AI参考:正确的选项是B:if(a!=b)x++;\n\n这个语句是用来判断变量a和b是否相等的。在C语言中,等号“=”用于赋值操作,因此选项A中的if(a=b)语句表示将b的值赋给a,然后再判断a是否等于b,这显然是不合法的。选项C中的if语句缺失了表达式,也是不完整的。选项D中的if语句使用大于号“=>”来判断相等关系,这是不合法的。只有

温馨提示

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

评论

0/150

提交评论