|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
https://www.dotcpp.com/oj/problem1009.html
大佬你好,请问为什么我这个程序会答案错误?
请问如何修改?
你觉得这道题目怎么写,才能更加优化?
- #include<stdio.h>
- int main()
- {
- int num,a,c= 0;
- int i = 1;
- int b[6] ;
-
- scanf("%d",&num);
- a = num;
-
- while(a >= 10)
- {
- a = a / 10;
- i++;
- }
-
- if(i<=5){
- printf("%d\n",i);
- a = num;
- do
- {
- b[c] = a % 10 ;
- a = a / 10;
- c++;
- }while(a >= 10);
-
- b[c] = a;
-
- while(c>=0){
- printf("%d",b[c]);
- printf(" ");
- c--;
- }
- printf("\b\n");
-
- c = 0;
- while(c<=i-1){
- printf("%d",b[c]);
- c++;
- }
- }
- else{
- ;
- }
- return 0;
- }
复制代码
本帖最后由 柿子饼同学 于 2023-3-27 20:43 编辑
可以用字符串
你的代码问题在于 依次打印数字时 , 没有考虑到数字是一位数的情况 , 你使用 do-while 语句 , 所以如果是一位数 c 也会自己加一次 , 变成 1
这时 输出的第二行 就会打印两个数字了
改进可以把 do-while 改成 while
用字符串更容易实现翻转 , 长度计算什么的 , 可以用 string.h 的 strlen 函数求字符串长度 , 这里直接把这个数字当作字符串去处理 , 比较方便
- #include <stdio.h>
- #include <string.h>
- char num[8];
- int len;
- int main(){
- scanf("%s", num);
- len = strlen(num);
- printf("%d\n", len); // 长度
-
- for(int i = 0; i < len; i++){
- printf("%c ", num[i]);
- }
- printf("\n");
- for(int i = len - 1; i >= 0; i--){ // 这里注意范围
- printf("%c", num[i]);
- }
- return 0;
- }
复制代码
|
|