1、 main( ) int i = 0, digit, letter, other; char ch, str80; printf( ); ch = getchar(); while( (11) ) stri = ch; i+; stri = 0; (12) ;Digit=%d letter=%d other=%dn, digit, letter, other);本题的思想很简单,只不过使用了指针而已。(9) A. int digit = 0, letter = 0, other = 0;B. int *digit =0, *letter = 0, *other = 0; C. digit =
2、letter = other = 0;D. *digit = *letter = *other = 0;内容赋值为0,不是指针赋值为0,因为*是取值运算.(10) A. *s+ ! B. *s+ !n C. *s ! D. *s !因为不结束,就继续。数组不结束,就是不等于0,所以只能在A和C中选择。但因为A选项在结束循环后还要移动指针S,此时已经指向了0,再移动指针会出错,所以选择C。(11) A. ch ! B. ch ! C. ch = D. ch = (12) A. count(str, &digit, &letter, &other) B. count(&str, &C. count
3、(*str, digit, letter, other)D. count(*str, *digit, *letter, *other)传地址,注意str就是字符串的首地址。由此判断其他几个选项都是错误的。P24试题6(每小题3分,共12分)struct stchar c; char s80; ;这是结构体数组的定义(2个成员)char * f(struct st t);void main( ) int k; struct st a4 = 1,123, 232134;这是结构体数组的初始化for(k = 0; k char *s2 = *, ; while(*s1 !, s0+strlen(s1
4、)-1); s1+; A、* B、*C、* D、* S是一个指针数组。S0指向字符数组”*”,也就是说,* * * * 0s0S1指向字符数组”*”,也就是说,s1strlen(s1)计算指针s的长度。循环第一次时,*s1=*, *s1 !为真。strlen(s1)=4strlen(s1)-1=3s0+strlen(s1)-1=s0+3这时,s0的指针变化为(向后移动指针3位): 所以输出的结果是*C、* D、* 循环第2次时,*s1=*, *s1 !strlen(s1)=3 (注意:s1+;使s1的指针后移一位,所以长度减少)strlen(s1)-1=2s0+strlen(s1)-1=s0+
5、2这时,s0的指针变化为(向后移动指针2位): 所以输出的结果是*C、* D、* 循环第3次时,*s1=*, *s1 !strlen(s1)=2(注意:strlen(s1)-1=1s0+strlen(s1)-1=s0+1这时,s0的指针变化为(向后移动指针1位): 所以输出的结果是*A、* B、*同理。P54阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。main() char ch, a10, *s10=onetwothreefour k = 0; while(ch = getchar()! 9) if(ch5 ch 不成立,ak = 下移循环没有执行,所以没有输出结
6、果。 注意一下各题,输入9和3时,与输入1一样。 (23) 程序运行时,输入7902#,输出 (23) 。C、one four three D、four three two one (24) 程序运行时,输入7633#,输出 (24) 。P651. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。(每小题3分,共12分)string.hmain() int i, j; char str10, *s10=SQLhellobearzone gets(str); /*读入一个字符串/ for(i = 0; i 0) continue; j = 3; while(j = i)
7、/*逐一后移,腾出一个位置*/ sj+1 = sj; j-; si = str; /*放入刚才输入的字符串*/ break; if(i = 4) s4 = str; /*循环结束,没有比任何一个大,也就是break语句没有起作用,此时循环正常结束,i=4就把刚才输入的字符串放到最后*/ 5; i+), si); putchar(【问题】(21)程序运行时,输入apple,输出 (21) 。A. SQL apple hello bear zone B. apple SQL hello bear zoneC. SQL hello bear zone apple D. SQL hello apple
8、 bear zone(22)程序运行时,输入I,输出 (22) 。A. SQL hello bear I zone B. I SQL hello bear zoneC. SQL I hello bear zone D. SQL hello bear zone I(23)程序运行时,输入zoo,输出 (23) 。A. zoo SQL hello bear zone B. SQL hello bear zoo zoneC. SQL hello bear zone zoo D. SQL hello zoo bear zone(24)程序运行时,输入orange,输出 (24) 。A. SQL ora
9、nge hello bear zone B. SQL hello orange bear zone C. orange SQL hello bear zone D. SQL hello bear orange zone这个函数的作用是:把输入的字符串与S10中的串逐一比较,如果输入的串小,就插入。如果比所有的串都大,就放到最后。大写字母比小写字符小(按照ASCII码比较)P59struct num int a, b;void f(struct num s, int n) int index, j, k; struct num temp; n-1; k+) index = k; for(j =
10、k + 1; j n; j+) if(sj.b sindex.b) index = j; temp = sindex; sindex = sk; sk = temp; int count, i, k, m, n, no; struct num s100, *p; scanf(%d%d%d, &n, &m, &k); si.a = i + 1; si.b = 0; p = s; count = no = 0; while(no b = 0) count+; if(count = m) no+; p-b = no; count = 0; p+; if(p = s + n) f(s, n);%d:
11、%dn, sk-1.b, sk-1.a);(21) 程序运行时,输入5 4 3,输出 (21) 。A. 3: 5 B. 2: 3C. 1: 2 D. 4: 1 (22) 程序运行时,输入5 3 4,输出 (22) 。 5 B. 1: 2C. 4: 3 D. 4: 2 (23) 程序运行时,输入7 5 2,输出 (23) 。A. 1: 5 B. 6: 1C. 2: 3 D. 2: 4 (24) 程序运行时,输入4 2 4#,输出 (24) 。 3 B. 4: 4 D. 4:一、通过分析以下一段程序,for(i = 0;我们知道:结构体s的最初情况是:S0.a=1,s0.b=0S1.a=2,s1.
12、b=0S2.a=3,s2.b=0S3.a=4,s4.b=0S4.a=5,s0.b=0二、通过分析以下一段程序, if(sj.b 我们知道,函数f是按照sj.b的大小排序,小的在前、大的在后。注意,排序时sj.a也相应改变。三、分析以下程序: /*赋初值,为0*/ n) /*1*/ /*2*/ if(count = m) /*3*/ /*4*/ /*5*/ /*6*/ /*7,指针向后移动一次*/ if(p = s + n) /*8这两句的意思是,如果指到头,再返回起点*/当循环进行了4次时,语句3的条件得到满足,所以语句4得到执行,no=1此时,指针指向s3.b,所以s3.b=1;注意,此后语
13、句7继续执行,但语句8的条件不满足,所以继续,但因为语句6已经执行,所以count=0然后,语句2再执行一次,语句8条件满足,又指向s0.这样,当下次语句3的条件满足时,no=2,而指针指向s2,所以,s2.b=2依次类推,我们得到结构体s的最后结果:S0.a=1,s0.b=5S1.a=2,s1.b=4S2.a=3,s2.b=2S3.a=4,s4.b=1S4.a=5,s5.b=3特别应该注意的是,这里m的次数是4,而n=5,所以不匹配。四,调用函数f对以上结构体排序后,结果如下:S0.a=4,s0.b=1(注意是原来的s4.b,所以S0.a=4)S1.a=3,s1.b=2S2.a=5,s2.b=3S3.a=2,s4.b=4S4.a=1,s0.b=5五Sk-1.b=s3-1.b=s2.b=3Sk-1.a=s3-1.a=s2.a=5所以,(21)题的答案是A.其余各题类似。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1