字符数组作业参考答案

发布时间:2024-11-02

字符数组

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 <stdio.h>

void main()

{

char ch[3][5]={ "AAAA","BBB","CC"};

printf("\"%s\"\n",ch[1]);

}

"BBB"

5、#include <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

#include <string.h>

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<strlen(s[i]))

{

max=strlen(s[i]);

pos=i;

}

//循环结束后pos中存放的是最长字符串的行下标

printf("the longest strint is %s", s[pos] );

}

9、有 N个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。

#include <stdio.h>

#include <string.h>//注意别丢掉

#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<N;i++)

gets(names[i]);//注意这里的names[i]不是单个字符,而相当于一个字符数组名

for(i=0;i<N-1;i++)//表示起泡排序进行的N-1趟

for(j=0;j<N-1-i;j++)//表示第i趟进行的多次比较

if(strcmp(names[j],names[j+1])>0) //注意这里比较和交换的是字符串,不是单个字符

{

strcpy(string,names[j]);

strcpy(names[j],names[j+1]);

strcpy(names[j+1],string);

}

printf("the sorting names are as following\n");

for(i=0;i<N;i++)

puts(names[i]);

}

字符数组作业参考答案.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219