北师20秋《高级程序设计(C)》 离线作业

奥鹏作业 2020-10-30 12:10:26 12

有学员问关于北师20秋《高级程序设计(C)》 离线作业的题目的参考答案和解析,具体如下:
在线作业试卷列表

单选?

1.以下叙述正确的是 ?分值:2

A. C语言中各函数之间既允许直接递归调用也允许间接递归调用 ???B. C语言中各函数之间既不允许直接递归调用也不允许间接递归调用 ??? C. C语言中各函数之间既允许直接递归调用不允许间接递归调用 ???D. C语言中各函数之间既不允许直接递归调用允许间接递归调用 ????



2.以下程序的输出结果是 char str[ ]="ABCD",*p=str; printf ("%d ",*(p+4));?分值:2

A. 68 ???B. 0 ??? C. 字符D的地址 ???D. 不能确定的值 ????



3.以下程序的输出结果是 main( ) { int a[ ]={1,2,3,4 },i,x=0; for(i=0; i<4; i++) { sub(a,&x); printf(“%d”, x); } printf(“ ”); } sub( int *s, int *y) { static int t=3; *y=s[t]; t-- ; }?分值:2

A. 1 2 3 4???B. 4 3 2 1??? C. 0 0 0 0???D. 4 4 4 4 ????



4.以下程序的输出结果是 main( ) { int k=4, m=1,p; p=func(k,m); printf(“%d,”,p); p=func(k,m); printf(“%d ”,p); } func( int a, int b); { static int m, i=2; i+=m+1; m=i+a+b; return(m); }?分值:2

A. 8,17???B. 8,16??? C. 8,20???D. 8,8 ????



5.以下程序的输出结果是 void fun(int *s) { static int j=0; do s[j]+=s[j+1]; while(++j<2); } main( ) { int k,a[10]={1,2,3,4,5}; for (k=1; k<3; k++) fun(a); for (k=0; k<5; k++) printf(“%d”,a[k] ); }?分值:2

A. 34756 ???B. 23445 ??? C. 35745 ???D. 12345 ????



6.以下程序的输出结果是 f(int a) { int b=0; static int c=3; a=c ++, b ++; return( a ); } main( ) { int a=2,i,k; for(i=0 ; i<2; i++) k=f(a++); printf(“%d ”,k); }?分值:2

A. 3 ???B. 6 ??? C. 5 ???D. 4 ????



7.以下程序的输出结果是 int m=13; int fun2(int x, int y) { int m=3; return(x * y – m); } main( ) { int a=7,b=5; printf(“%d ”,fun2(a,b)/m ); }?分值:2

A. 1???B. 2??? C. 7???D. 10 ????



8.C语言中, 形参的缺省的存储类说明是 ?分值:2

A. auto ( 自动 ) ???B. static ( 静态 ) ??? C. register ( 寄存器 ) ???D. extern ( 外部 ) ????



9.以下选项中正确的整型常量是 __________。 ?分值:2

A. 12. ???B. -20 ??? C. 1,000 ???D. 4 5 6 ????



10.以下选项中正确的实型常量是 __________。 ?分值:2

A. 0 ???B. 3.1415 ??? C. 0.329*102 ???D. .871 ????



11.以下选项中不正确的实型常量是__________。 ?分值:2

A. 2.607E-1???B. 0.8103e 2??? C. -77.77???D. 456e-2 ????



12.以下选项中不合法的用户标识符是_________。 ?分值:2

A. abc.c???B. file??? C. Main???D. PRINTF ????



13.以下选项中不合法的用户标识符是__________。 ?分值:2

A. _123???B. printf??? C. A$???D. Dim ????



14.C语言中运算对象必需是整型的运算符是__________。 ?分值:2

A. %???B. /??? C. !???D. ** ????



15.可在C程序中用作用户标识符的一组标识符是_________。 ?分值:2

A. void define WORD ???B. as_b3 _123 If ??? C. For -abc case ???D. 2c DO SIG ????



16.若变量已正确定义并赋值,符合C语言语法的表达式是_________。 ?分值:2

A. a=a+7; ???B. a=7+b+c,a++ ??? C. int(12.3%4) ???D. a=a+7=c+b ????



17.以下叙述中正确的是_________。 ?分值:2

