21.D。【解析】x--后缀表示先用x的值再令x减1,--x前缀表示先将x减1,再执行程序,则输出(X--)继续下一次循环,输出“8,”,此时x自减值变为7,执行x--,x=6,x%3=0,后面语句不执行,执行语句“printf("%d,",--x);”,输出“5”,继续for循环中的x--,得到x=5,输出“5”;判断x%3为真,输出“4”,执行两次x--后,x=2,执行“{printf("%d",x--);cotinue;}”后,输出“2”;然后执行两次x--后,x=0,不符合“x>0”,循环结束。
22.A。【解析】选项B中while(1)永远为真,一直自加下次进入死循环;选项C中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n<=o)循环判定成立,循环结束。
23.D。【解析】本题定义一个一维数组和指针,接着将数组第4个元素的地址赋予*P数组下标从0开始,进行--p使指针P指向了数组的第3个元素,通过y=*P将数组第3个元素的值3赋予y,所以选项D正确。
24.C。【解析】本题考查数组的定义一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项C错误。
25.A。【解析】程序定义了字符数组S和字符型指针变量P,并且使P指向数组S的首地址,执行P=S语句后,*P表示s[o];S数组中元素的个数和P所指字符串长度不相等,s数组中包括字符串结束标志“\0”,而P所指字符串不包括“\0”,数组s中的内容和指针变量P中的内容不相同,数组中存放的是字符串,而指针变量P存放的是数组的首地址。
26.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],其他选项的引用均是下标越界。
27.D。【解析】选项A调用函数gets使得s数组从s[0]开始得到输入的字符;选项B使得数组从元素s[1]开始得到输入的5个字符;选项C使得数组从s[0]开始得到输入的字符;而选项D的scan[(”%S”,S[1])调用错误,应为scanf(”%s”,&s[1])输入项部分应该是一个地址值。
28.D。【解析】预处理命令是以“#”开始的语句,每一条预处理命令必须单独占用一行,由于不是C语言的语句,并且命令行的最后不能以分号表示结束,定义格式为“#de-fine标识符字符串”,预处理命令行是系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。
29.A。【解析】定义结构体类型的一般形式“struct结构体名{成员列表}”,struct结构体名不能加“;”号。
30.B。【解析】本题考查的是c语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。
31.C。【解析】本题考查对for循环的使用,首先给两个数组赋值,第一个for循环从0开始循环12次遍历S数组的各个元素,数组将s[]中的元素值作为c[]数组中的下标,然后自加,使相应的值自加,当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…,11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项C正确。
32.C。【解析】本题定义一个一维数组并赋初值,接着调用fun(),功能是使数组中的元素逆序,当调用fun(a,0,3),将实参传递给形参实现数组a中a[0]至a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]至a[9]这6个元素逆序;调用fun£a,0,9)是将数组中a[o]至a[9]这10个元素再逆序,再用printf()函数输出结果为5678901234,故选项C正确。
33.A。【解析】在main函数中,定义了一个指向字符串的指针数组,并赋初值,然后调用fun函数,其功能是比较数组中元素的长度,按长度从小到大排序,所以执行fun(ss,5)函数后*ss[]={"xy","bec","bbcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别勾xy,aaaacc。
34.C。【解析】本题考查了函数的调用,在f函数中将实参传给X,判断if语句为假。接着执行y=3*3=f(1),再执行f(1)而f(1)满足if条件语句,所以f(1)的值为3,那么代入y=3*3-f(1)=9-3=6,故选项C正确。
35.C。【解析】在程序的主函数中main定义了一个指向字符串的指针和一个字符数组,然后调用fun(s,t),在fun()中第一个while语句判断*a中的值为“*”时继续扫描,如果不是“*”终止,第二个while循环,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[0]中的内容为“a*b****”,所以此时的运行结果为选项C。
36.A。【解析】本题考查在结构体中函数的调用,主函数调用f(c)后,实参传向形参,但程序中没有返回语句,故形参不能将值传回实参,实参之间值的传递具有不可逆性,所以printf输出的还是c中实参的值。
37.B。【解析】本题考查文件的读写和相关操作,fp=fopen("dl.dat","w")以写的方式为输出建立新文本文件.调用printf输出“123”,fp=fopen("dl.dat","r")以只读的方式打开文本文件,不能对文件内容进籀操作,故运行结果为选项B。
38.A。【解析】如果按题要求,高4位取反,低4位不变,则a为10101101,在选项中操作的结果,选项A中a*b=10101101,选项B中a|b=1111101,选项C中a&b=01010000,选项D中a<<4=11010000,故选项A正确。
39.A。【解析】动态变量(auto)存储在内存中的动态存储区,只在程序运行中,系统才临时给变量分配内存单元;全局变量(extern)一经定义,系统为其分配固定的内存单元;静态变量(static),编译系统为其分配固定的存储空闻;寄存器变量(register)不保存在内存上,而是直接存储在CPU的寄存器中。
40.B。【解析】定义语句int(*f)(int)中f是指向函数的指针变量,该函数中也只有一个int型的形参。
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥124 优惠价:¥124.0 更多书籍 |