字符数组作业参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符数组
1、给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为
A) 数组x和数组y等价 B) 数组x和数组y的长度相同
C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度
2、对字符数组str赋初值,str不能作为字符串使用的一个是( )
A) char str[]="shanghai";
B) char str[]={"shanghai"};
C) char str[9]={'s','h','a','n','g','h','a','i',’\0’};
D) char str[8]={ 's','h','a','n','g','h','a','i'};
3、判断两字符串s1,s2是否相等,应使用( ).
A)if(s1==s2) B)if(s1=s2)
C)if(strcpy(s1,s2)) D)if(strcmp(s1,s2)==0)
4、#include
void main()
{
char ch[3][5]={ "AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
"BBB"
5、#include
void main()
{
char str[80];
int i=0;
gets(str);
while(str[i]!=0)
{
if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
i++;
}
puts(str);
}
程序运行时如果输入 upcase, 屏幕显示UPCASE
程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示AA1BB2CC3
6、将一个字符数组中的数字字符找出来形成一个新的字符串,并显示新字符串。如
“a123bcd456!ui”,生成新字符串“123456”。
参考答案:
#include
void main()
{
char str[100],news[100];
int i,j;
gets(str);
j=0;
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
{ news[j]=str[i];j++;}
news[j]='\0';
puts(news);
}
7、编一程序,将两个字符串连接起来。除gets和puts外,不能使用其他任何字符串函数。参考程序如下: 把第2个字符串连接到第1个串的后面。
#include
void main()
{
char s1[100],s2[30]; //注意s1要够长,来容得下连接后的字符串
int i,j;
gets(s1);
gets(s2);
for(i=0;s1[i]!='\0';i++)
; //空循环,目的是让i指向s1的’\0’的位置
for(j=0;s2[j]!='\0';j++) //把s2中的字符逐一拷贝到s1后面
s1[i+j]=s2[j];
s1[i+j]='\0'; //别忘了在s1后加’\0’
puts(s1);
}
8、找出10个字符串中最长的字符串。
参考答案:
#include
#include
void main()
{
char s[10][30]; //10表示10个字符串,30表示每个字符串最多有29个字符组成,
//30可以根据需要自己确定
int i;
int max;//存最长字符串的长度
int pos;//存最长字符串的行下标
for(i=0;i<10;i++)
gets(s[i]);
max=strlen(s[0]);
pos=0;
for(i=1;i<10;i++)
if(max { max=strlen(s[i]); pos=i; } //循环结束后pos中存放的是最长字符串的行下标 printf("the longest strint is %s", s[pos] ); } 9、有 N个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。 #include #include #define N 10 void main() { char names[N][30];//N表示N个国家名字,即N个字符串,30表示每个名字字符串最多有 // 29个字符组成,可以自己确定 char string[30];//交换两个字符串时用 int i,j; printf("please input %d names\n",N); for(i=0;i gets(names[i]);//注意这里的names[i]不是单个字符,而相当于一个字符数组名 for(i=0;i for(j=0;j if(strcmp(names[j],names[j+1])>0) //注意这里比较和交换的是字符串,不是单个字符 { strcpy(string,names[j]); strcpy(names[j],names[j+1]); strcpy(names[j+1],string);