程序设计及实践C语言版学习通超星期末考试答案章节答案2024年_第1页
程序设计及实践C语言版学习通超星期末考试答案章节答案2024年_第2页
程序设计及实践C语言版学习通超星期末考试答案章节答案2024年_第3页
程序设计及实践C语言版学习通超星期末考试答案章节答案2024年_第4页
程序设计及实践C语言版学习通超星期末考试答案章节答案2024年_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

程序设计及实践C语言版学习通超星期末考试章节答案2024年设有以下宏定义:#defineN4#defineY(n)((N+1)+1)

则执行语句:z=2*(N+Y(5+1));后,z的值为(

)。

答案:60以下程序的输出结果为(

)。#include#definePOWER(x,y)pow(x,y)#defineTWO2#defineADD(y)y++voidmain(){

inta=3;

printf("%f\n",POWER(ADD(a),TWO-1));

}

答案:3.000000正向建立单链表。题目描述题目内容:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。输入格式:一行内输入若干个正整数,之间用空格隔开,并以-1结束。输出格式:一行内输出建立的单链表数据结果,之间用两个分隔符--隔开,结束标志-1不输出。输入样例:246810-1输出样例:--2--4--6--8--10测试用例用例1分数:25错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#include"stdio.h"#include"stdlib.h"typedefstructNode{

intdata;

structNode*next;

}LList;intmain(){

LList*header=NULL;

structNode*p;

while(1)

{

intinput;

scanf("%d",&input);

if(input==-1)break;

if(!header)

{

header=(structNode*)malloc(sizeof(structNode));

p=header;

header->data=input;

header->next=NULL;

}

else

{

p->next=(structNode*)malloc(sizeof(structNode));

p=p->next;

p->data=input;

p->next=NULL;

}

}

p=header;

structNode*preP=NULL;

p=header;

inti=0;

while(p)

{

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

p=p->next;

}

return0;}链表合并。题目描述题目内容:已知单链表LA=(a1,a2,…,am)和LB=(b1,b2,…,bn),编写程序按以下规则将它们合并成一个单链表LC,要求新表LC利用原表的存储空间。

LC=(a1,b1,…,am,bm,bm+1,…,bn),m<=n或者

LC=(a1,b1,…,bn,an,an+1,…,am),m>n输入格式:一行内输入单链表LA中的数据(若干个正整数,之间用空格隔开,并以-1结束)

一行内输入单链表LB的数据(若干个正整数,之间用空格隔开,并以-1结束)输出格式:一行内输出合并后单链表LC的数据结果,之间用两个分隔符--隔开,结束标志-1不输出。输入样例:1357-1

246-1输出样例:--1--2--3--4--5--6--7测试用例用例1分数:20错误提示:

用例2分数:20错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#include#includetypedefintElemType;typedefstructlinknode

{

ElemTypedata;

structlinknode*next;

}LNode,*LinkList;//创建链表LinkListCreate(void)

{

LinkListhead,current;

ElemTyped;

LNode*s;

current=head=(LinkList)malloc(sizeof(LNode));//head节点

current->data=0;

while(1)

{

scanf("%d",&d);

if(d==-1)

break;

s=(LinkList)malloc(sizeof(LNode));//为新节点分配内存空间

s->data=d;

current->next=s;

current=s;

d=getchar();

}

current->next=NULL;

//最后尾指针为NULL

returnhead;

}//输出链表voidList(LinkListL)

{

LinkListp;

p=L->next;

//

while(p!=NULL)

{

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

p=p->next;

}

}//合并链表voidCoalitionLinkList(LinkListL1,LinkListL2)

{

LinkListp1=L1->next;

LinkListp2=L2->next;在双向链表中,在p所指向的结点前插入一个q所指向的结点,相应的操作语句是()。注:双向链表的结点结构为(prior,data,next)。

答案:q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;组合数。题目内容:本题要求编写程序,根据公式Cnm=算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数m和n(m≤n),以英文,分隔。输出格式:输出组合数计算结果,题目保证结果在类型范围内。输入样例:2,7输出样例:21时间限制:500ms内存限制:32000kb

答案:#includedoublefactorial(intn);intmain(){

intn,m,result;

scanf("%d,%d",&m,&n);

result=factorial(n)/(factorial(m)*factorial(n-m));

printf("%d",result);

return0;}doublefactorial(intn){

if(n<=1)

return1;

returnn*factorial(n-1);}最大公约数与最小公倍数。题目内容:编写两个函数,分别求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数,然后输出结果。两个整数由键盘输入。约定最大公约数为正整数,两数里有负的则最小公倍数就为负的。输入格式:输入均不为0的整数n和m(n与m的乘积还在整数范围内)(两数之间用英文,隔开)输出格式:输出这两个整数的最大公约数和最小公倍数(两结果之间用英文,隔开)输入样例:24,36输出样例:12,72输入样例:-48,128输出样例:16,-384时间限制:500ms内存限制:32000kb