A. a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量允许赋值整型值。 ???B. 在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。 ??? C. 执行表达式a=b后,在内存中a 和 b存储单元中的原有值都将被改变,a的值已由原值改变为b 的值, b 的值由原值变为0。 ???D. 已有a=3,b=5。当执行了表达式 a=b ,b=a 之后,已使a 中的值为5,b 中的值为3。 ????



18.以下叙述中正确的是________。 ?分值:2

A. 在C程序中无论整数还是实数,只要在允许的范围内都能准确无误的表示。 ???B. C程序由主函数组成。 ??? C. C程序由函数组成。 ???D. C程序由函数和过程组成。 ????



19.若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是_________。 ?分值:2

A. a=b=c=d=100;???B. d++;??? C. c+b;???D. d=(c=22)-(b++);????



20.以下合法的C语言赋值语句是_________。 ?分值:2

A. a=b=58???B. k=int(a+b);??? C. a=58,b=58???D. --i; ????



21.若变量已正确说明为int类型,要给?分值:2

A. read(a,b,c);  ???B. scanf(“ %d%d%d” ,a,b,c); ??? C. scanf(“ %D%D%D” ,&a,%b,%c); ???D. scanf(“ %d%d%d”,&a,&b,&c);????



22.若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是_________。 ?分值:2

A. a=a+b, b=a-b, a=a-b; ???B. t=a, a=b, b=t; ??? C. a=t; t=b; b=a; ???D. t=b; b=a; a=t; ????



23.若有以下程序段,c3中的值是__________。 int c1=1,c2=2,c3; c3=c1/c2;?分值:2

A. 0???B. 1/2??? C. 0.5???D. 1 ????



24.若有以下程序段 ,其输出结果是__________。 int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“ %d,%d,%d ”,a,b,c);?分值:2

A. 0,0,-10???B. 0,0,5??? C. -10,3,-10???D. 3,0,-10 ????



25.当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是__________。 main( ) { int a; float b,c; scanf(“ %2d%3f%4f”,&a,&b,&c); printf(“ a=%d,b=%f,c=%f ”,a,b,c);} ?分值:2

A. a=98,b=765,c=4321 ???B. a=10,b=432,c=8765 ??? C. a=98,b=765.000000,c=4321.000000   ???D. a=98,b=765.0,c=4321.0 ????



26.若int类型占两个字节,则以下程序段的输出是__________。 int a=-1; printf(“ %d,%u ”,a,a); ?分值:2

A. -1,-1???B. -1,32767??? C. -1,32768???D. -1,65535 ????



27.以下程序段的输出是__________。 float a=3.1415; Printf(“ |%6.0f| ”,a); ?分值:2

A. |3.1415|???B. | 3.0|??? C. | 3|???D. | 3.| ????



28.以下程序段的输出是__________。 float a=57.666; pirntf(“ %010.2f ”,a); ?分值:2

A. *0000057.66* ???B. * 57.66* ??? C. *0000057.67* ???D. * 57.67* ????



29.C语言中的简单类型有 ?分值:2

A. 整型,实型,逻辑型 ???B. 整型,实型,字符型 ??? C. 整型,字符型,逻辑型 ???D. 整型,实型,逻辑型,字符型 ????



30.C语言中,字符型(char)数据在微机内存中的存储形式是 ?分值:2

A. 反码???B. 补码??? C. EBCDIC码???D. ASCII码 ????



31.C语言中不合法的字符常量是 ?分值:2

A. ′\0XFF′???B. ‘\65′??? C. ′&′???D. ′\028′ ????



32.C语言中不合法的字符串常量是 ?分值:2

A. "121"???B. ′Y=′??? C. " "???D. "ABCD\X6d" ????



33.判断char型变量C是否为大写字母的最简单且正确的表达式是 ?分值:2

A. ‘A ’<=C=‘Z’ ???B. (C>=′A′)&(C<=′Z′) ??? C. (′A′<=C)AND(′Z′>=C) ???D. (C>=′A′)&&(C<=′Z′) ????



34.以下程序的输出结果是 main( ) { char c1=′a′,c2=′y′; printf("%d,%d ",c1,c2); }?分值:2

A. 因输出格式不合法,无正确输出 ???B. 65,90 ??? C. A,Y ???D. 65,89 ????



35.以下程序的输出结果是 main( ) {char x=′a′ x=(x>=′A′&& x<=′Z′)?(x+32):x; printf("%c ",x); }?分值:2

