(72) 以下程序的输出结果是
#include"ctype.h"
space (char *str)
{ int i,t;char ts[81];
for(i=0,t=0;str[i]!='\0';i+=2)
if(! isspace(*str+i)&&(*(str+i)!='a'))
ts[t++]=toupper(str[i]);
ts[t]='\0';
strcpy(str,ts); }
mian( )
{ char s[81]={"a b c d e f g"};
space(s);
puts(s); }
A) abcdeg B) bcde C) ABCDE D) BCDE
(73) 下面函数的功能是
A) 求字符串的长度 B) 比较两个字符串的大小
C) 将字符串x复制到字符串y D) 将字符串x连接到字符串y后面
int funl(char * x)
{ char * y=x;
while(*y++);
return(y-x-1);}
(74) 下面程序的输出是
A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC
#include<stdio.h>
#include<string.h>
main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n", str);}
(75) 下面程序的输出是
A) ABCD B) A C) D D) ABCD
BCD B C ABC
CD C B AB
D D A A
char s[]="ABCD";
main()
{ char *p;
for(p=s; p<s+4; p++)
printf("%s\n,p);}
(76) 下面各语句行中,能正确进行赋字符串操作的语句行是
A) char st[4][5]={"ABCDE"}; B) char s[5]={'A','B','C','D','E'};
C) char *s; s="ABCDE"; D) char *s; scanf("%s",s);
(77) 请读程序:
#include<stdio.h>
f(char *s)
{ char *p=s;
while( *p!='\0') p++;
return(p-s);
}
main()
{ printf("%d\n",f("ABCDEF"));}
上面程序的输出结果是
A) 3 B) 6 C) 8 D) 0
(78) 请读程序片段:
char str[]="ABCD", *p=str;
printf("%d\n",*(p+4));
上面程序的输出结果是
A) 68 B) 0 C) 字符"D"的地址 D) 不确定的值
(79) 请读程序片段(字符串内没有空格):
printf("%d\n",strlen("ATS\n012\1\\"));
上面程序片段的输出结果是
A) 11 B) 10 C) 9 D) 8
(80) 请读程序:
#include<stdio.h>
#include<string.h>
main()
{ char*s1="AbCdEf", *s2="aB";
s1++; s2++;
printf("%d\n",strcmp(s1,s2));
}
上面程序的输出结果是
A) 正数 B) 负数 C) 零 D) 不确定的值
(81) 请读程序:
#include<stdio.h>
char fun(char *c)
{ if( *c<='Z' && *c>='A') *c-='A'-'a';
return *c;
}
main()
{ char s[81], *p=s;
gets(s);
while(*p)
{*p=fun(p); putchar(*p); p++;}
putchar('\n');
}
若运行时从键盘上输入OPEN THE DOOR<CR>(<CR>表示回车),则上面程序的输出结果是
A) oPEN tHE door B) open the door C) OPEN THE DOOR D) Open The Door
(82) 请读程序:
#include<stdio.h>
#include<string.h>
void fun( char *s)
{ char a[10];
strcpy( a, "STRING");
s=a;
}
main()
{ char *p;
fun(p);
x=f(a, 3);
printf("%s\n",p);
}
上面程序的输出结果是(└┘表示空格)
A) STRING└┘└┘└┘└┘ B) STRING
C) STRING└┘└┘└┘ D) 不确定的值
(83) 请读程序:
#include<stdio.h>
#include<string.h>
void fun( char *w, int m)
{ char s, *p1, *p2;
p1=w; p2=w+m-1;
while (p1<p2)
{ s=*p1++; *p1=*p2--; *p2=s;}
}
main()
{ char a[]="ABCDEFG";
fun( a, strlen(a));
puts(a);
}
上面程序的输出结果是
A) GFEDCBA B) AGADAGA C) AGAAGAG D) GAGGAGA
(84) 请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出
(85) 设有如下的程序段:
char str[ ]="Hello";
char *ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为
A) 'o' B) '\0' C) 不确定的值 D) 'o'的地址
(86) 设有
static char str[ ]="Beijing";
则执行
printf("%d\n", strlen(strcpy(str,"China")));
后的输出结果为
A) 5 B) 7 C) 12 D) 14
(87) 请选出以下程序段的输出结果
#include<stdio.h>
main()
{ char sl[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处<CR>代表回车符)
aaaa bbbb<CR>
cccc dddd<CR>
A) aaaa B) aaaa C) aaaa D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
(88) 指针s所指字符串的长度为 【88】 。
char *s="
\\"Name\\Address\n";
A) 19 B) 15 C) 18 D) 说明不合法
(89) 以下程序的输出结果是 【89】 。
# include <stdio.h>
# include <string.h>
main()
{ char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str)); }
A) 6 B) 7 C) 11 D) 12
(90) 以下程序的输出结果为 【90】 。
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i<4;i + + ) printf("%s",p[i]); printf("\n"); }
A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
(91) 设有以下语句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
【91】 不是对字符串的正确引用,其中0≤k<4。
A) strp B) str[k] C) strp[k] D) *strp
(92) 设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则 【92】 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
二、填空题:
(1)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
# include <string.h>
void sstrcat(char *s, char *t)
{ int n;
n= strlen(s);
while (*(s+n)= 【1】 ){s++; t++;}
}
(2)以下程序运行后的输出结果是 【2】 。
#include <string.h>
char *ss(char *s)
{ char *p, t;
p=s+1; t=*s;
while(*p) { *(p-1) = *p; p++;}
*(p-1)=t;
return s;
}
main()
{ char *p, str[10]="abcdefgh";
p = ss(str) ;
printf("%s\n",p);
}
(3)以下程序运行后的输出结果是 【3】
#include "string.h"
void fun(char *s,int p,int k)
{ int i;
for(i=p;i<k-1;i++)
s[i]=s[i+2];
}
main()
{ char s[]="abcdefg";
fun(s,3,strlen(s));
puts(s);
}
(4)以下程序运行后的输出结果是【4】
#include "string.h"
main()
{
char ch[]="abc",x[3][4]; int i;
for(i=0;i<3;i++) strcpy(x[i],ch);
for(i=0;i<3;i++) printf("%s",&x[i][i]);
printf("\n");
}
(5)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes
yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.
#include "string.h"
char *huiwen(char *str)
{
char *p1,*p2; int i,t=0;
p1=str; p2= ①
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--)
{ t=1; break; }
if( ②) return ("yes!");
else return ("no!");
}
main()
{
char str[50];
printf("Input:"); scanf("%s",str);
printf("%s\n", ③ );
}
【5】
【6】
【7】
(6) 以下程序运行后的输出结果是 【8】 。
main ()
{ char a[]="Language",b[]="Programe";
char *p1,*p2; int k;
p1=a; p2=b;
for(k=0;k<=7;k++)
if(*p1+k)==*(p2+k)} printf("%c",*(p1+k))_;
]
(7) 以下程序运行后的输出结果是 【9】 。
main()
{ char a[]="123456789",*p; int i=0;
p=a;
while(*p)
{ if(i%2==0) *p='*';
p++;i++;
}
puts(a);
}
(8) 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char *s,char *t)
{ while(*s++=【10】);}
main( )
{ char str1[100],str2[]=”abcdefgh”;
sstrcpy(str1,str2);
printf(“%s\n”,str1);
}
(9) 下列程序的运行结果是:【11】
#include <string.h>
char *ss(char *s)
{ return s+strlen(s)/2;}
main( )
{ char *p,*str=”abcdefgh”;
p=ss(str); printf(“%s\n”,p);
}
(10) 以下程序运行后输入:3,abcde<回车>,则输出结果是 【12】
#include <string.h>
move(char *str, int n)
{ char temp ; int i;
temp=str[n-1];
for(i=n-1; i>0;i--) str[i]=str[i-1];
str[0]=temp;
}
main()
{ char s[50]; int n, i, z;
scanf("%d,%s",&n, s);
z=strlen(s);
for(i=1; i<=n; i++) move(s,z);
printf("%s\n",s);
}
(11) 以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include <stdio.h>
#include <ctype.h>
main()
{ char s[80], d[80]; int i, j;
gets(s);
for(i=j=0; s[i]!=‘\0’; i++)
if( 【13】 ) { d[j]=s[i]; j++;}
d[j]=‘\0’;
puts(d);
}
(12) 以下函数的功能是删除字符串s中的所有数字字符。请填空。
void dele(char *s)
{ int n=0,i;
for(i=0,s[i];i++)
if(【14】)
s[n++]=s[i];
s[n]=【15】;
}
(13) 函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{ while(*s&&*t&& *s== [16] )
{ s++;t++;}
return [17] ;
}
(14) 以下程序的输出结果是【18】 。
main()
{ char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
(15) 以下程序的输出结果是【19】 。
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
(16) mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i;
for(i=0; 【20】!=‘\0';i++);
return(【21】);
}
(17) 以下程序运行后的输出结果是 【22】 。
main()
{ char s[ ]=“9876”,*p;
for ( p=s ; p<s+2 ; p++) printf(“%s\n”, p);
}
(18) 若有定义语句: char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
while([i]){ d[j]= 【23】;j++;}
d[j]=0;
(19) 下列程序段的输出结果是 【24】 。
main()
{ char b[]=”Hello,you”;
b[5]=0;
printf(“%s \n”, b );
}
(20) 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
Strcen(char a[], char b[])
{ int num=0,n=0;
while(*(a+num)!= [25] ) num++;
while(b[n]){*(a+num)=b[n]; num++; [26] ;}
return(num);
}
(21) 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
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 <stdio.h>
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<xtype.h>
#include<string.h>
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 <string.h>
void invert(char str[])
{ int i,j, 【48】 ;
for(i=0,j=strlen(str) 【49】 ; i<j; i++,j--)
{ k=str[i]; str[i]=str[j]; str[j]=k;}
}
(38) 下面程序的输出结果是 【50】 。
#include<stdio.h>
main()
{ static char b[]="Goodbye";
char *chp=&b[7];
while( --chp >=&b[0]) putchar( *chp);
putchar('\n');
}
(39) 下面程序的输出结果是 【51】 。
#include<stdio.h>
void fun( char *a1, char *a2, int n)
{ int k;
for( k=0; k<n; 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 <stdio.h>
main()
{ char *p[]={ "BOOL", "OPK", "H", "SP"};
int i;
for(i=3; i>=0; i--,i--) printf( "%c", *p[i]);
printf("\n");
}
(41) 设有下列程序:
#include<stdio.h>
#include<strint.h>
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);
}
上述程序运行后,如果从键盘上输入(在此<CR>代表回车符):
C++<CR>
BASIC<CR>
QuickC<CR>
Ada<CR>
Pascal<CR>
则程序的输出结果是 【53】 。
答案:
一、选择题:
1) A 2) B 3) D 4) B 5) B 6) C 7) D 8) A 9) 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
[1] [2]