实验五 参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五字符数组(参考答案)

1、设计程序sy5-1.c,编写程序实现对4个字符串的升序排序。

算法分析:

4个字符串的升序排序,和4个整数的排序一样,可以用冒泡法,唯一不同的是在两两比较时要用字符串的比较函数,而在条件满足时,交换的三条赋值语句,同样需要用字符串的赋值函数。

参考答案:

# include

# include

void main()

{

char str[20],s[4][20];

int i,j;

printf("Input 4 strings:\n");

for(i=0;i<4;i++)//输入字符串

gets(s[i]); //gets函数的参数s[i],表示第i行的首地址,即给第i行赋值for(j=0;j<3;j++) //用冒泡法处理字符串的排序

for(i=0;i<3-j;i++)

if(strcmp(s[i],s[i+1])>0) //strcmp字符串的比较函数

{ strcpy(str,s[i]); //strcmp字符串的比较函数

strcpy(s[i],s[i+1]);

strcpy(s[i+1],str);

}

printf("The sorted string:\n");

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

printf("%s\n",s[i]); //可以用puts(s[i])代替

}

运行结果:

2、设计程序sy5-2.c,写一程序,要求将字符串a的第n个字符之后的内容由字符串b替代,a,b,n由运行时输入。

算法分析:

要将字符串a的第n个字符之后的内容由字符串b替代,这时把字符串看成数组来处理,a的第n个

字符之后即字符数组下标为i=n开始用字符数组b[0],b[1]------b[j]---来替代,直到b数组的‘\0’结束,注意这个循环没有写入b数组的’\0’,所以赋值结束后,还得给字符数组a[i]赋值为’\0’。

参考答案:

# include

# include

void main()

{

char a[100],b[100];

int n,i,j;

printf("Input string a:");

gets(a);

printf("Input string b:");

gets(b);

printf("Input n:");

scanf("%d",&n);

for(i=n,j=0;b[j]!='\0';i++,j++) //a的第n个字符之后的内容由字符串b替代

a[i]=b[j];

a[i]='\0'; //给新的字符数组a末尾加上结束标志’\0’

printf("The result is :%s\n",a);

}

运行结果:

3、设计程序sy5-3.c,写一程序,输入一个字符串,要求将该字符串所有奇数位置上的字母转换为大写字母(若该位置上不是小写字母则不转换),结果输出到显示器。

算法分析:

把字符数组的奇数位置即从小标为i=0,2,4,6---直到s[i]=’\0’结束,逐一去判断当前位置的s[i]是否是小写字母,如果是则转换。

参考答案:

# include

# include

void main()

{

char s[100];

int i;

printf("Input a string:");

gets(s);

for(i=0;s[i]!='\0';i+=2) //i=i+2—步长,即所有的奇数位置

if(s[i]>='a'&&s[i]<='z') //判断s[i]是否是小写字母,如果是转换为大写字母

s[i]-=32;

printf("The result is:%s\n",s);

}

运行结果:

4、设计程序sy5-4.c,写一程序,要求将一个数字字符串转换为一个整数。例如,有字符串“-1234567”程序将它转换为整数-1234567。

算法分析:

输入数字字符串后,首先要分析整数还是负数,然后逐一去遍历字符串的每一位数字字符并转换为数字并进行累加。

参考答案:

# include

# include

void main()

{

char s[100];

int i=0;

long n=0; //输入的数值字符串长度未限制,所以n定义为长整数

printf("请输入数值字符串付给字符数组s:");

gets(s);

if(s[0]=='-') //如果条件成立,有效数值小标就从1开始

i=1;

for( ; s[i]!='\0';i++) //将字符串中的所有数字字符转换为整数

n=n*10+(s[i]-'0'); //n为绝对值

if(s[0]=='-') //如果是负数,把n还原

n=-n;

printf("n=%ld\n",n);

}

运行结果:

5、设计程序sy5-5.c,有3个字符串,要求找出其中的最小者。

算法分析:

3个字符串的求最值算法和求3个整数的最小值的方法相同,先求前两个数的最小值,再将最小值和第三个数比较。不同的是比较和赋值时一定要用字符串的比较和赋值函数。

参考答案:

#include

#include

void main()

{

相关文档
最新文档