A. A???B. a??? C. Z???D. z ????



36.以下各组选项中,均能正确定义二维实型数组a的选项是__________。 ?分值:2

A. float a[3][4]; float a[][4]; float a[3][]={{1},{0}}; ???B. float a(3,4); float a[3][4]; float a[][]={{0},{0}}; ??? C. float a[3][4]; static float a[][4]={{0},{0}}; auto float a[][4]={{0},{0},{0}}; ???D. float a[3][4]; float a[3][]; float a[][4]; ????



37.以下正确的说法是__________。 ?分值:2

A. 实参和与其对应的形参占用独立的存储单元 ???B. 实参和与其对应的形参共占用一个存储单元 ??? C. 只有当实参和与其对应的形参同名时才共占用一个存储单元 ???D. 形参是虚拟的,不占用存储单元 ????



38.以下说法中正确的是 ?分值:2

A. C语言程序总是从第一个定义的函数开始执行 ???B. 在C语言程序中,要调用的函数必须在main函数中定义 ??? C. C语言程序总是从main函数开始执行 ???D. C语言程序中的main函数必须放在程序的开始部分 ????



39.以下函数的类型是 fff(float x){   printf("%d ",x*x); }?分值:2

A. 与参数x的类型相同???B. void类型??? C. int类型???D. 无法确定 ????



40.以下程序的输出结果是 func(int a,int b) { int c c=a+b; return c; } main( ) { int x=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d ",r); }?分值:2

A. 11???B. 20??? C. 21???D. 31 ????



41.以下程序有错,错误原因是__________。 main() {int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; … } ?分值:2

A. p和q类型不一致,不能执行*p=*q;语句 ???B. *p中存放的是地址值,因此不能执行*p=40;语句 ??? C. q没有指向具体的存储单元,所以*q没有实际意义 ???D. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句 ????



42.以下程序的输出结果是 double f(int n) { int i; double s; s=1.0; for(i=1; i<=n; i++) s+=1.0/i; return s; } main() { int i,m=3; float a=0.0; for(i=0; i printf("%f ",a)L; } ?分值:2

A. 5.500000???B. 3.000000??? C. 4.000000???D. 8.25 ????



43.若有定义: int x,*pb;则在以下正确的赋值表达式是 ?分值:2

A. pb=&x???B. pb=x??? C. *pb=&x???D. *pb=*x????



44.以下程序的输出结果是 #include "stdio.h" main() { printf("%d ",NULL); }?分值:2

A. 因变量无定义输出不定值 ???B. 0 ??? C. -1 ???D. 1 ????



45.有如下语句int a=10,b=20;*p1=&a,*p2=&b;如果让两个指针变量均指向b,正确的赋值方式是__________。 ?分值:2

A. *p1=*p2;???B. p1=p2;??? C. p1=*p2;???D. *p1=*p2; ????



46.已知指针P的指向如图所示,则表达式*P++的值是 a[0] a[1] a[2] a[3] a[4] 10 ??20 ??30 ??40 ??50 ??????P?分值:2

A. 20???B. 30??? C. 21???D. 31 ????



47.已知指针P的指向如图所示,则表达式* ++ P的值是 a[0] a[1] a[2] a[3] a[4] 10 ??20 ??30 ??40 ??50 ??????P?分值:2

A. 20???B. 30??? C. 21???D. 31 ????



48.已知指针P的指向如图所示,则表达式++*P的值 a[0] a[1] a[2] a[3] a[4] 10 ??20 ??30 ??40 ??50 ??????P?分值:2

A. 20???B. 30??? C. 21???D. 31 ????



49.以下能正确进行字符串赋值、赋初值的语句组是 ?分值:2

A. char s[5]={′a′,′e′,′i′,′o′,′u′}; ???B. char *s; s="good!"; ??? C. char s[5]="good!"; ???D. char s[5]; s="good"; ????



50.若有以下说明和定义,则对fun函数的正确调用语句是 ?分值:2

A. a=fun; a(w); ???B. a=fun; (*a)(&c); ??? C. b=fun; *b(w);???D. fun(b); main( ) { int (*a)(int*),*b( ),w[10],c; : : } fun(int *c) {...}


答案联系qQ 76129602


上面就是题目内容,学校没有给相关的资料,自己做的大都没有把握
请老师帮忙给出正确答案,谢谢!

加qq