答案:#includeintgcd(inta,intb){

if(a<0)

a=-a;

if(b<0)

b=-b;

returnb==0?a:gcd(b,a%b);}intlcm(inta,intb,intp){

return(a*b)/p;}intmain(){

inta,b;

intp,q;

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

p=gcd(a,b);

q=lcm(a,b,p);

printf("%d,%d",p,q);

}爬楼梯。题目内容:可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢?n值从键盘输入。输入格式:输入一个整数n,(1<=n<46)。输出格式:输出当楼梯阶数是n时的上楼方式总数。输入样例:1输出样例:1输入样例:4输出样例:7输入样例:24输出样例:1389537时间限制:500ms内存限制:32000kb

答案:#includeintf(intn){

n++;

inti;

inttable[n];

for(i=0;i=1&&n<46){

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

}

return0;}为提高程序的运行速度,在函数中对于自动变量和形参可用register型的变量。

答案:对下列函数调用语句中含有5个实参。fun((a1,a2),(a3,a4,a5));

答案:错凡在函数中未指定存储类别的变量,其隐含的存储类别是void类型。

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

)。#includeintf(inta){

intb=0;

staticintc=3;

a=c++,b++;

returna;}voidmain(){

inta,i,t;

a=3;

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

t=f(a++);

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

答案:5以下程序的执行结果是(

)。#includelongff(intn){

if(n>3)

return(ff(n-1)+ff(n-2));

elsereturn(3);}voidmain(){

printf("%d\n",ff(4));}

答案:6下列程序的输出结果是(

)。#includevoidf(intx,inty,intz){

z=x+y;}voidmain(){

inta;

f(5,6,a);

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

答案:不确定的值以下程序的输出结果是(

)。#includeintfunc(inta,intb){

return(a+b);}voidmain(){

intx=6,y=7,z=8,r;

r=func(func(x,y),z--);

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

答案:21函数形参与实参之间的传递是“值传递”,以下叙述正确的是________。

答案:实参和与其对应的形参各占用独立的存储单元以下说法不正确的是(

)。

答案:在一个函数内的复合语句中定义的变量在本函数内有效以下程序的执行结果是(

)。#includeintk=1;voidfun(intm){

m+=k;

k+=m;

{

chark='B';

printf("%d,",k-'A');

}

printf("%d,%d",m,k);}voidmain(){

inti=4;

fun(i);

printf("%d,%d",i,k);}

答案:1,5,64,6以下程序的输出结果是(

)。#include#includevoidmain(){

charstr[10]="Ch\nina";printf("%d",strlen(str));}

答案:6假设a、b均为字符数组,则以下正确的输入语句是(

)。

答案:scanf("%s%s",a,b);以下程序执行后的输出结果是(

)。

#include

voidmain()

{

inti,j,s=0;

inta[4][4]={1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0};

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

{

i=j;

if(i>2)i=3-j;

s+=a[i][j];

}

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

}

答案:16追查车号。题目描述题目内容:一辆卡车违反交通规则,撞人逃逸。现场三人目击事件,但都没有记住车号,只记下车的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号正好是一个整数的平方。请根据以上线索求出车号。输出格式:Thenumberis****。测试用例用例1分数:20错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#include#includeintmain(){inti,j,k,l;for(i=0;i<10;i++){j=i;for(k=0;k<10;k++){l=k;if(i==k){continue;}else{doublenums=sqrt(i*1000+j*100+k*10+l);if((int)nums==nums){intplateNum=(i*1000+j*100+k*10+l);printf("Thenumberis%d.",plateNum);break;}else{continue;}}}}return0;}图形打印。题目描述题目内容:编写程序,打印以下图形(行n的值由键盘输入)。

*******

******

*****

****

***

**

*输入样例:5输出样例:

*****

***

**

*输入样例:9输出样例:

*********

********

*******

******

*****

****

***

*测试用例用例1分数:10错误提示:用例2分数:10错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#include#includeintmain(){

inta,i,j,k;

scanf("%d",&a);

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

{

if(j!=1)

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

printf("");

for(k=1;k<=a-j+1;k++)

printf("*");

printf("\n");

}

