| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 613 人关注过本帖
标题:都是指针惹的祸!
只看楼主 加入收藏
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
都是指针惹的祸!
输入5个名字到2维数组中 然后判断名字头字母的大小 小到大的循序排列 数组元素的内容不可以改变 这是我的代码:
#include<stdio.h>
int main(void)
{
    int f,i;
    char a[5][10],*win[5]={a[0],a[1],a[2],a[3],a[4]};

    printf("输入姓名:\n");
    for(f=0;f<5;f++)
    {
        scanf("%s",a[f]);
    }
    for(f=0;f<5;f++)
    {
        for(i=0;i<f+1;i++)
        {
            if((int)(a[f])>(int)(a[i]))
            {
                win[i]=a[f];
                win[f]=a[i];
            }
        }
    }
    printf("\n");
    for(f=0;f<5;f++)
    {
        printf("%s",*win[f]);
    }
    getch();
    return 0;
}
程序有点问题输入名字后 直接报错啦~~大家帮忙看看吧
对指针的概念还没太熟练 还在努力中..我知道我写程序很菜..有问题直接说吧!
搜索更多相关主题的帖子: 姓名 字母 include 元素 
2011-10-31 19:37
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:10 
test2.rar (760 Bytes)


[ 本帖最后由 mfh 于 2011-10-31 20:23 编辑 ]
2011-10-31 20:20
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:0 
回复 2楼 mfh
??????
2011-10-31 20:34
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:10 
#include<stdio.h>
#include<string.h>
int main(void)
{
    int f,i;
    char a[5][10];
    char (*win)[10]=a;//数组的名字就是地址.
    char strmax[10];  
    printf("输入姓名:\n");
    for(f=0;f<5;f++)
    {
        scanf("%s",&a[f]);//取数组元素的时候要加取地址符 scanf("%s",&a[f]);
    }
    for(f=0;f<5;f++)        //典型的冒泡法 很好-_-
    {
        for(i=0;i<5-f;i++)  //要I<5-f吧
        {
          if(a[i]>a[i+1]) //不知能行不 可以写成:if(a[i]>a[i+1])
            {                          
                            //临时变量 交换位置
              strcpy(strmax,a[i]);
              strcpy(a[i+1],a[i]);
              strcpy(a[i],strmax);
              
            }
        }
    }
    printf("\n");
    for(f=0;f<5;f++)
    {
        printf("%s",*win[f]);
    }
    return 0;
}

我也只能帮你这么多了 其实我也是菜鸟

能力 技巧
2011-10-31 20:55
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:0 
#include<stdio.h>
#include<string.h>
int main(void)
{
    int f,i;
    char a[5][10];
    char strmax[10];  
    printf("输入姓名:\n");
    for(f=0;f<5;f++)
    {
        scanf("%s",&a[f]);//取数组元素的时候要加取地址符 scanf("%s",&a[f]);
    }
    for(f=0;f<4;f++)        //典型的冒泡法 很好-_-
    {
        for(i=0;i<4-f;i++)  //要I<5-f吧
        {
          if((a[i][0]>a[i+1][0])) //不知能行不 可以写成:if(a[i]>a[i+1])
            {                          
                            //临时变量 交换位置
              strcpy(strmax,a[i]);
              strcpy(a[i],a[i+1]);
              strcpy(a[i+1],strmax);
              
            }
        }
    }
    puts("排序后:");
    for(f=0;f<5;f++)
    {
        printf("%s\n",a[f]);
    }
    return 0;
}

更改上面的错误!!!

能力 技巧
2011-10-31 21:18
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:0 
其实用数组会限定元素个数,就是只能输入数组的最大值的名字.
等学了链表就有链表学,长度可以放缩的.

能力 技巧
2011-10-31 21:22
快速回复:都是指针惹的祸!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020630 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved