高级语言程序设计-9
(总分:100.00,做题时间:90分钟)
一、{{B}}单项选择题{{/B}}(总题数:15,分数:30.00)
1.有以下程序,程序运行后的输出结果是( ) main() {int a[10]={1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2; printf("%d/11",*p+*q); }
(分数:2.00)
(分数:2.00)
A.16
B.10 √
C.8
D.6
解析:[解析] 最后打印输出的是"*p+*q"的值,即数组a的第四个几豢及第六个几元素的和。
2.有以下程序( ) main() {char p[]={'a','b','C'},q[]="abc"; printf("%d%d",sizeof(p),sizeof(q)); } 程序运行后输出的结果是
(分数:2.00)
(分数:2.00)
A.4 4
B.3 3
C.3 4 √
D.4 3
解析:[解析] 赋值语句"q[]="abc""中赋给字符数组q的是字符串"abc",字符串串都包含一个"/0"结束符。
3.要调用字符串长度测试函数strlen()时,在#include命令行中应包含( )
(分数:2.00)
(分数:2.00)
A."stdih"
B."strinh" √
C."math"
D."ctyph"
解析:
4.在C语言程序中,下列磁盘文件名错误的是( )
(分数:2.00)
(分数:2.00)
A.abdat
B.c:abdat
C./tc/abdat
D.a:/abdat √
解析:
5.假定有以下变量定义: int k=6,x=12; 则能使x、k值为5、6的表达式是( )
(分数:2.00)
(分数:2.00)
A.x%=++k%10
B.x%=k+k%5 √
C.x-=++k%5
D.x-=k++%5
解析:[解析]在进行"x%=k+k%5"的计算时,根据运算符的优先级将先计算"k%5,k%5=1;再计算"k+k%5",k+k%5=7;最后计算"x%=k+k%5","x%=k+k%5"的含义是x=x%(k+k%5),即x=5。在整个运算过程中没有对k的赋值操作,k的值不变,k=6。
6.下面程序的功能是输出以下形式的金字塔图案: #include<stdio.h> main() {int i,j; for(i=1;i<=4;i++) {for(j=1;j<=4-i;j++)printf(""); for(j=1;j<=______;j++)printf("*"); printf("/n"); } } 在下划线处应填入的是( )
(分数:2.00)
(分数:2.00)
A.i
B.2*i-1 √
C.2*i+1
D.i+2
解析:[解析] 应填入控制打印"*"的个数,其个数与行数i的关系是2*i-1的关系。
7.包含用户类型符"FILE"的定义的头文件是( )
(分数:2.00)
(分数:2.00)
A.strinh
B.filh
C.stdih √
D.stdlih
解析:
8.定义存储在内存堆栈区的变量的存储类型符是( )
(分数:2.00)
(分数:2.00)
&
B.static
&ister
D.auto √
解析:
9.有以下程序( ) main() {char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"}; printf("%d/n",strlen(p[4])); } 执行后输出结果是
(分数:2.00)
(分数:2.00)
A.2 √
B.3
C.4
D.5
解析:[解析] 输出的数据是第五个字符串的字符个数。p[4]传递给函数strlen()的址第五个字符串的首地址。
10.表达式if(!x)中的"!x"等效于( )
(分数:2.00)
(分数:2.00)
A.x==0 √
B.x==1
C.x!=0
D.x!=1
解析:[解析] 表达式if(!x)表示判定x是否为0,即"如果x==0"。
11.下列符号中是正确的C标识符的是( )
(分数:2.00)
(分数:2.00)
A.a-2
B.x12 √
C.2.78
D.π
解析:
12.有以下程序( ) main() { int x=102,y=012; printf("/0/02d,%2d/n",X,y); } 执行后输出结果是
(分数:2.00)
(分数:2.00)
A.10,01
B.02,12
C.102,10 √
D.02,10
解析:
13.有以下程序( ) #include<stdio.h> main() {unsigned char a,b; a=4|3; b=4&3; printf("%d%d/n",a,b); } 执行后输出结果是
(分数:2.00)
(分数:2.00)
A.7 0 √
B.0 7
C.1 1
D.43 0
解析:
14.有以下定义( ) #include<stdio.h> char a[10],*b=a; 不能给数组a输入字符串的语句是
(分数:2.00)
(分数:2.00)
&s(
&s(a[0]) √
&s(&a[0]);
&s(;
解析:[解析] 字符串输入函数gets()的参数只能是指针变量。
15.C语言程序的三种基本结构是顺序结构、循环结构和( )
(分数:2.00)
(分数:2.00)
A.选择结构 √
B.递归结构
C.嵌套结构
D.转移结构
解析:
二、{{B}}填空题{{/B}}(总题数:10,分数:20.00)
16.设int a=2,b=4,c=1,d;执行d=!(a-b+c);后d的值是 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:0)
解析:[解析] (a-b+c)=-1,其值非零,逻辑非后为0。
17.若有定义int a[3][4]={1,2,3,4,5,6,7,8};,则a[1][3]= 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:8)
解析:[解析] a[1][3]是数组a[3][4]={1,2,3.4.5.6,7.8}的第八个元素。
18.以下程序运行后的输出结果是______。 main() {int x=1,y=0,a=0,b=0; switch(x) {case 1:switch(y) {case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; } printf("%d%d/n",a,b); }
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:2 1)
解析:[解析] main() {int x=1,y=0,a=0,})=0; switch(x) {case 1:switch(y)/*x=1进入此分支*/ {case 0:a++;break;/*y=0进入此分支*/ case 1:b++;break; }/*此处无与case 1对应的break继续执行下一行语句*/ case 2:a++;b++;break;/*不论x值是否与之匹会被执行*/ } printf("%d%d/n",a,b); }
19.若有语句:int i=-19,j=i%4;printf("%d/n",j);则输出结果是 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:-3)
解析:[解析] 此为求(-19)/3的余数。
20.C语言中,输入和输出操作是由头函数 1完成的。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:stdio.h)
解析:
21.设i,j,k均为整型变量,则执行完"for(i=0,j=10;i<=j;i++,j--)k=i+j;"之后,k的值是 1。printf能输出空格吗
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:10)
解析:[解析] 求的是i+j的值。每一次循环i和j都分别加、减1,故其和值不变。
22.若有数组char a[5]={97,99,107,'/0',108),(a~z的ASCⅡ值是97~122)则执行语句puts(a)的结果是 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:ack)
解析:[解析] 打印输出的分别是该值所对应的字符。
23.移位运算被执行后,原对象中的数据 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:不变)
解析:
24.设char string[]="this_is_a_book!";,则数组的长度应是 1。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:16)
解析:
25.C语言中fputc1函数对文本文件的存取是以 2为单位的。
(分数:2.00)
(分数:2.00)
填空项1:__________________ (正确答案:字符)
解析:
三、{{B}}程序分析题{{/B}}(总题数:4,分数:16.00)
26.#include<stdio.h> main() {int a[4][3]={1,5,9,12,8,17,13,6,10,24,22,23},i,s=1; for(i=2;i<2=3;i++) s=s+a[i][3-i]; printf("s=%d/n",s); }
(分数:4.00)
(分数:4.00)
__________________________________________________________________________________________
正确答案:()
正确答案:()
解析:s=31 [解析] #include<stdio.h> main() {int a[4][3]={1,5,9,12,8,17,13,6,
10,24,22,23},i,s=1; for(i=2;i<=3;i++)/*i}*i初值为2,循环条什为i<=3,步进值为1*/ s=s+a[i][3-i];/*循环体内将"s+a[i][3-i]"的值赋于s*/ printf("s=%d/n",s);/*打印输出上述循环体执行完毕后s的值*/
27.#include<stdio.h> main() {int i,j,row,colum,m; static int arry[3][3]={{100,200,300},{28,27,29},{850,26,5)}; m=arry[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(arry[i][j]<m) {m=arry[i][j];row=i;colum=j;} printf("%d,%d,%d/n",m,row,colum); }
(分数:4.00)
(分数:4.00)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论