UCE-group / fortnightly-plan

北京化工大学 BUCT-UCE 社团: 编程学习 - 周计划WP,双周计划FP,月计划MP
35 stars 12 forks source link

【FP】2019年秋季-第12周-朱立忠 #311

Open Zhulizhong957 opened 4 years ago

Zhulizhong957 commented 4 years ago

标签(空格分隔): c语言程序


题目

给一个不超过5位的整数。

要求: 1.找出它是多少位数。 2.分别输出每一位数字。 3.按反序输出每一位数字。 例如,原来的号码是321,应该输出123。

源代码

#include<stdio.h>
#include<math.h>
int main()
{
int N,n,s,a[5],i,S;
scanf("%d",&N);
s=N;
for(n=1;s/10>=1;n++)
s=s/10;
for(i=0;i<n;i++)
{a[i]=N/pow(10,n-1-i);
a[i]=a[i]%10;S+=a[i]*pow(10,i);}
 printf("%d\n",n);
 for(i=0;i<n;i++)
 {if(i!=n-1) printf("%d ",a[i]);
 else printf("%d\n",a[i]);}
printf("%d",S);

}

有更好解法的欢迎交流

2858199552 commented 4 years ago

include

include

int main() { int num, i, digit = 0; scanf("%d", &num); int copy_num = num; while(num){ num /= 10; digit++; } printf("digit : %d\n", digit); for(int i = digit; i >= 1; i--){ /if(i != 0){ printf(" "); }/ printf("%d", copy_num / (int)pow(10, i - 1) % 10); }//当初想到这个算法的时候,感觉亭有意思的。___/^ printf("\n"); //反序同理 for(int i = 1; i <= digit; i++){ /if(i != 0){ printf(" "); }/ printf("%d", copy_num / (int)pow(10, i - 1) % 10); } printf("\n"); return 0; }

2858199552 commented 4 years ago

很显然下面这种更简单

include

include

int main() { char num[6]; scanf("%s", num); int 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]); } printf("\n"); return 0; }