首页 新闻 会员 周边 捐助

一个C语言的小问题

0
悬赏园豆:30 [待解决问题]

求大神,帮忙写个小程序,帮一下小弟,小弟写的最后交换字符串的那句不能成功使用?大佬,帮帮忙。

问题补充:

#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;
}

lovelyai的主页 lovelyai | 初学一级 | 园豆:156
提问于:2017-06-19 20:16
< >
分享
所有回答(2)
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;
}

应该有问题,仅供参考。

幻天芒 | 园豆:37207 (高人七级) | 2017-06-20 00:01

 感觉我们两个思路一样,就是里边的想法也都差不多,但是我的编译器把那个例子的答案输进去,得到的结果却和例子的答案不一样!!!难到这种方法是错的吗。

支持(0) 反对(0) lovelyai | 园豆:156 (初学一级) | 2017-06-20 21:45

@lovelyai: 分成两步,第一步取每个字符串的值(最小的元素ASCII码),第二步是排序。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2017-06-20 22:33
0

不要用gets,要用也要用gets_s。(逃

Cloogo | 园豆:301 (菜鸟二级) | 2017-06-21 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册