东大20春学期《C语言及程序设计》在线平时作业2答案

若有说明语句 : double *p,a; 则能通过 scanf 语句正确给输入项读入数据的程序段是A)*p=&am

若有说明语句 : double *p,a; 则能通过 scanf 语句正确给输入项读入数据的程序段是

A)*p=&a; scanf(" % 1f",p);

B)*p=&a; scanf(" % f",p);

C)p=&a; scanf(" % 1f",*p);

D)p=&a; scanf(" % 1f",p);


正确答案:D
(24)D) 解析 : p=&a 表示将变量 a 的地址送给指针 p; scanf( “ %lf ” ,p) 表示用键盘输入的数给变量 p 地址中。


若有定义:inta;则scanf(“%d“,a);可以给变量a赋值。()

此题为判断题(对,错)。


参考答案:错误


若有说明:inta[10];则对数组元素的正确引用是()。

A.a[10]

B."a[3,5]"

C.a(5)

D.a[10-10]


正确答案:D


若有定义“inta[2][3];”,下列选项中对a数组元素正确引用的是( )。

A.a[2][!1]

B.a[2][3]

C.a[0][3]

D.a[1>2][!1]


正确答案:D
D。【解析】数组的下标从0开始,数组a[2][3]包括元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],只有选项D正确,1>2为假,所以是0,!为假也是0,即引用元素a[0][0],其他选项的引用均是下标越界。


