| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13843 人关注过本帖, 1 人收藏
标题:输入一个四位正整数,将其加密后输出。
只看楼主 加入收藏
忆泪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:49
注 册:2011-10-22
结帖率:75%
收藏(1)
已结贴  问题点数:20 回复次数:13 
输入一个四位正整数,将其加密后输出。
方法是将该数每一位上的数字加9,然后除以10 取余,作为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。
【样例输入输出】 (括号内为说明文字)
Enter a number: 1257
The  encrypted  number  is  4601(每一位上的数字加9 除以10 取余后得0146,交换后得到4601)



自己觉得应该用数组应该比较简单的吧,可是老实现不了,谁能帮忙看看啊,,有其他办法不,,自己用了个本办法,如下代码:
程序代码:
#include<stdio.h>
void main()
{
    int num;
    printf("Enter a number (1000<=num<=9999):\n");
    scanf("%d",&num);
    num=(num/1000+9)%10*10+((num/100)%10+9)%10+((num/10)%10+9)%10*1000+(num%10+9)%10*100;
    printf("The  encrypted  number  is  %d\n",num);
}
搜索更多相关主题的帖子: Enter number 正整数 加密 
2012-04-07 08:24
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:10 
我为什么感觉数组不是很容易.......
程序代码:
#include<stdio.h>
#define N 4
#define swap(a,b) t=a;a=b;b=t
void divide(int sum,int array[])
{
    int i=3;
    while(sum){array[i] = ((sum%10+9)%10);sum/=10;i--;}
}
void swap_array(int array[])
{
    int t;
    swap(array[1],array[3]);
    swap(array[0],array[2]);
}
void print(int array[])
{
    int i;
    for(i=0;i<N;i++)printf("%d",array[i]);
    printf("\n");
}
int main()
{
    int array[N];
    int sum;
    printf("Enter a number between 1000 and 9999\n");
    scanf("%d",&sum);
    divide(sum,array);
    swap_array(array);
    print(array);
    return 0;
}

2012-04-07 08:37
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:10 
#include <stdio.h>
void main()
{
    int b[4],t,i;
    char a[4];
    printf( " Enter a number (1000<=num<=9999):\n " );
    gets(a);
    for(i=0;i<4;i++)
        b[i]=(a[i]-'0'+9)%10;
    for(i=0;i<2;i++)
    {t=b[i];
    b[i]=b[i+2];
    b[i+2]=t;
    }
    t=b[0]*1000+b[1]*100+b[2]*10+b[3];
    printf( " The  encrypted  number  is  %d",t);

}
测试运行了下,结果正确。
也可以这样

#include <stdio.h>
void main()
{
    int b[4],t,i;
    char a[4];
    printf( " Enter a number (1000<=num<=9999):\n " );
    gets(a);
    for(i=0;i<4;i++)
        b[i]=(a[i]-'0'+9)%10;
    for(i=0;i<2;i++)
    {t=b[i];
    b[i]=b[i+2];
    b[i+2]=t;
    }
    for(i=0;i<4;i++)
        a[i]=b[i]+'0';
        printf( " The  encrypted  number  is \n");
    puts(a);

}

[ 本帖最后由 不哭5死神 于 2012-4-7 16:04 编辑 ]
2012-04-07 08:50
___Ya
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2011-11-30
收藏
得分:0 
学习学习!
2012-04-07 09:26
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
那个加密的,我说你那表达式可不可以短点,你可以多个变量把,逻辑就清楚一点,我肯定是你的表达式出了问题,简单的问题自己要学着解决,不行就换个方式解决,也开阔一思维。
2012-04-07 10:09
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
回复游民
你这也太乱了吧,逻辑在哪里?数组引用你是用什么括号?看下书吧,你输入的数怎么处理。我搞不清楚了,你上机运行一下吧,看电脑能否理解?
2012-04-07 10:25
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:0 
回复 6楼 cuijunchao
搞定了。早上没注意。

#include <stdio.h>
void main()
{
    int b[4],t,i;
    char a[4];
    printf( " Enter a number (1000<=num<=9999):\n " );
    gets(a);
    for(i=0;i<4;i++)
        b[i]=(a[i]-'0'+9)%10;
    for(i=0;i<2;i++)
    {t=b[i];
    b[i]=b[i+2];
    b[i+2]=t;
    }
    t=b[0]*1000+b[1]*100+b[2]*10+b[3];
    printf( " The  encrypted  number  is  %d",t);

}
你看看吧
2012-04-07 15:58
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
你这个程序好了很多,后面部分的逻辑基本正确了,但前面你定义a[4]是有什么用呢?好像没有用到,而且也没多大必要吧。还有你的输入是一个四位数,gets(a)并不能完成吧,我不知道怎么说了,你这里错误还是太多,你的语言基础,我真的很怀疑,你还是把基础补补吧,再来写程序,要不然你是学不好的。我今晚把个正确给你看吧。
2012-04-07 17:26
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:0 
回复 8楼 cuijunchao
呵呵。正不正确,你运行后再说吧。
也可以以这样做。

#include <stdio.h>
void main()
{
    int b[4],t,i;
    char a[4];
    printf( " Enter a number (1000<=num<=9999):\n " );
    gets(a);
    for(i=0;i<4;i++)
        b[i]=(a[i]-'0'+9)%10;
    for(i=0;i<2;i++)
    {t=b[i];
    b[i]=b[i+2];
    b[i+2]=t;
    }
    for(i=0;i<4;i++)
        a[i]=b[i]+'0';
        printf( " The  encrypted  number  is \n");
    puts(a);

}
琢磨琢磨吧
2012-04-07 17:45
忆泪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:49
注 册:2011-10-22
收藏
得分:0 
回复 2楼 巴克
受教啦,,感谢,,,至于到底是那种方法简单,我也不清楚,只是看到题目第一眼感觉应该用数组的吧,,,
虽然都可以实现问题描述,,但是你的方法看起来比较层次清晰,我的比较混乱而已,,,
void swap_array(int array[])这个函数中的,int t;我第一遍没看出来,他有啥用,,原来是里面调用的 swap函数需要,,,嘿嘿。。
不管怎么说,,受教了,谢谢
2012-04-07 22:00
快速回复:输入一个四位正整数,将其加密后输出。
数据加载中...
 
   



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

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