字符串练习
1、选择题
1.1、有以下程序
int main()
{ char a[7]="a0\0a0\0";int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
} //strlen求出字符串的长度,其实是字符串中字符的个数,不包括\0
程序运行后的输出结果是____C____
A)2 2
B)7 6
C)7 2
D)6 2
1.2、以下能正确定义一维数组的选项是____A____
A)int a[5]={0,1,2,3,4,5};
B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'};
D)int a[5]="0123";
1.3、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是__D_____
A)数组a和b的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)上述说法都不对
1.4、以下语句或语句组中,能正确进行字符串赋值的是 __D_____
A)char *sp; *sp="right!";
B)char s[10]; s="right!";
C)char s[10]; *s="right!";
D)char *sp="right!";
1.5、有以下程序
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
程序运行后的输出结果是 _A____
A)15
B)16
C)12
D)59
1.6、以下程序的输出结果是( B )。
main()
{ char s1[20]=“abc”,s2[20]=“123”;
if(strcmp(s1,s2)>0) printf(“%s\n”,s1)); //strcmp 比较字符串大小
else printf(“%s\n”,s2);
}
(A) abc (B) 123 (C) abc123 (D) 123abc
1.7、有以下程序
#include<sthio.h>
int main()
{ char a[20],b[20],c[20];
scanf(“%s%s”,a,b);
gets(c);
printf(”%s,%s,%s\n”,a,b,c);
}
程序运行时从第一行开始输入 this is a cat!<回车>,则输出结果是__B___
A) this, is, a B) this is, a , cat!
C) this is a, cat! D) this, is, a cat!
1.8、有以下程序
#include<stdio.h>
#include<string.h>
main()
{ char a[5][10]={"china","beijing","you","tiananmen","welcome”);
int i,j;char t[10];
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(strcmp(a[i],a[j])>0)
{ strcpy(t,a[i]);strcpy(a[i],a[j]);strcpy(a[j],t);}
}
puts(a[3]);
}
其输出结果是_____C________
A)Beijing B)china C)welcome D)tiananmen
1.9、有以下程序
#include<stdio.h>
int main()
{char ch [3][5]={"AAAA","BBB","CC");
printf ("%s\n",ch[1]);
}
程序运行后的输出结果是(D )。
A)AAAA B)CC C)BBBCC D)BBB
1.10、有以下程序(strcat 函数用以连接两个字符串)
#include <stdio.h>
#include <string.h>
int main()
{ char a[20]=”ABCD\0EFG\0”, b[ ]=”IJK”;
strcat(a,b); printf(“%s\n”,a);
}
程序运行后的输出结果是___B_____
A)ABCDE\OFG\OIJK B)ABCDIJK
C)IJK D)EFGIJK
1.11有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name,&num);
当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name 的值为__A_
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001
1.12 有以下程序
#include
#include main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p)); printf(“%s\n”,p);
}
程序运行后的输出结果是__B____
A)9,One*World B)9,One*Dream!
C)10,One*Dream! D)10,One*World
2、填空题
2.1、以下程序运行后的输出结果是 ab bc c
#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");
}
2.2、 以下程序的运行结果是__string s:I like it.
String t:I like it.
main( )
{ char s[20]=“I like it.” , t[20]=“Are you? How are you”, c[20] ;
int i=0;
while(s[++i]!=‘\0’)
t[i]=s[i];
t[i]=0;
printf(“string s:%s\n”,s);
printf(“string t:%s\n”,t);
}
2.3、下面程序运行的结果为____30 10 30
n Learning_______。
int main()
{
int i=10, a[]={10,20,30,15}, *p1;
char *b=”Learning”, **p2=&b;
p1=&i;
printf(“%4d”,*p1+20);
for(p1=a;p1<a+4;p1+=2)
printf(“%4d”,*p1);
printf(“\n%c\t%s\n”,*(b+4),*p2);
}
3、编程题
3.1、 从键盘输入两个字符串a,b ,输出其由a与b字符串中字符从小到大的顺序排列的新的字符串。试编程
#include <stdio.h>
int main()
{
char a[20],b[20],c[40]="";
scanf("%s",a);
scanf("%s",b);
strcat(c,a);
strcat(c,b);
for(int i=0;i<strlen(c);i++)
{
for(int j=0;j<strlen(c)-i;j++)
{
if(c[j]>c[j+1])
{
char t=c[j];
c[j]=c[j+1];
c[j+1]=t;
}
}
}
puts(c);
return 0;
}