getch();

return0;}特征四位数。题目描述题目内容:已知四位数3025具有一个特殊性质:它的前两位数字30与后两位数字25之和是55,而55的平方正好等于3025。编程找出所有具有这种性质的四位数。输出格式:每一个四位数自占一行测试用例用例1分数:20错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

inti,n,m;

for(i=1000;i<10000;i++)

{

m=i%100;

n=i/100;

if((n+m)*(n+m)==i)

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

}

return0;}有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩余2阶,若每步跨5阶,则最后剩余4阶,若每步跨6阶,则最后剩余5阶,若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶。请补充while语句后的判断条件。

#include

voidmain(){

inti=1;

while(

)

++i;

printf("阶梯共有%d阶.\n",i);}

答案:!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))星期推算。题目描述题目内容:假设今天是星期日,编写一个程序,求2019天后是星期几。输出样例:星期*(星期一、星期二、星期三、星期四、星期五、星期六、星期日)测试用例用例1分数:20错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

inta;

intb=2019;

a=(b%7);

if(a==0)

printf("星期日");

if(a==1)

printf("星期一");

if(a==2)

printf("星期二");

if(a==3)

printf("星期三");

if(a==4)

printf("星期四");

if(a==5)

printf("星期五");

if(a==6)

printf("星期六");

return0;

}天数判断。题目描述题目内容:编写程序,从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。输入样例:2019-3输出样例:31输入样例:2019-9输出样例:30输入样例:2019-2输出样例:28输入样例:2004-2输出样例:29测试用例用例1分数:5错误提示:用例2分数:5错误提示:用例3分数:10错误提示:用例4分数:10错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

intm,y;

intdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};

scanf("%d-%d",&y,&m);

if(m==2)

{

if(y%400==0||(y%4==0&&y%100!=0))//闰年。

printf("29\n");

elseprintf("28\n");

}

else

printf("%d\n",days[m-1]);

return0;}if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句。if(表达式)

语句1else

语句2

答案:错以下程序的输出结果为(

)。#includevoidmain(){

inta=30;

printf("%d",(a/3>0)?a/10:a%3);}

答案:3下列程序段运行后x的值是(

)。inta=0,b=0,c=0,x=35;if(!a)

x--;elseif(b);if(c)

x=3;else

x=4;

答案:4希望当num的值为奇数时,表达式的值为“真”;num的值为偶数时,表达式的值为“假”。则以下不能满足该要求的表达式是(

)。

答案:!(num%2)进制转换。题目描述题目内容:编写程序,输入一个八进制数(不超过3位),输出该数对应的十进制数。输入样例:17输出样例:17(8)=15(10)输入样例:111输出样例:111(8)=73(10)测试用例用例1分数:10错误提示:用例2分数:10错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

intnum,ge,shi,bai;

scanf("%d",&num);

bai=num/100;

shi=num%100/10;

ge=num%10;

printf("%d(8)=%d(10)",num,ge+shi*8+bai*8*8);

return0;}时刻转换。题目描述题目内容:编写一个程序,从键盘输入某个分钟数,将其转换成用小时和分钟表示,并将表示结果输出。输入样例:320输出样例:320(m)=5(h):20(m)输入样例:68输出样例:68(m)=1(h):08(m)输入样例:55输出样例:55(m)=0(h):55(m)测试用例用例1分数:10错误提示:用例2分数:5错误提示:用例3分数:5错误提示:题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

intnum;

inta,b;

scanf("%d",&num);

a=num/60;

b=num%60;

printf("%d(m)=%d(h):%d(m)",num,a,b);}程序调试是指对程序进行编译。

答案:错对C的源程序进行编译是指将C源程序翻译成目标程序。

答案:对C语言的每条可执行语句最终都将被转换成二进制的机器指令。

答案:错使用“scanf("a=%d,b=%d",&a,&b)”,要使a,b的值均为25,正确的输入是(

)。

答案:a=25,b=25以下程序的输出结果是(

)。#includevoidmain(){inta=010,b=0x10,c=10;printf("%d,%d,%d",a,b,c);

}

答案:8,16,10有如下程序:有如下程序:#includevoidmain(){

chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c",a,b,c,d);}

若运行时从键盘输入:6,5,65,66,则输出结果是(

)。

答案:6,5,A,B若a为实型变量,则以下程序段的输出结果是(

)。a=2.389;printf("%.2f",a);

