求大神,帮忙写个小程序,帮一下小弟,小弟写的最后交换字符串的那句不能成功使用?大佬,帮帮忙。
#include<string.h>
#include<stdio.h>
main()
{
char a[6][10],b[10],str[6],n;
int i,k,j;
for(i=0;i<6;i++)
{
gets(a[i]);
}
for(i=0;i<5;i++)
{
k=strlen(a[i]);
b[i]=a[i][0];
for(j=1;j<k;j++)
if(b[i]>a[i][j])
b[i]=a[i][j];
}
for(i=0;i<5;i++)
{
for(j=i+1;j<6;j++)
if(str[i]>str[j])
{
n=str[i];
str[i]=str[j];
str[j]=n;
strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
}
for(i=0;i<6;i++)
printf("%s\n",a[i]);
return 0;
}
#include<string.h> #include<stdio.h> int getStringValue(char str[10]) { printf("str = %s", str); int len = strlen(str); int i, min = (int)str[0]; for(i=1;i< len;i++){ if((int)str[i] < min){ min = (int)str[i]; } } return min; } main() { char a[6][10],b[10],str[6],n; int i,k,j, v1, v2; // 等待输入 for(i=0;i<6;i++) { gets(a[i]); } // 输入完成之后,开始排序运算 for(i=0;i<6;i++) { v1 = getStringValue(a[i]); for(j = i+1; j < 6;j++){ v2 = getStringValue(a[j]); printf("v1 = %d, v2 = %d; \n", v1,v2); if(v1 > v2){ strcpy(b,a[i]); strcpy(a[i],a[j]); strcpy(a[j],b); } } } printf("--------------结果分割线----------------\n"); for(i=0;i<6;i++){ printf("%s\n",a[i]); } return 0; }
应该有问题,仅供参考。
感觉我们两个思路一样,就是里边的想法也都差不多,但是我的编译器把那个例子的答案输进去,得到的结果却和例子的答案不一样!!!难到这种方法是错的吗。
@lovelyai: 分成两步,第一步取每个字符串的值(最小的元素ASCII码),第二步是排序。
不要用gets,要用也要用gets_s。(逃