C刷题记录-1009
题目描述
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的数字
输出
三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数
样例输入
12345
样例输出
5 1 2 3 4 5 54321
一、
1 #include <stdio.h> 2 3 /* 定义结构体用于存放"/"和"%"的结果*/ 4 typedef struct { 5 int x; 6 int y; 7 }remainder; 8 9 /*定义函数,计算当前最高位和余数*/ 10 remainder get_number(int number,int k){ 11 remainder r; 12 r.x = number/k; 13 r.y = number%k; 14 return r; 15 } 16 int main(){ 17 int number, count=0,len =0, div=10000,number_2 = 0,count_2=1; 18 19 scanf("%d",&number); 20 /*while循环获取数字长度*/ 21 while ((get_number(number,div).x) == 0) 22 { 23 count++; 24 div=div/10; 25 } 26 len = 5-count; 27 printf("%d\n",len); 28 29 /*while循环获取各个位以及倒输出数字*/ 30 while ((get_number(number,div).x) != 0) 31 { 32 printf("%d ", get_number(number,div).x); 33 switch(count_2){ 34 case 5: number_2 += 10000*get_number(number,div).x;count_2++; break; 35 case 4: number_2 += 1000*get_number(number,div).x;count_2++; break; 36 case 3: number_2 += 100*get_number(number,div).x;count_2++; break; 37 case 2: number_2 += 10*get_number(number,div).x;count_2++; break; 38 case 1: number_2 += get_number(number,div).x;count_2++; break; 39 default: break; 40 } 41 42 number = get_number(number,div).y; 43 div=div/10; 44 if(div == 1) 45 { 46 printf("%d\n", get_number(number,div*10).y); 47 break; 48 } 49 } 50 switch(count_2){ 51 case 5: number_2 += 10000*get_number(number,div).x;count_2++; break; 52 case 4: number_2 += 1000*get_number(number,div).x;count_2++; break; 53 case 3: number_2 += 100*get_number(number,div).x;count_2++; break; 54 case 2: number_2 += 10*get_number(number,div).y;count_2++; break; 55 default: break; 56 } 57 58 printf("%d",number_2); 59 return 0; 60 }
二、
1 /*转换成字符串来实现*/ 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 6 int main(){ 7 int number,number_inverse = 0,count = 1,temp = 0; 8 char str[5]; 9 char *p_str; 10 scanf("%d",&number); 11 p_str = itoa(number,str,10); 12 13 printf("%d\n",strlen(p_str)); 14 while(*p_str != '\0') 15 { 16 printf("%d ",(int)(*p_str-'0')); 17 switch (count){ 18 case 1: temp=(int)((*p_str)-'0') * 1; count++; break; 19 case 2: temp=(int)((*p_str)-'0') * 10; count++;break; 20 case 3: temp=(int)((*p_str)-'0') * 100; count++;break; 21 case 4: temp=(int)((*p_str)-'0') * 1000; count++;break; 22 case 5: temp=(int)((*p_str)-'0') * 10000; count++; break; 23 default: 24 break; 25 26 } 27 28 number_inverse += temp; 29 p_str ++; 30 } 31 printf("\n%d",number_inverse); 32 33 return 0; 34 35 }