我不知道怎么改错了有人能看一下,讲一下怎么改嘛?能给个改这种的思路就更好了,谢谢
把if else那里的str1,str2,str3,strmax改为str[0]1,str2[0],str3[0],strmax[0],这个用于判断字符串首字母的ASCII码的大小,即题目要求求字符串中最大的意思;
然后把语句如strmax=str1; 等改为strcpy(strmax,str1); 这个用于把最大的字符串复制到strmax字符数组中。
修改如下:
#include <stdio.h>
#include <string.h>
int main(void){
char str1[20],str2[20],str3[20],strmax[20];
printf("请输入3个字符串:\n");
scanf("%s%s%s",str1,str2,str3);
if(str1[0]>str2[0]) //如果字符串str1比字符串str2首字母的大,则把str1复制到strmax中
strcpy(strmax,str1); //把较大的字符串str1复制到strmax中
else //如果字符串str2比字符串str1首字母的大,则把str2复制到strmax中
strcpy(strmax,str2); //把较大的字符串str2复制到strmax中
if(str3[0]>strmax[0]) //如果字符串str3比字符串strmax首字母的大,则把str3复制到strmax中
strcpy(strmax,str3); //把较大的字符串str3复制到strmax中
printf("最大的字符串为:%s\n",strmax);
return 0;
}
z字符数组的处理 要么循环对每个字符进行处理,要么用c字符串处理相关函数啊
修改如下,供参考:
从输出看,应该是2个字符串逐一比较,然后比较每一位的ascii码对应的int值,int值较大的则放在为最大值。多次比较即可
int main() {
char s1[20],s2[20],s3[20];
printf("请输入三个字符串\n");
scanf("%s",s1);
scanf("%s",s2);
scanf("%s",s3);
char *smax=s1;
//开始逐一比较
int len1=strlen(s1);
int len2=strlen(s2);
int len3=strlen(s3);
//防止数组越界,取小值进行比较
int i_minlen=len1<len2?len1:len2;
for(int i=0;i<i_minlen;++i)
{
int val1=s1[i];
int val2=s2[i];
if(val1<val2)
{
smax=s2;
break;
}
else {
smax=s1;
break;
}
}
int i_maxlen=strlen(smax);
i_minlen=i_maxlen<len3?i_maxlen:len3;
for(int i=0;i<i_minlen;++i)
{
int val1=smax[i];
int val2=s3[i];
if(val1<val2)
{
smax=s3;
break;
}
else {
smax=smax;
break;
}
}
printf("最大的字符串为%s\n",smax);
return 0;
}