答案:2.39若变量x,y均定义为int型,z定义为double型,下列不合法的scanf语句是(

答案:scanf("%x,%o,%6.2f",&x,&y,&z);以下可以实现“输入一个字符到变量ch”的语句是(

)。

答案:ch=getchar();putchar()函数可以向终端输出一个(

)。

答案:字符或字符型变量值能正确定义整型变量a和b,并为它们赋初值5的语句是(

答案:inta=5,b=5;温度转换。题目描述题目内容:编写程序,计算并输出华氏温度为80F所对应的摄氏温度C。

转换公式为:C=5*(F-32)/9输出样例:**.******测试用例用例1分数:20错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

floatf,c;

scanf("%f",&f);

c=5*(f-32)/9;

printf("%f",c);

}逆序打印。题目描述题目内容:输入一个三位的正整数,按逆序打印出该数的各位数字。输入样例:369输出样例:963输入样例:680输出样例:086测试用例用例1分数:10错误提示:

用例2分数:10错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

intnum;

scanf("%d",&num);

while(num>0)

{

printf("%d",num%10);

num/=10;

}

}执行语句“printf("%x",-1);”屏幕显示-ffff。

答案:错执行语句“x=(a=5,b=a--)”后,x,a,b的值分别是(

答案:5,4,5若已定义x和y为double型变量,则表达式x=1,y=x+3/2的值是(

答案:2.0已知intx=5,y=5,z=5;则执行语句x%=y+z;后,x的值是(

答案:5以下选项中不合法的实型常量是()

答案:E3下列不合法的字符常量是(

答案:'ab'下列浮点数的形式表示错误的是(

答案:12E2.0执行以下程序后,输出结果为#includevoidmain(){intx;floaty;y=3.6;x=(int)y+10;printf("x=%d,y=%f",x,y);}

答案:x=13,y=3.600000经过下述赋值后,变量x的数据类型是(

)。floatx=21.0;inty;

y=(int)x;

答案:float下列合法的转义字符是(

答案:'\"'求解梯形的面积题目描述题目内容:从键盘上输入一个梯形的上底a、下底b和高h,输出梯形的面积。输入样例:2,4,3输出样例:9.000000输入样例:2.4,2.6,3.8输出样例:9.500000测试用例用例1分数:10错误提示:

用例2分数:10错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

floatwidth_up,width_butt,height;

floatresult;

scanf("%f,%f,%f",&width_up,&width_butt,&height);

result=((width_up+width_butt)*height)/2;

printf("%f",result);

}while、If、double均是C语言的关键字。

答案:错1C_fun是合法的标识符。

答案:错C语句以冒号作为结束。

答案:错C语言本身没有输入输出语句。

答案:对C语言属于(

答案:高级语言C语言的源程序通常的扩展名是(

答案:cC程序是由(

)构成的

答案:一个或多个函数下面四组选项中,均是C语言关键字的选项是(

答案:switch

typedef

continue以下叙述不正确的是(

答案:在C程序中,注释说明只能位于一条语句的后面下列属于C语言中合法标识符的是(

答案:_cook一个C程序的执行是从(

答案:main函数开始,直到main函数结束构成C语言源程序的基本单位是(

答案:函数下列叙述中,不正确的是(

答案:主函数的名字不一定用main表示下列属于C语言关键字的是(

答案:typedef语句printf("ch=%d,ch=%c\n",65,65);的输出结果是_______

答案:ch=65,ch=A下列实型常量指数形式中,正确的是______

答案:-1.23E0若inta=2,b=5;

printf(“a=%d,b=%d”,a,b);

输出正确的是:_____。

答案:a=2,b=5若有定义

inta=7;

floatx=2.5,y=4.7;则表达式

x+a%3*(int)(x+y)%2/4

的值是_____

答案:2.500000若变量已正确定义并赋值,则下面不符合C语言语法的C语言语句是______

答案:a:+2=b+1;下列哪些是合法的整型常量?

答案:033执行以下程序后,输出结果为#includevoidmain(){intx;floaty;y=3.6;x=(int)y+10;cout<<"x="<答案:x=13,y=3.600000以下正确的赋值语句是______

答案:x=2+5;以下_____是C合法的标识符。

答案:char2下面程序的输出结果是(

)。#includevoidmain(){

intx=10,y=3,z;

cout<答案:3逆序打印。题目描述题目内容:输入一个三位的正整数,按逆序打印出该数的各位数字。输入样例:369输出样例:963输入样例:680输出样例:086测试用例用例1分数:10错误提示:

用例2分数:10错误提示:

题目运行时间限制:500ms题目运行内存限制:32000kb

答案:#includeintmain(){

intnum;

scanf("%d",&num);

while(num>0){

printf("%d",num%10);

num/=10;}}若有说明语句:int

a,b;,用户的输入为111222333,结果a的值为111,b的值为333,那么以下输入正确的语句是__

答案:scanf("%3d%*3d%3d",&a,&b);有以下程序chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();当执行程序时,按下列方式输入数据('\n'代表回车)1234后,a、b、c、d的值分别是______。

答案:1、2、\n、3阅读以下程序intif;floatprintF;scanf("%d%f",&if,&printF);printf("%d%f\n",if,printF);该程序编译时产生错误,其出错原因是______。

答案:定义语句出错,if是关键字,不能用作用户自定义标识符下面程序的输出结果是_______。int

k=11;printf("%d,%o,%x\n",k,k,k);

答案:11,13,b已知inta,b;用语句scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是______。

答案:,已有如下定义和输入语句,若要求a1、a2、c1、c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是______。(答案中#代表空格)inta1,a2;

charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

答案:10A20B有以下程序段:char

ch1,ch2;scanf("%c",&ch1);ch1=ch1+'4'-'2';ch2=ch1+'5'-'3';printf("%d%c\n",ch1,ch2);如果输入字符A,则程序运行后输出的结果是______。

答案:67E若有说明语句:int

a;float

b;,以下输入语句正确的是_____。

答案:scanf("%d%f",&a,&b);C语言中用于结构化程序设计的3种基本结构是________。

答案:顺序结构、选择结构、循环结构假设三位正整数x,以下_____是正确分解x的各位的语句。

答案:a=x/100,b=x/10%10,c=x%10;执行下面的程序时,假设用户输入为1#22#333(此处#表示空格),则ch1、ch2和ch3的值为______。charch1,ch2,ch3;scanf("%1c%2c%3c",&ch1,&ch2,&ch3);

答案:‘1’、‘#’、‘2’阅读以下程序,当输入数据的形式为:12a345b789(回车),正确的输出结果为______。voidmain(){

charc1,c2;

inta1,a2;

c1=getchar();

scanf("%2d",&a1);

c2=getchar();

scanf("%3d",&a2);

printf("%d,%d,%c,%c\n",a1,a2,c1,c2);}

答案:2,345,1,a以下程序的输出结果是(

)。#includevoidmain(){inta=010,b=0x10,c=10;cout<答案:8,16,10以下程序的输出结果是:voidmain(){

inti,j,n,a[5]={3,4,1,2,-6};

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

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

if(a[j]答案:-61234若int类型变量占4字节,定义数组:int

a[10];则a数组在内存中占用了_______个字节

答案:40下面程序的输出结果是:#includeusingnamespacestd;intmain(){

chara[]="AAaaBB9EMW";

inti,c;

for(i=2;(c=a[i])!='\0';i++)

{

switch(c)

{

case'a':putchar('B');continue;

case'9':break;

case9:putchar('A');

case'E':

case'L':continue;

default:putchar(c);continue;

}

putchar('');

}

putchar('\n');

return0;}

答案:BBBBMWinta[2][3]={{1},{2,3}};则a[1][0]的值是_____。

答案:2以下错误的数组定义是

答案:intn=10;inta[n+2];有两个字符数组a,b,则以下正确的输入语句是()

答案:scanf("%s%s",a,b);以下不能对二维数组进行正确初始化的语句是:

答案:doubled[][2]={{1},{2,3},{4,5,6}};以下程序的输出结果是:voidmain(){

inti,j,a[3][3]={1,2,3,4,5,6,7,8,9},t;

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

{

t=a[0][i];

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

if(a[j][i]>t)

t=a[j][i];

printf("%3d",t);

}

printf("\n");}

答案:7

8

9以下正确的定义语句是:

答案:charch[]={'a','b','c','d','e'};/star3/origin/5689e481e4b0e85354b31c1a.png

答案:j=i;j/star3/origin/5670ca67e4b0e85354a4cfd8.png

答案:2下面程序的运行结果是:voidmain(){

charch[]="6543ab21";

inti,s;

for(i=0,s=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=s*10+ch[i]-'0';

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

答案:64以下能对二维数组进行正确初始化的语句是

答案:inta[][3]={{1,2},{3,4}};当执行程序时,如果输入abc,则下面程序的输出结果是:voidmain(){

chars[20]="12345";

scanf("%s",s);

strcat(s,"6789");

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

答案:abc6789给出以下定义,则正确的叙述是:chars1[]="helloworld!";chars2[]={'h','e','l','l','o','','w','o','r','l','d','!'};

答案:数组s1长度大于数组s2长度设有如下的程序段:

charstr[]="Hello";

charptr[20];

strcpy(ptr,str);执行完上面的程序段后,ptr[6]的值为________。

答案:不确定的值以下不能正确进行字符串赋值的语句是:

答案:charstr[5]="good!";/star3/origin/5670c5c3e4b0e85354a4cb1d.png

答案:6以下对数组元素正确引用的是:

答案:doubled[5];d[5-5]=8;下面程序的输出结果是:#includemain(){inta[6]={1,2,3,4,5,6},i,s=0;

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

s+=a[i];printf("%d\n",s);}

答案:21对任意读入的10个整数(对任一整数num,-10<=num<=10),计算它们的和、积、平方和。输入的第1行为一个整数n,表示n组测试数据,下面为n行测试数据。每一行有10个整数,分别用空格分开,例如:212345678910231464510-1输出为n行结果,每一行3个整数,分别表示和,积,以及平方和。输出结束后,光标去往下一行的行头。例如:553628800385250109

答案:程序语言未选择语言用例1:输入31122345678-1-3-5-292410280-146-5-3-10629输出39806402092434560030880308输入10个数,统计其中正、负和零的个数。输入的第1行为一个整数n,表示n组测试数据,下面为n行测试数据。每一行有10个整数,分别用一个空格分开,例如:2000222-3-3-3-3-3-1220-1344100输出为n行结果,每一行3个整数,分别为正数、负数和0的个数,中间用空格分开。输出结束后,光标去往下一行的行头。例如:343532

答案:程序语言未选择语言用例1:输入4000-1-1-3777-100000000001111111111-1-1-1-1-1-9-9-9-9-9输出343001010000100在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:________。

答案:static请读程序:

charfun(charc){

if(c<='Z'&&c>='A')

c-='A'-'a';

return(c);}voidmain(){

chars[81];intk=0;

gets(s);

while(s[k])

{s[k]=fun(s[k]);putchar(s[k]);k++;}

putchar('\n');}若运行时从键盘上输入OPENTHEDOOR(表示回车),则上面程序的输出结果是________。

答案:openthedoor以下程序的输出结果是:#includeint

fun(intx,inty){

return(x+y);}voidmain(){

inta=2,b=5,c=8;

printf("%d\n",fun(fun(a+c,b),a-c));}

答案:9以下正确的函数声明形式是:

答案:doublefun(intx,inty);以下正确的说法是:

答案:如果函数值的类型与返回值类型不一致,以函数值类型为准C语言规定:简单变量作为实参时,它和对应形参之间的数据传递方式是______

答案:单向值传递有如下程序longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%d\n",fib(3));}该程序的输出结果是

答案:4以下叙述中不正确的是:

答案:在一个函数内的复合语句中定义的变量在本函数范围内有效。C语言中形参的缺省存储类是

答案:自动(auto)在C语言程序中,有关函数的定义正确的是___

答案:函数的定义不可以嵌套,但函数的调用可以嵌套以下程序的输出的结果是intx=3;main(){inti;for(i=1;iA.25B.33C.26D.22我的答案:C正确答案:C2.0分

答案:26/star3/origin/5689d372e4b0e85354b31190.png

答案:x/y和y+2*z,x-2*zC语言规定,函数返回值的类型是由______

答案:在定义该函数时所指定的函数类型所决定以下只有在使用时才为该类型变量分配内存的存储类说明是:

答案:auto和register若数组名作实参而指针变量作形参,函数调用实参传给形参的是

答案:数组第一个元素的地址若用数组名作为函数的实参,传递给形参的是:

答案:数组的首地址函数调用不可以()

答案:作为一个函数的形参/star3/origin/5670d705e4b0e85354a4db31.png

答案:1,3,5,-1,3,7,在C语言中,函数的隐含存储类别是:

答案:extern/star3/origin/5689cb3fe4b0e85354b30c6a.png

答案:程序中没有错误,可以正常运行/star3/origin/5689ceb6e4b0e85354b30eb7.png

答案:在main()函数中输出的结果是:a=3,b=10以下不正确的说法是C语言规定:

答案:形参可以是常量、变量或表达式对于已正确定义的二维数组a,*(a[i]+j)与a[i][j]的含义相同。

答案:对/star3/origin/5673c62ee4b0e85354a6d198.png

答案:*p和s[0]相等下面判断正确的是_____。

答案:char*s="china";等价于char*s;s="china";若有定义inta[10],*p;则不能使p指向数组元素a[5]的赋值语句是_____。

答案:p=*(a+5)下面程序段的运行结果是_____。char*s="abcde";s+=2;

printf("%d",*s);

答案:字符c的ASCII码值设有定义:int

n=10,*p=&n;,假设n的地址为1000,整型占4个字节。语句printf("%d",*p++);执行后n和p的值是_____。

答案:10,1004若用数组名作为函数调用的实参,则传递给形参的是

答案:数组的首地址若有语句:chars1[]="string1",s2[8],*s3,*s4="string2";则对库函数strcpy的错误调用是_____。

答案:strcpy(s3,"string1");设有说明:inta[10],*p=a;,则不能正确引用元素a[i](0≤i<10)的地址的是____。

答案:&p+i/star3/origin/5673c6e2e4b0e85354a6d203.png

答案:1,6若已定义chars[10],*p=a;则在下面表达式中不表示元素s[1]的地址的是_____。

答案:s++若有定义:inti1=30,i2=40;int*constp=&i1;constint*q=&i2;且有语句:1)p=&i2;

2)i2=50;

3)*q=20;

4)*p=10;则下列_____中的语句均不正确。

答案:1、3下面程序段的运行结果是_____。chars[6];

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

答案:编译出错已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是______。voidprint_value(int*x){

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

答案:26设变量定义为

inta[2]={1,3},*p=&a[0]+1;,则*p的值是()。

答案:3若有说明语句:chara[]="Itismine";

char*p="Itismine";则以下不正确的叙述是_____。

答案:a中只能存放10个字符C语言中的动态内存释放函数是_____。

答案:free若p,q是同类型的指针变量,则p、q之间可以进行的算术运算是_____。

答案:-下面程序段的运行结果是_____。chara[]="language",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

答案:LANG/star3/origin/5673c678e4b0e85354a6d1b8.png

答案:tomorrow若有定义:charx,*pb;,则以下正确的赋值表达式是_____。

答案:pb=&x;/star3/origin/5673c759e4b0e85354a6d257.png

答案:8设有语句:inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;。假设变量i已定义且值在0~9之间,以下对a数组元素不正确引用是_____。

答案:*(*a(a+i))若有说明:int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是______。

答案:p1=&m;p2=p1;_____变量的值是地址。

答案:指针若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____。

答案:&a,point,&*point已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是_____。

答案:ptr2=k;编写程序,实现整型矩阵(3行3列)的转置(即行列互换),例如,输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900输入的第1行为一个整数n,表示n组测试数据,下面为n行测试数据。每行表示一个矩阵的全部数据,矩阵的数据按行序给出,每个数据之间用一个空格分开,例如:2100200300400500600700800900123456789输出为n组结果。输出结束后,光标去往下一行的行头(注意每行最后一个整数末尾有一个空格)。例如:100400700200500800300600900147258369

答案:程序语言未选择语言用例1:输入4111111111-1-2-3-4-5-6-7-8-910110110189621011156010输出111111111-1-4-7-2-5-8-3-6-911100011182159106061110输入10个数,并按输入时的顺序逆序排序,并显示逆序结果。输入样例:23456819466712输出样例:12766491864523

答案:程序语言未选择语言用例1:输入1234567890输出0987654321一个字符串(不超过1024个字符),统计该字符串中字母、数字、空格和其它字符的个数,并输出统计的结果。输入样例:Stringclass

123456/*-+输出样例:11644

答案:程序语言未选择语言用例1:输入abcdTdf12345==--dd1a输出10634对任意一个10-99999范围内的整数,以该整数各位数字相反的顺序输出。为简化问题,本题假定该整数的个位非0。输入的第1行为一个整数n,表示n组测试数据,下面为n行测试数据。每一行有1个整数,例如:212345782输出为n行结果,每一行1个整数。输出结束后,光标去往下一行的行头。例如:54321287

答案:程序语言未选择语言用例1:输入315999981002输出51899992001/star3/origin/567cbd6de4b0e85354aadb54.jpg

答案:ABCDEFGCDEFGEFGG/star3/origin/5670c76ee4b0e85354a4ccd9.png

答案:第7行有错误设有程序段:intk=10;while(k=0)

k--;则下列描述中正确的是______。

答案:循环体语句一次也不执行以下程序的输出结果是______。voidmain(){

inta,b;

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

{

if(b>=10)

break;

if(b%5==1)

{b+=5;continue;}

}

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

答案:3/star3/origin/567ebb8be4b0e85354ab6018.jpg

答案:a=1,b=111若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是

答案:(*p)(a,b);设有说明ints[2]={0,1},*p=s;则下列错误的C语句是

答案:s+=1;执行语句:for(i=1;i<=4;i++);后变量i的值是______。

答案:5下面程序的运行结果是_____。#includemain(){

inty=10;

do{

--y;

}while(--y);

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

答案:0以下叙述错误的是____

答案:指针变量不占用存储空间若有定义inta[10],*p=a;,则p+5表示_____。

答案:元素a[5]的地址/star3/origin/5670c608e4b0e85354a4cb5f.png

答案:6对for(表达式1;;表达式3)可理解为_____。

答案:for(表达式1;1;表达式3)下面函数的功能是sss(char*s,char*t){while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}

答案:比较两个字符串的大小下列程序的输出结果是______。void

main(){

int

num,k,s,temp;num=100,k=1,temp=1,s=0;do{s=s+num%8*temp;num/=8;temp*=10;}while(num);

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

答案:144假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是_____。

答案:20下面关于for循环的正确描述是______。

答案:for循环中,表达式2可以省略,用break语句跳出循环已有定义int(*p)();指针p可以

答案:指向函数的入口地址下面程序的运行结果是main(){charch[7]={"65ab21"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}

答案:6执行以下程序后,y的值是main(){inta[]={2,4,6,8,10};inty=1,x,*p;p=&a[1];for(x=0;x<3;x)y+=*(p+x);printf(“%d\n”,y);}

答案:19设有以下程序段int

x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则______。

答案:运行程序段后输出1_____不是程序控制语句,是C语言的标准库函数,但可以用于控制程序的流程。

答案:exit若有定义int*p,m=5,n;以下正确的程序段是____

答案:p=&n*p=m;有以下程序intfun(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf("%d;%d\n",c,d);}输出结果是

答案:80;-20有以下程序段:int*p,a=10,b=1;p=&aa=*p+b;执行该程序段后,a的值为____

答案:11若有定义:chara[10],*b=a;,则不能给数组a输入字符串”Thisisabook”的语句是________。

答案:scanf("%s",a)爬楼梯。题目内容:可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢?n值从键盘输入。输入格式:输入一个整数n,(1<=n<46)。输出格式:输出当楼梯阶数是n时的上楼方式总数。输入样例:1输出样例:1输入样例:4输出样例:7

答案:程序语言C/C++

#includeintf(intn){

n++;

inti;

inttable[n];

for(i=0;i=1&&n<46){

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

}

return0;}用例1:输入24输出1389537组合数。题目内容:本题要求编写程序,根据公式Cnm=算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数m和n(m≤n),以空格分隔。输出格式:输出组合数计算结果,题目保证结果在类型范围内。输入样例:27输出样例:21

答案:程序语言C/C++#includedoublefactorial(intn);intmain(){

intn,m,result;

scanf("%d%d",&m,&n);

result=factorial(n)/(factorial(m)*factorial(n-m));

printf("%d",result);

return0;}doublefactorial(intn){

if(n<=1)

return1;

returnn*factorial(n-1);}用例1:输入59输出126如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是

答案:a=2,b=1以下程序的输出结果是main(){inta[3][2]={{1,2},{3,4},{5,6}};inti,j,s=0;for(i=0;i<3;i++)for(j=0;j<2;j++)s+=a[i][j];printf("%d\n",s);}

答案:21以下描述不正确的是_____。

答案:do-while和for循环均是先执行循环语句,后判断表达式下列程序的输出结果是_____。main(){

inti,j,m=0,n=0;

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

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

if(j>=i)

++m;n++;

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

答案:3,1对于条件表达式(k)?(i++):(i)来说,其中的表达式k等价________。

答案:k!=0/star3/origin/5670cc9de4b0e85354a4d1e8.png

答案:21以下程序运行后的输出结果是______。voidmain(){

int

s=0,k;

for(k=7;k>=0;k--)

{

switch(k)

{

case

1:

case

4:

case

7:

s++;break;

case

2:

case

3:

case

6:

break;

case

0:

case

5:

s+=2;break;

}

}

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

答案:s=7该程序的运行结果是____#includevoidmain(){intx=2,y=-1,z=2;if(xA.1B.3C.2D.0我的答案:C正确答案:C2.0分

答案:2有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}

温馨提示

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

评论

0/150

提交评论