蓝桥杯练习题-反置数-C语音

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。例如,如果用户输入:435和754,则输出结果为199。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
输入:
  435 754
  输出:
  199
*/
int main(){
  //声明已经定义的函数(C语音语法要求)
  int reverse_num(int num);
  //输入两个整数n和m;sum是n,m反序后的和;fsum为sum的反序数;
  int n,m,sum,fn,fm,fsum;
  //输入
  scanf("%d%d", &n, &m);  
  //将n反序
  fn = reverse_num(n);
  //将m反序
  fm = reverse_num(m);
  //求和
  sum = fn + fm;
  //将sum反序
  fsum = reverse_num(sum);
  //输出到终端
  printf("%d\n", fsum);
 
  return 0;
}
/*
  测试数据:4985120 6854398
  结果:840519
*/
 
//反置函数,参数为一个正整数,返回这个数的反序数
int reverse_num(int num){

  int flag=0,i,j=0;
  char chs[20]={'\0'},chs2[20]={'\0'};
  //sprintf函数,用字符数组chs存储num按十进制转换后的字符形式;
  sprintf(chs, "%d", num);
  //strlen返回字符数组的实际长度(除'\0'外的字符数)
  for(i=strlen(chs)-1; i>=0; i--){
    //逆序后去掉前面的0(如果是0就不处理)
    if(chs[i] != '0')
      flag = 1;
    //将字符存储到chs2数组中
    if(flag){
      chs2[j] = chs[i];
      j++;
    }
  }
  //atoi函数:将字符数组转换成数字
  return atoi(chs2);
}


posted @ 2022-03-20 23:50  帅哥才  阅读(51)  评论(0编辑  收藏  举报