C练习_1005

题自:题目 1009: [编程入门]数字的处理与判断_C语言网


 

题目描述

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

输入

一个不大于5位的数字

输出

三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数

点击查看代码 ```点击查看代码 ``` ``` ```

样例输入
12345
样例输出
5
1 2 3 4 5
54321
我的解答:
 1 // Code file created by C Code Develop
 2 
 3 #include "ccd.h"
 4 #include "stdio.h"
 5 #include "stdlib.h"
 6 #include "math.h"
 7 
 8 int main() {
 9     int num; 
10     while (1) 
11     {
12         // scanf("%d", &num); 
13         num = 12345; 
14        
15         if (num < 100000) break; 
16     }
17     
18     
19     int d;
20     if(num < 10) {
21     d = 1; }
22     else if(num < 100) {
23         d = 2;
24     }
25     else if(num < 1000) {
26         d = 3;
27     }
28     else if(num < 10000) {
29         d = 4;
30     }
31     else {
32         d = 5;   
33     }
34     //1 
35     printf("%d\n", d);
36     //2    
37     int c = num;
38     int s[5];
39     for(int i = 1; i < d + 1; i++ ) {
40         
41         int z = 0;
42         z = (int) (c) / pow(10 , (d - i));
43         c = c - z*pow(10 , (d - i));
44         s[i - 1] = z;
45         // printf("s[%d]:%d  ",i-1, s[i - 1]);
46         // printf("10^d-i+1:%d\n", (int) pow(10, (d - i)));
47         //printf("c:%d\n", c);
48         printf("%d", z);
49         if(i < d) {
50             printf(" ");
51         }else {
52             printf("\n");
53         }  
54     }
55     
56     // printf("OK");
57     int b;
58     int sum = 0;
59     for(int i = 0; i < d; i++ ) {
60         // printf("s[%d]:%d  ", d - i - 1, s[d - i - 1]);
61         sum += s [d - i - 1]*pow(10, (d - i - 1));      
62         // printf("10^d-i+1:%d\n", s [d - i] * pow(10, (d - i-1)));
63         // printf("c:%d\n", sum); 
64     }
65     printf("%d", sum);
66     
67     
68     c = max(1, 6); 
69     //printf("%d", c); 
70     return 0; 
71 
72 }

 

 

优质解答:1009: [编程入门]数字的处理与判断 (C语言)字符数组与常规思路

 

将输入的数字当作字符串来储存,用strlen(  ) 函数得到字符串长度,即为数字位数

将字符串从左到右遍历输出(带空格)

最后还有一个回车不要忘了

再将字符串从右往左遍历输出(不带空格)就好了

 

注意事项:

题目说数字位数不超过5,所以定义字符数组长度应不小于6

因为字符串结尾还有结尾符 '\0' 占一位

 1 #include <stdio.h>
 2 #include <string.h>         //C语言字符串头文件,strlen() 函数包含在此内
 3    
 4 int main()
 5 {
 6     char str[10];                       //定义字符串长度为 10
 7     scanf("%s", str);                   //输入数字 (作为字符串输入)
 8        
 9     int len = strlen(str);              //获取字符串长度
10     printf("%d\n", len);                //输出字符串长度,即为数字位数
11     for (int i = 0; i < len; i++)       //从左往右遍历输出
12     {
13         printf("%c ", str[i]);
14     }
15     printf("\n");                       //输出回车
16     for (int i = len - 1; i >= 0; i--)  //从右往左遍历输出
17     {
18         printf("%c", str[i]);
19     }
20     return 0;
21 }

 

posted @ 2021-09-29 13:31  def_Class  阅读(34)  评论(0编辑  收藏  举报