| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2377 人关注过本帖
标题:编程题
只看楼主 加入收藏
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
看看之前我的话:
>>>我来告诉你吧,你这代码是错的,和它题目本身不符
>>>碰巧得到的结果和原问题一样而已

请留意一下我之前说过的话,然后你反思一下,是不是你自己的问题?

" border="0" />
2008-04-10 19:19
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
算了 争到最后只是语言问题了  许三多都说没意义了

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-10 19:31
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
试着作了个程序,执行结果很令人满意,你看看,是否能作为参考?
程序代码:
/*
此程序为避免死循环,特加一变量控制,当循环过4次后,跳出while循环,结束程序.  

由于鄙人新手,所以所作程序难免有些欠妥,不免让高手们贻笑大方。哪有待改进之处,还望各位不误吝指教,谢谢。
*/
#include<stdio.h>
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入一个四位数*/
int shuru()    
{
        int i;
        char c;
        do
        {
                system("cls");
                printf("请输入一个四位整数:\n");
                scanf("%d",&i);
                while(c=getchar()!='\n'&&c!=EOF);
                puts(" ");
                if(i<1000||i>9999)
                {
                        printf("您的输入有误,请重新输入。\n");
                        sleep(1);
                }
        }
        while(i<1000||i>9999);

        return i;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转换*/
void zhuanhuan(int *a,int *b)
{
        int t;
        t=*a;
        *a=*b;
        *b=t;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~逆排序*/
int paixu_n(int a)
{
        int b[4],i,j;
        b[0]=a/1000;
        b[1]=(a-b[0]*1000)/100;
        b[2]=(a-b[0]*1000-b[1]*100)/10;
        b[3]=a%10;
        for(i=0;i<4;i++)
                for(j=0;j<4;j++)
                        if(b[j]<b[i])
                                zhuanhuan(&b[i],&b[j]);
        return b[0]*1000+b[1]*100+b[2]*10+b[3];
}
/*?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 顺排序*/
int paixu_s(int a)
{
        int b[4],i,j;
        b[0]=a/1000;
        b[1]=(a-b[0]*1000)/100;
        b[2]=(a-b[0]*1000-b[1]*100)/10;
        b[3]=a%10;
        for(i=0;i<4;i++)
                for(j=0;j<4;j++)
                        if(b[j]>b[i])
                                zhuanhuan(&b[i],&b[j]);
        return b[0]*1000+b[1]*100+b[2]*10+b[3];
}

/*###################################################### 主函数*/
int main(void)
{
        int yuansu,zhuanhuan_s,zhuanhuan_n,zhi;
        int i=0;
        yuansu=shuru();      /*~~~~~~~~输入四位数*/
        zhuanhuan_n=paixu_n(yuansu);/*~~~~~~~~~~~~~~首次将这四位数转换为逆序*/
        while(1)
        {
                zhuanhuan_n=paixu_n(zhuanhuan_n);/*~~~~~~~~~~循环一次以后,将新得到的数字再排序*/
                zhuanhuan_s=paixu_s(zhuanhuan_n);/*~~~~~~~~~将逆序的数字顺序排列*/
                zhuanhuan_n-=zhuanhuan_s;  /*~逆序与顺序数相减,新值赋与变量zhuanhuan_n */
                printf("%d\n",zhuanhuan_n);/*~~~输出得到的结果*/
                if(zhuanhuan_n==6174)
                        i++;  /*~~~~~~~~~~~~~当值为死循环值时,i值增1*/
                if(i>=3)
                        break;  /*~~~~~~~~~~当死循环4次后,跳出程序*/
        }

        printf("*******************************\n\n%d\n",zhuanhuan_n);


        getch();
}
                        









[[it] 本帖最后由 广陵绝唱 于 2008-4-10 20:52 编辑 [/it]]
2008-04-10 20:50
快速回复:编程题
数据加载中...
 
   



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

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