(21) 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
| 以下是引用片段: #include #include main() { char a[]="clanguage",t; int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k; [27] ) if( [28] ) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf("\n"); } |
(22) 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。
| 以下是引用片段: #include main() { char *p, s[6]; int n; p=s; gets(p); n=*p-'0'; while( [29] !='\0')n=n*8+*p-'0'; printf("%d \n",n); } |
(23) 下列程序的输出结果是 【30】 。
| 以下是引用片段: #include main( ) { char b[30],*chp; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s \n",b); } |
(24) 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 【31】 。
| 以下是引用片段: #include main( ) { char strl[]="How do you do", *p1=strl; strcpy(strl+strlen(strl)/2,"es she"); printf("%s \n",pl); } |
(25) 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【32】
:
.
char a[10],b;
scanf("a=%s b=%c",a,&b);
:
.(26) 下面程序的输出结果是 【33】
| 以下是引用片段: char b[]="ABCD"; main() { char *chp; for(chp=b; *chp: chp+=2) printf("%s",chp); printf("\n"); |
(27) 以下程序输出的是 【34】
| 以下是引用片段: main( ) { int i=3, j=2; char *a="DCBA"; printf("%c%c\n",a[i],a[j]); } |
(28) 函数fun的功能是:使一个字符串按逆序存放,请填空
| 以下是引用片段: void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<【35】;i++,j--) { m=str[i]; str[i]=【36】; str[j-1]=m; } printf("%s\n",str); } |
(29) 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
| 以下是引用片段: #include"ctype.h" #include"stdio.h" main() { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\n') break; } str[i]=【37】; sptr=str; while(*sptr) putchar(*sptr【38】); } |
(30) 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。
| 以下是引用片段: #include main() { char str[100],str2[100],c; int i,s; printf("\n input string 1:\n"); gest(str1); printf("\n input string 2:\n"); gest(str2); i=0; while((strl[i]==str2[i]&&(str1[i]!=【39】)) i++; s=【40】; printf("%d\n",s); } |
(31) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
| 以下是引用片段: #include. main() { char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C' ,'D','E','F'}; int c[64],d,i=0,base; long n; printf("enter a number:\n"); scanf("%ld",&n); printf("enter new base:\n"); scanf("%d",&base); do { c[i]=【41】; i++; n=n/base; } while(n!=0); printf("transmite new base:\n"); for(--i;i>=0;--i) { d=c[i]; printf("%c",b【42】; } } |
(32) 函数mycmp (char*s,chat *t)的功能是比较字符串s和t的大小,当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值, 当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCOII码的差值,即当s>t时返回正值, 当s<t时返回负值,请填空。
| 以下是引用片段: mycmp(char *s,char *t) { while(*s==*t) {if(*s=='\0') return 0; ++s; ++t;} return (【43】); } |
(33) 下列程序的输出结果是【44】
| 以下是引用片段: main() { char b[]="ABCDEFG"; char *chp=&b[7]; while(--chp>&b[0]) putchar(*chp); putchar('\n'); } |
(34) 阅读程序:
| 以下是引用片段: #include "string.h" #include "stdio.h" strle(char a[],char b[]) { int num=0,n=0; while(*(a+num)!='\0'),num++; while(b[n]){ *(a+num)=b[n];num++;n++;} return (num);} main() { char str1[81],str2[81],*p1=str1,*p2=str2; gets(p1); gets(p2); printf("%d\n",strle(p1,p2)); } |
运行上面程序,如果从键盘上输入字符串qwerty和字符串abcd则程序的输出结果是 【45】 。
(35) 阅读程序:
| 以下是引用片段: main() { char str1[]="how do you do" ,str2[10]; char *p1=str1,*p2=str2; scanf("%s",p2); printf("%s",p2); printf("%s\n",p1); } |
运行上面的程序,输入字符串HOW DO YOU DO 则程序的输出结果是【46】 。
(36) 已知函数isalpha(ch)的功能是判断自变量ch是否是字母,若是,函数值为1,否则为0。下面程序的输出是 【47】 。
| 以下是引用片段: #include #include void fun4( char str[]) { int i,j; for(i=0, j=0; str[i]; i++) if(isalpha(str[i])) str[j++]=str[i]; str[j]='\0';} main() { char ss[80]="It is!"; fun4(ss); printf( '%s\n", ss);} |
(37) 下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。
| 以下是引用片段: #include void invert(char str[]) { int i,j, 【48】 ; for(i=0,j=strlen(str) 【49】 ; i { k=str[i]; str[i]=str[j]; str[j]=k;} } |
(38) 下面程序的输出结果是 【50】 。
| 以下是引用片段: #include main() { static char b[]="Goodbye"; char *chp=&b[7]; while( --chp >=&b[0]) putchar( *chp); putchar('\n'); } |
(39) 下面程序的输出结果是 【51】 。
| 以下是引用片段: #include void fun( char *a1, char *a2, int n) { int k; for( k=0; k a2[k]=( a1[k]-'A'-3+26)%26+'A'; a2[n]='\0'; } main() { char s1[5]="ABCD", s2[5]; fun( s1, s2, 4); puts( s2); } |
(40) 下面程序的输出结果是 【52】 。
| 以下是引用片段: #include main() { char *p[]={ "BOOL", "OPK", "H", "SP"}; int i; for(i=3; i>=0; i--,i--) printf( "%c", *p[i]); printf("\n"); } |
| 以下是引用片段: #include #include main() { int i; char str[10], temp[10]; gets(temp); for (i=0; i<4; i++) { gets(str); if (strcmp(temp,str)<0) strcpy(temp,str); } printf("%s\n",temp); } |
上述程序运行后,如果从键盘上输入(在此
C++
BASIC
QuickC
Ada
Pascal
则程序的输出结果是 【53】 。
答案:
一、选择题:
01) A 02) B 03) D 04) B 05) B
06) C 07) D 08) A 09) D 10) A
11) D 12) B 13) D 14) B 15) B
16) A 17) C 18) D 19) B 20) C
21) A 22) C 23) C 24) C 25) D
26) B 27) B 28) A 29) B 30) D
31) D 32) A 33) D 34) A 35) D
36) C 37) C 38) A 39) A 40) D
41) C 42) C 43) B 44) D 45) C
46) C 47) D 48) C 49) C 50) D
51) A 52) C 53) B 54) C 55) D
56) A 57) A 58) C 59) D 60) C
61) C 62) B 63) D 64) C 65) A
66) D 67) C 68) C 69) D 70) D
71) A 72) D 73) A 74) D 75) A
76) C 77) B 78) B 79) C 80) A
81) B 82) D 83) C 84) A 85) B
86) A 87) A 88) B 89) A 90) C
91) A 92) C
二、填空题:
(1) *t
(2) bcdefgha
(3) abcfg
(4) abcbcc
(5) str+strlen(str)-1
(6) t==0或!t
(7) huiwen(str)
(8) gae
(9) *2*4*6*8*
(10) *t++
(11) efgh
(12) cdeab
(13) s[i]>='0' && s[i]< ='9'
(14) s[i]<'0'||s[i]>'9' 或 !(s[i]>='0'&&s[i]<='9')
(15) '\0'或 0 或 NULL
(16) *t 或 t[0]
(17) *s-*t 或 *s-t[0] 或 s[0]-*t 或 s[0]-t[0]
(18) efgh
(19) abc
(20) *(str+i)str[i]
(21) i
(22) 9876
876
(23) s[i++]
(24) Hello
(25) '\0'或0
(26) n++或n+=1或n=n+1
(27) j+=2
(28) a[i]>a[j]
(29) *(++p)
(30) CDABC
(31) How des she
(32) a=1234 b=5 A或a=1234b=5
(33) ABCDCD
(34) AB
(35) strlen(str )/2
(36) str[j-1]或*(str+j-1)
(37) '\0' 或0
(38) ++
(39) '\0'或0
(40) strl[i]-str2[i]
(41) n%base
(42) [d]
(43) *s=*t
(44) GFEDCB
(45) 10
(46) HOW how do you do (说明:HOW 和how之间有无空格均可)
(47) It is
(48) k
(49) -1
(50) eybdooG
(51) XYZA
(52) SO
(53) QuickC