| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1507 人关注过本帖
标题:C资料大全里面的一道题,稍微有“那么一点点”难度,希望能写个代码,顺便解 ...
只看楼主 加入收藏
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
你再去看看我修改后的程序。
2009-10-29 22:25
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:2 
#include "stdio.h"
main()
{
    int num,a[4],i=0,n;
    printf("请输入数据:");
    scanf("%d",&num);
    while(num>0)
    {
        n=num%10;
        num=num/10;                  //取出num中的每一个数
        a[i]=(n+5)%10;               //将取出来的数+5并除以10取余
        printf("%d",a[i]);           //输出数据
        i++;
    }
}
2009-10-29 22:34
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
收藏
得分:0 
回复 4楼 剑木易
程序好像错了,不是一个数字,而是有四个数组成的
代码应该改为
#include<stdio.h>
#include<conio.h>
main()
{ int i,a,b,c,d,t,h;
scanf("%d",&i);
d=i%10;
c=i%100/10;
b=i/100%10;
a=i/1000;
 
a=(a+5)%10;
b=(b+5)%10;
c=(c+5)%10;
d=(d+5)%10;
t=a;
a=d;
d=t;
h=b;
b=c;
c=h;
 
printf("%d,%d,%d,%d",a,b,c,d);
getch();
}

-------------->>>>>信仰火之意识,崇拜黑客精神<<<<<--------------------
2009-10-29 22:34
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
收藏
得分:0 
回复 12楼 小J
这次可以,代码简短,但是我有点看不懂,就是数字之间怎么转换?能不能稍微解释下,谢谢啦

-------------->>>>>信仰火之意识,崇拜黑客精神<<<<<--------------------
2009-10-29 22:41
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:2 
/*
这类题看过多次,本来不想写的。
*/
#include <stdio.h>
#include <stdlib.h>
#define LEN 4
int main(void) {
    char data[LEN + 1] = "";  // 我使用字符串处理
                              // {0, 0, 0, 0, 0}
    char ch;
    int i;
    for(i = 0; i < LEN; ++i) {
        // 读取一个字符,把字符变为数字,因为ASCII码中的数字字符
        // 是连续的,并且从'0'开始,所以减去'0'等于int数字123456789
        // '0' - '0' 等于 0
        // '1' - '0' 等于 1 ,以此类推
        // 接着,把得到的数字加上5,
        // 然后除10取余(以10取余),
        // 最后再把该数字变为ASCII码(加上'0')。
        data[i] = (getchar() - '0' + 5) % 10 + '0';
        // 我直接在这读取和处理数字了,并且作为字符处理,
        // 是为了方便显示。
    }
    for(i = 0; i < LEN / 2; ++i) {
        // 交换。
        ch = data[i];
        data[i] = data[LEN - 1 - i];
        data[LEN - 1 - i] = ch;
        // i = 0 时,
        // data[0]  data[4 - 1 - 0];
        // 即:第一个元素与第四个元素。
    }
    data[LEN] = '\0';    // 确保字符串末尾空字符
                 // data[4] = '\0'; 第五个元素
                 // 作为字符串更加方便显示。
                 // '\0' 是字符串的结束标识。
                 // '\0' 即数字0,ASCII码中
                 // 的可见字符都大于0。
    puts(data);    // 在屏幕上打印字符串
    return 0;
}

/*
取余: %
80 % 10 等于 0,因为没有余数。
6 % 2 等于 0
4 % 3 等于 1
9 % 2 等于 1
余数是小学学的。那是还没学小数,所以5除2,除不尽了。5除2余1。
小学除法中的余数。
10个苹果平均分给3个人吃。3个人各分到3个,最后还多了1个。
这个就是余下的一个。

以前看书时,书上写取模,让我很不理解。那时我不知道什么是取模。



*/


[ 本帖最后由 cosdos 于 2009-10-29 22:46 编辑 ]

—>〉Sun〈<—
2009-10-29 22:42
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
写完这代码居然这么多人发帖了。

—>〉Sun〈<—
2009-10-29 22:44
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
收藏
得分:0 
回复 15楼 cosdos
呵呵,取模我知道,大一学的,只是没好好学,现在快毕业了,好好复习下

-------------->>>>>信仰火之意识,崇拜黑客精神<<<<<--------------------
2009-10-29 22:46
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
#include "stdio.h"  
main()  
{  
    int num,a[4],i=0,n;  
    printf("请输入数据:");  
    scanf("%d",&num);  
    while(num>0)  
    {  
        n=num%10;  
        num=num/10;                  //取出num中的每一个数 ,每次都是取得最后一位
        a[i]=(n+5)%10;               //将取出来的数+5并除以10取余  
        printf("%d",a[i]);           //输出数据  
        i++;  
    }  
}  


其实这个跟本用不着交换,因为我每次都是取得最后一位数,所以我输入的时候自然也是倒着输出的!!!如输入的数是6789,6789%10=9,(9+5)%10输出的就是4,然后6789/10=678。在进行第二次循环直到num<=0跳出。

[ 本帖最后由 小J 于 2009-10-29 22:54 编辑 ]
2009-10-29 22:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
接 15 楼
// 这样的话一个循环就够,但不能体现变量交换。
    for(i = LEN - 1; i > 0; --i)
    {
        data[i] = (getchar() - '0' + 5) % 10 + '0';
    }

—>〉Sun〈<—
2009-10-29 22:50
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
收藏
得分:0 
回复 18楼 小J
人多就是力量大,一道题目有这么多答案,连思维方式都不一样,服了!!!

-------------->>>>>信仰火之意识,崇拜黑客精神<<<<<--------------------
2009-10-29 22:53
快速回复:C资料大全里面的一道题,稍微有“那么一点点”难度,希望能写个代码, ...
数据加载中...
 
   



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

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