实验五 参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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()
{