标题:想用字符串的方法解决,求教。输出出现问题。
只看楼主
魂之子
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-12-25
结帖率:90.91%
 问题点数:0 回复次数:2 
想用字符串的方法解决,求教。输出出现问题。
问题描述:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。


#include<stdio.h>


void swap(char *pa,char * pb);
int main(){
    int i;
        char a[4];
    scanf("%s",a);

    int con;
    for (con=0; con<4; con++){
         a[con] += 9;
         a[con] /= 10;
    }
    swap (&a[0], &a[2]);
    swap (&a[1], &a[3]);
    printf ("The encrypted number is %s",a);
   
    return 0;
}

void swap(char *pa,char * pb){
    int i;
    i = *pb;
    *pb = *pa;
    *pa = i;
}
搜索更多相关主题的帖子: char 数字 pb 方法 con 
2020-01-14 23:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
错误有三处
1. char a[4] 应该是  char a[5] 吧
2. a[con] /= 10 应该是 a[con] %= 10 吧
3. 你用 scanf("%s",a) 获得的不是 0、1、2、……,而是 '0'、'1'、'2'、……。所以你那个循环体应当是 a[con] = (a[con]-'0'+9)%10 + '0';

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    unsigned m = (n/10+9)%10*1000 + (n/1+9)%10*100 + (n/1000+9)%10*10 + (n/100+9)%10*1;
    printf( "%u\n", m );
}



2020-01-15 08:44
魂之子
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-12-25
得分:0 
回复 2楼 rjsp
非常感谢大哥帮我解决问题,恍然大悟,非常感谢。
2020-01-15 21:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498931-1-1.html




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

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