以下程序段给数组所有的元素输入数据,请选择正确答案填入。()ineludemain(){int a[10],

以下程序段给数组所有的元素输入数据,请选择正确答案填入。( ) #inelude<stdio.h> main() {int a[10],i=0; while(i<10)scanf("%d",______); ┇ }

A.a+(i++)

B.&a[i+1]

C.a+i

D.&a[i++]


正确答案:D


20春学期C语言及程序设计在线平时作业2试卷总分:100 得分:100一、单选题 (共 15 道试题,共 75 分)1.以下程序段()。intx=1,y=4;printf(xy?”x=%d”:”y=%d”,x,y);A.输出控制格式错误B.输出:x=1C.输出:y=1D.输出:y=4答案:C2.sizeof(float)是()。A.双精度型表达式B.一个整型表达式C.一个函数调用D.一个不合法的表达式答案:B3.若使用下述程序段将整数12和浮点数13.6分别赋给变量a和b,那么输入应该式()。inta;floatb;scanf(“a=%d,b=%f”,a,b);A.a=12b=13.6B.1213.6C.a=12,b=13.6D.12,13.6答案:C4.若有说明:inta10;则对数组元素的正确引用是()。A.a10B.a3,5C.a(5)D.a10-10答案:D5.有定义:floatx=3.14,*p;下列错误的语句是()A.p=xB.p=3.14C.*p=xD.*p=3答案:A6.下述for语句intI,x;for(i=0,x=1,i=9;x!=876;i+)scanf(“%d”,x);A.最多循环10次B.最多循环次C.无限循环D.一次也不循环答案:A7.C语言中,逻辑“真”等价于()。A.大于零的数B.大于零的整数C.非零的数D.非零的整数答案:C8.下列语句中,符合语法的语句式()。A.a=c+b+3=6;B.a+b=3C.a=a+7D.a=8,b=a+7;答案:D9.C语言中,下列说法正确的是()A.不能使用do…while语句构成循环。B.do…while语句构成的循环必须用break语句才能退出。C.do…while语句构成的循环,当while语句中的表达式值为非0结束循环。D.do…while语句构成的循环,当while语句中的表达式值为0结束循环。答案:D10.设已定义i和k为int类型变量,则以下for循环语句for(I=0;k=-1,k=1;i+,k+)printf(“*n”);A.是无限循环B.循环只执行一次C.循环依次也不执行D.判断循环结束的条件不合法答案:A11.下列程序的输出为()#includestdio.h;main()intm=13;floata=12.6,x;x=m/2+a/2;printf(“%fn”,x);A.12B.12.3C.12.8D.12.3答案:B12.以下对二维数组a的正确说明是()。A.inta3;B.floata(3)(4);C.doublea14D.floata(3,4);答案:C13.以下能对一维数组a进行正确初始化的语句是()。A.inta10=(0,0,0,0,0);B.inta10=;C.inta=0;D.inta10=10*1;答案:C14.以下为一维整型数组a的正确说明是()。A.inta(10);B.intn=10,an;C.intn;scanf(%d,n);D.#defineSIZE10;intaSIZE;intan;答案:D15.下面正确的字符常量是()A.X17B.80C.D.n答案:C二、判断题 (共 5 道试题,共 25 分)16.已知int a,*p=&a,则函数printf(%d,p);调用错误。答案:正确17.C语言本身没有输入输出语句答案:正确18.在swith语句中可以根据需要使用或不需要使用break语句。答案:正确19.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值答案:错误20.声明语句int x=y=z=5;可以正确定义整型变量x,y和z并为其赋初值5。答案:错误

以下程序段给数组所有的元素输入数据,请选择正确答案填入。 include main() { int a[10

以下程序段给数组所有的元素输入数据,请选择正确答案填入。 #include<stdio.h> main() { int a[10]=0; while(i<10)scan("%d"______); : : }

A.a+(i++)

B.&a[i+1]

C.a+i

D.&a[++i]


正确答案:A
解析: a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入—个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。


若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是( )。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);


正确答案:D
double*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。


若有说明语句:double*P,a;则通过scanf语句正确给输入项读人数据的程序段是( )。A.B.C.D.A.ASX

若有说明语句:double*P,a;则通过scanf语句正确给输入项读人数据的程序段是( )。A.

B.

C.

D.

A.A

B.B

C.C

D.D


正确答案:D
double*P,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量P;scanf(”%If”,p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf()函数要求在输入double型数据时,格式控制符必须用%lf。否则,数据不能正确输入。所以选项D正确。


若有定义:

能把整数3赋给变量a,5赋给变量b的输入数据是( )

A.3:5

B.3,5

C.3 5

D.35


正确答案:A
sCanf中格式控制符里必须原样输入,所以分号也必须输入,A)正确。


若有定义:“inta=4,b=5;floatx=3.4,y=2.1;”,则下列表达式的值为( )。 A.5.5B.55

若有定义:“inta=4,b=5;floatx=3.4,y=2.1;”,则下列表达式的值为( )。

A.5.5

B.55

C.5.500000

D.55.00000


正确答案:C
在计算(float)(a+b)/2时,由于通过强制类型转换将(a+b)转换成了float型,所以应先将2转换成float型,再进行计算,得4.500000。在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,结果为1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。类型转换的一般规则是低级类型从高级类型进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→log→float→double。

更多 “东大20春学期《C语言及程序设计》在线平时作业2答案” 相关考题
考题 设有定义:inta;floatb;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入:876543.0,a和b的值分别是()A、876和543.0B、87和6.0C、87和543.0D、76和543.0正确答案:B

考题 多选题以下关于数组的描述中,错误的有:()A可以通过如下语句来完成对一个数组的输入:inta[10];scanf(%d,a);B可以通过如下语句来完成对一个数组的输入:inta[10];scanf(%d,&a);C若有inta[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]Dinta[9];则数组a的下标范围是1-9正确答案:A,B解析:暂无解析

考题 若有下列说明和语句:inta[4][5],(*p)[5];p=a;则对a数组元素的正确引用是()。A.p+1B.*(p+3)C.*(p+1)+3D.*(*p+2)正确答案:B

考题 若有说明:inta[3][4];则对a数组元素的非法引用是( )。A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]正确答案:DD。【解析】数组的下标从0开始,至n-1为止,因此选项D是正确答案。

考题 单选题设有定义: int a;float b; 执行scanf(%2d%f,&a,&b); 语句时,若从键盘输入876 543.0,则a和b的值分别是(  )。A 87和6.0B 876和543.0C 87和543.0D 76和543.0正确答案:B解析:scanf函数的一般形式为:scanf(格式控制,地址表列);。其中,“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:①格式说明,由“%”和格式字符组成;②普通字符,即需要原样输入的字符。“地址表列”是需要接收输入数据的一系列变量的地址。本题中的“格式控制”是“%2d%f”,其中%2d的意思是要输入一个整数,但该整数最宽只占2个字符,而%f是要输入一个浮点数。而题目要求输入的是876和543.0,所以scanf函数将87赋给a,6赋给b。答案选择A选项。

考题 已有inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是()。正确答案:scanf(“%d %d %f”,&i,&j,&x);

考题 请读程序:includemain(){inta;floatb,c:scanf("%2d%3f%4f',&a,&b,&c);pri请读程序: #include<stdio.h> main() { inta;floatb,c: scanf("%2d%3f%4f',&a,&b,&c); printf("\na=%d,b=%f,c=%f\n".a,b,c); } 若运行时从键盘上输入9876543210,则上面程序的输出结果是______。A.a=98,b=765,c=4321B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4321.0正确答案:C解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6,7、8,9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

考题 单选题若有定义和语句int a,b;scanf(%d,%d,&a,&b);以下选项中的输入数据,不能把值3赋给变量 a、5赋给变量b的是(  )(说明:符号u表示空格)。A 3,5,B 3,5,4C 3,u5D 3,5正确答案:A解析:输入数据时,必须与格式控制中的格式一样,需要在数据后面紧跟一个逗号,否则不能正确读入数据,C项,3后面有一个多余的空格,不符合给定的格式。答案选择C选项。

考题 若有说明语句“inta[5],*p=a;”,则对数组元素的正确引用是()。A、a[p]B、p[a]C、*(p+2)D、p+2正确答案:C

考题 以下能正确定义共用体变量的是()A、unionuniontype{inta;floatb;};unionuniontypef;B、unionuniontype{inta;floatb;}f;C、union{inta;floatb;}f;D、union{inta,floatb,}f;正确答案:A,B,C