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 }
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/WG11/p/15352459.html,作者:def_Class