1 #include<stdio.h> 2 #include<math.h> 3 int flws(int); 4 void main() 5 { 6 int n,j,k=0; 7 printf("請輸入一個正整數:\n"); 8 scanf("%d",&n); 9 j=n; 10 while(j!=0) //取位 11 { 12 j/=10; 13 k++; 14 } 15 if(k<=5) 16 flws(n,k); 17 else 18 printf("這個數的位數大於5位。\n"); 19 } 20 int flws(int n,int k) 21 { 22 int b,fl,i=1; 23 while(k!=0) 24 { 25 b=pow(10,k-1); //利用pow函數取n-1位的位權 26 fl=n/b; 27 n%=b; 28 printf("這個數的第%d位為%d\n",i,fl); 29 k--,i++; 30 } 31 return 0; 32 }
1 //5、輸入一個不超過5位的正整數,編程實現:求出它是幾位數,分別輸出每位數字。 2 #include<stdio.h> 3 #include<math.h> 4 void main() 5 { 6 int n,i,j,k,b,f; 7 k=0; 8 scanf("%d",&n); 9 j=n; 10 while(j!=0) //先取位數給k 11 { 12 k++; 13 j/=10; 14 } 15 f=pow(10,k-1); //取最高位位權 16 printf("這個數有%d位\n",k); 17 if(k>5||n<=0) printf("該數不是小於5位的正整數\n"); 18 else for(i=1;i<=k;i++) //從高到低取位 19 { 20 b=n/f; //取每一次最高位 21 n=n%f; //去掉最高位 22 f/=10; //改變位權 23 printf("這個數的第%d位為%d\n",i,b); 24 } 25 26 }
還有一個很笨比的方法:
1 /*5、輸入一個不超過5位的正整數, 2 編程實現:求出它是幾位數, 3 分別輸出每位數字。*/ 4 #include<stdio.h> 5 void main() 6 { 7 int n,j,i,k,count,f; 8 k=0; 9 scanf("%d",&n); 10 j=n; 11 while(j!=0) //先取位數給k 12 { 13 k++; 14 j/=10; 15 } 16 printf("這個數有%d位\n",k); 17 if(k>5||n<=0) printf("該數不是小於5位的正整數\n"); 18 else for(i=1;i<=k;i++) //從高到低取位 19 { 20 f=n; 21 for(count=i;count<=k;count++) 22 { 23 j=f%10; 24 f/=10; 25 26 } 27 printf("這個數的第%d為%d\n",i,j); 28 } 29 30 }