2012-01-27 134 views
0

我寫了下面的代碼 這個爲什麼我的程序沒有顯示正確的結果?

給定一個整數,寫一個顯示號碼如下C程序:

  • 第一行:所有數字
  • 下聯:所有除第一位數字外的數字
  • 第三行:除前兩位數字外全部
  • 末行:最後一位數字

對於例如 數5678將被顯示爲:

5 6 7 8 
6 7 8 
7 8 
8 

=>

#include<stdio.h> 

#include<math.h> 
main() 
{ 
    long int x,y,n,z,i=1; 
    printf("enter no. of digits="); 
    scanf("%d",&n); 
    printf("x="); 
    scanf("%d",&x); 
    while(i<=n) 
    { 
     y=x/pow(10,i); 
     z=y*pow(10,i); 
     printf("%d\n",(x-z)); 
     i++; 
    } 
} 

代碼工作(如果我們忽略的格式),但是做了一些舍入和東西fr一些輸出值...不知道爲什麼? 有solutions使用數組和所有...但這個錯誤?

+1

*代碼工作但它的一些圓角和東西FR一些輸出值。*這是什麼意思**在英語**? – cnicutar 2012-01-27 05:15:53

+0

什麼是不起作用的情況的例子? – 2012-01-27 05:20:32

+0

給出輸入,預期輸出,實際輸出。 – 2012-01-27 05:21:52

回答

2

我被「一些價值」有問題的假設,你指的是具有零在他們的價值觀,比如像50345輸入,這將打印:

50345 
345 
345 
45 
5 

而不是:

50345 
0345 
345 
45 
5 

問題是數值的整數表示不承認前導零作爲唯一的整數值。

如果您必須打印值(包括前導零),則必須像處理令牌或字符串那樣對待數字,這意味着具有前導零的值是來自不帶前導零的版本的唯一字符串值。這就是爲什麼當使用這種類型的輸入大小寫時,處理數字值(如字符串),數組值和當前版本的數組版本。

0

您看到的舍入可能是因爲所有變量都使用了int作爲數據類型。因此,像(5/10)這樣的東西將舍入到0而不是0.5。

0
#include<stdio.h> 
#include<math.h> 

main() 
{ 
int num, count=0, x,no; 
printf("Enter a number\n"); 
scanf("%d",&num); 
no=num; 


printf("The number you entered is:\n %d\n",num); 
while(num){ 
    num=num/10; 
    count++; 
} 

for(;count>1;count--){ 
x=pow(10,count-1); 
printf("%d\n",no%x); 
} 
} 
0
#include <stdio.h> 
#include<conio.h> 
void main() 
{ 
    int number,i=0; 
    int digits[8]; 
    scanf("%d"&number); 
while(number!=0) 
{ 
digits[i]=numder%10; 
number=number/10; 
i++ 
} 
for(i=i-1;i>=0;i--){ 
for(j=i;j>=0;j--){ 
printf("%d ",digits[j]); 
} 
printf("\n"): 
} 
} 
相關問題