| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1027 人关注过本帖
标题:学渣,典型的学渣,这道题班上的挂了99%,神奇!
只看楼主 加入收藏
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
学渣,典型的学渣,这道题班上的挂了99%,神奇!
我们刚学习了冒泡法,就是一群C语言刚出道的菜鸟,然后老师说今天考试就做一道题,顿时就乐了,这老师就是好,考一道题。后来才知道,我们上当了。

不要人活得节奏(现在的我而言)。

大致应该是这样的,考完我也懵了,   输入十个人的手机号码按照由小到大的顺序后输出。
我的过程是这样的,
1 手机号有十一位,我定义的是  int  运行时出错,后来我发现原来 int的范围为-2147483647~2147483647,超出范围。
2 马上想到用二维数组。
后来。。。。。。。。
我想学习一下各位大神的新颖思维方式,拜谢!
#include<stdio.h>
#include<string.h>
int main()
{
    char c[10][11],k;
    int i,cmp,j;
    printf("请输入十个号码:");
    for(j=0;j<=9;j++)
    scanf("%s",c[j]);
    for(i=0;i<=9;i++)
    {
        for(j=0;j<=9;j++)
        {

    cmp=strcmp(c[j],c[j+1]);
        if(cmp>0)
        {
          k=c[j+1];
          c[i+1]=c[j];
          c[j]=k;
        }
        }
    }
    for(j=0;j<=9;j++)
    printf("请输出各号码:%s\n",c[i]);
    return 0;
}
这是我写的,提示不能用字符串来赋值交换,我真的不知道怎么办了。

[ 本帖最后由 寒冷枫dl 于 2013-11-27 00:16 编辑 ]
搜索更多相关主题的帖子: 手机号码 include C语言 
2013-11-26 22:59
thb
Rank: 2
等 级:论坛游民
帖 子:26
专家分:31
注 册:2013-11-21
收藏
得分:1 
字符串
2013-11-26 23:14
thb
Rank: 2
等 级:论坛游民
帖 子:26
专家分:31
注 册:2013-11-21
收藏
得分:1 
字符串也可以比较大小·
2013-11-26 23:15
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
你看看是否符合你的要求
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
    int i,j;
    char *p[10],*temp;     //设为字符指针数组,易于输入
    temp=(char*)malloc(12*sizeof(char));
    printf("输入10个手机号码:\n");
    for(i=0;i<10;i++){
        fflush(stdin);       //用于清空缓冲区
        p[i]=(char*)malloc(12*sizeof(char));
        gets(p[i]);
    }
    for(i=0;i<9;i++)             //其实就是冒泡排序
        for(j=0;j<9-i;j++)
            if(strcmp(p[j],p[j+1])>0){
                strcpy(temp,p[j]);
                strcpy(p[j],p[j+1]);
                strcpy(p[j+1],temp);
            }
    printf("-----------------------\n");
    for(i=0;i<10;i++)
        puts(p[i]);
    return 0;
}



图片附件: 游客没有浏览图片的权限,请 登录注册


三十年河东,三十年河西,莫欺少年穷!
2013-11-27 00:41
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:1 
赞楼上

埋头做牛,抬头做人,低头做狗
2013-11-27 08:36
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:1 
回复 楼主 寒冷枫dl
可以交换字符串指针

[ 本帖最后由 cosdos 于 2013-11-27 20:08 编辑 ]

—>〉Sun〈<—
2013-11-27 19:39
yuanhaitaozz
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:32
专家分:9
注 册:2013-8-22
收藏
得分:1 
strcmp 就可以用来比较这种字符串大小 过程类似整型
2013-11-27 19:55
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:5 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 10
#define NUMBERLENGTH 12

#define SWAP(A,B,T) do {(T)=(A); (A)=(B); (B)=(T);} while(0)

int main(void)
{
    char *numbers[MAX] = {NULL};
    char strs[MAX][NUMBERLENGTH] = {'\0'};
    int i,j;
    char *p;

    for (i=0; i<MAX; ++i)
    {
        scanf("%11s", strs[i]);
        numbers[i] = strs[i];
    }
    fflush(stdin);
    for (i=0; i<MAX-1; ++i)
    {
        for (j=i+1; j<MAX; ++j)
        {
            if (strcmp(numbers[i], numbers[j]) > 0)
                SWAP(numbers[i], numbers[j], p);
        }

    }
    for (i=0; i<MAX; ++i)
        printf("%s\n", numbers[i]);
        
    system("pause");
    return 0;
}

—>〉Sun〈<—
2013-11-27 20:03
xixiqiqi
Rank: 2
等 级:论坛游民
帖 子:22
专家分:71
注 册:2013-10-10
收藏
得分:5 
作为练习,也可以用int来处理手机号码
程序代码:
#include <stdio.h>

struct Number
{
    int high;
    int low;
};

void output(struct Number* nums,int n)
{
    for(int i=0;i<n;i++)
    {
        printf("%d%d\n",nums[i].high,nums[i].low);
    }
}

int isequals(struct Number s1,struct Number s2)
{
    return (s1.high==s2.high)&&(s1.low==s2.low);
}

void sort_p(struct Number* nums,int start,int end,int part)
{                                        
    for(int i=start;i<end;i++)
    {
        int x=i;
        for(int j=i+1;j<=end;j++)
        {
            if(part==1 && nums[j].high<nums[x].high)
            {
                x=j;
            }
            if(part==2 && nums[j].low<nums[x].low)
            {
                x=j;
            }
        }
        if(x!=i)
        {     
            struct Number temp;      
            temp=nums[x];
            nums[x]=nums[i];
            nums[i]=temp;
        }
    }
}

void sort(struct Number* nums,int n)
{
    sort_p(nums,0,n-1,1);

    int start=0;
    int len=0;
    int sign=0;
    for(int i=1;i<n;i++)
    {
        if(nums[i].high==nums[i-1].high)
        {
            if(sign==0)
            {
                start=i-1;
                len=start;
                len++;
            }
            else
            {
                len++;
            }
            sign=1;
        }else if(nums[i].high!=nums[i-1].high && sign==1)
        {
            sort_p(nums,start,len,2);
            start=0;
            len=0;
            sign=0;
        }
    }
}

int main()
{ 
    const int n=11;
    struct Number nums[n]={15233,526661,18343,434345,18343,434344,18343,434343,18956,984526,13368,514568,18945,263215,13385,123695,15233,526663,15233,526664,15233,526662};
    printf("现有的%d个号码为:\n",n);
    output(nums,n);
    putchar('\n');
    sort(nums,n);
    printf("排序后的%d个号码为:\n",n);
    output(nums,n);
    putchar(10);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
2013-11-28 11:10
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
收藏
得分:0 
回复 3楼 thb
给你赞一个!,接触到了一些还没有学过的东西,促使自己走的更远。真心谢谢
2013-11-28 16:36
快速回复:学渣,典型的学渣,这道题班上的挂了99%,神奇!
数据加载中...
 
   



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

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