1、B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是 A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof (13)以下选项中可作为C语言合法常量的是 A)-80 B)-080 C)-8e1.0 D)-80.0e (14)若有语句:char *line5;,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一
2、个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是 A)int a=b=0; B)char A=65+1,b=b; C)float a=1,*b=&a,*c=&b; D)double a=0 0;b=1.1; (16)有以下程序段char ch; int k;ch=a;k=12;printf(%c,%d,ch,ch,k); printf(k=%d n,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无
3、定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12 D)a,97,k=12 (17)有以下程序main() int i,s=1;for (i=1;i=2& cc(c%2!=1) (19)若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(ab) a=b; c=a; if(c!=a) c=b;%d,%d,%dn,a,b,c);其输出结果是 A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 (20)有以下程序#include int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case
4、 0:a+; break; case 1:b+;case 2: b+;case 3:a=%d,b=%dn,a,b);程序的运行结果是 A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 (21)下列程序的输出结果是#include stdio.h int i,a=0,b=0;for(i=1;10; if(i%2=0) a+;continue;a=%d,b=%d A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 (22)已知#int t=0;while (t=1) . 则以下叙述正确的是A)循环控制表达式的值为0 B)循环控制表达式的值为
5、1 C)循环控制表达式不合法 D)以上说法都不对(23)下面程序的输出结果是 int a10=1,2,3,4,5,6,7,8,9,10,*p=a;,*(p+2); A)3 B)4 C)1 D)2 (24)以下错误的定义语句是 A)int x3=0,1,1,2,3; B)int x43=1,2,3,1,2,3,1,2,3,1,2,3; C)int x4=1,2,3,1,2,3,1,2,3,1,2,3; D)int x3=1,2,3,4;(25)有以下程序void ss(char *s,char t) while(*s) if(*s=t)*s=t-a+A;s+; char str1100=abcd
6、dfefdbd,c=d;ss(str1,c);%sn,str1);程序运行后的输出结果是 A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd (26)有如下程序 char ch25=6937,8254,*p2;int i,j,s=0;for(i=0;2;i+)pi=chi;for(j=0;pij0;j+=2)s=10*s+pij-0;该程序的输出结果是 A)69825 B)63825 C)6385 D)693825 (27)有定义语句:char s10;,若要从终端给s输入5个字符,错误的输入语句是 A)gets(&s0); B)sc
7、anf(%s,s+1); C)gets(s); D)scanf(,s1);(28)以下叙述中错误的是 A)在程序中凡是以#开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct int n; char ch8; PER;则下面叙述中正确的是 A)PER 是结构体变量名 B)PER是结构体类型名 C)typedef struct 是结构体类型 D)struct 是结构体类型名(30)以下叙述中错误的是 A)gets函数用于
8、从终端读入字符串 B)getchar函数用于从磁盘文件读入字符 C)fputs函数用于把字符串输出到文件 D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是 A)int a5=0,1,2,3,4,5; B)char a=0,1,2,3,4,5,0; C)char a=A,B,C; D)int a5=0123;(32)有以下程序#include char p=a, b, c,q10= a, b, c;%d%dn,strlen(p),strlen(q);以下叙述中正确的是 A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 B) 由于
9、p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序void fun(char *s,int n) char *t; int i,j;n-1;for(j=i+1;jstrlen(sj) t=si;si:sj;sj=t; char *ss=bccbbccxyaaaaccaabcc;fun(ss,5);%s,%sn,ss0,ss4); A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc (3
10、4)有以下程序int f(int x) int y;if(x=0|x=1) return(3);y=x *x-f(x-2);return y; int z;z=f(3);,z); A)0 B)9 C)6 D)8 (35)下面程序段的运行结果是char str=ABC,*p=str;,*(p+3); A)67 B)0 C)字符C的地址 D)字符C (36)若有以下定义:struct link int data;struct link *next; a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是
11、: A)a.next=c; c.next=b; B)p.next=q; q.next=p.next; C)p-next=&c; q-next=p-next; D)(*p).next=q; (*q).next=&(37)对于下述程序,在方式串分别采用wt和wb运行时,两次生成的文件TEST的长度分别是void main() FILE *fp=fopen(TEST,);fputc(A,fp);fputc(n,fp);fputc(B,fp);fputc(C,fp);fclose(fp); A)7字节、7字节 B)7字节、5字节 C)5字节、7字节 D)5字节、5字节(38)变量a中的数据用二进制表示
12、的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是 A)ab B)a|b C)a&b D)a=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为。(19)B 【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B)。(20)D 【解析】本题考查switch语句,首先,x=1符合条件case 1,执
13、行switch(y)语句,y=0符合case 0语句,执行a+并跳出switch(y)语句,此时a=1。因为case 1语句后面没有break语句,所以向后执行case 2语句,执行a+,b+,然后跳出switch(x),得a=2,b=1。(21)B 【解析】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i+,判断循环条件。(22)B 【解析】t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t=1,注意=与=的用法。(23)A 【
14、解析】在C语言中,数组元素是从0开始的。指针变量p指向数组的首地址,(p+2)就会指向数组中的第3个元素。题目中要求输出的是元素的值。(24)C 【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误。(25)B 【解析】在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s+相当于s=s+1,即让s指向数组中的下一个元素。(26)C 【解析】该题稍微
15、难一点。主要要搞清楚以下几点:定义了一个指针数组char *p2后,程序中第一个循环for(i=0;的作用,是使指针数组的p0元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p1元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:chij或pij。对二维数组ch的初始化,使其第一行ch0中存入了字符串,第二行ch1中的内容为字符串程序中第二个循环中的循环体s=s*10+pij-0的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位
16、上添一个0),再将当前pij中的字符量转换为相应的数字,然后把这个数字加到s的个位上。注意到内层循环的循环条件pi j0 是指pij中的字符只要不是字符串结束标志0就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p0所指向的字符串中一个隔一个地取出字符,分别是6和3,然后从p1所指向的字符串85,同时经过转换和相加运算后,结果s中的值应该是6385。(27)D 【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出的s1是一个值的表达式。(28)D 【解析】 C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。(29)B 【解析】本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。(30)B 【解析】 getchar函数的作用是从终端读入一个字符。(31)B 【解析】选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。(32)A 【解析】在给p和q数组赋初值时,系统会自动添加字符串结
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1