2012-01-27 16 views
0

私は次のように番号を表示するCプログラムを書いて、整数を考えると この私のプログラムが正しい結果を表示していないのはなぜですか?

次のコードを書いた:

  • 最初の行:全桁
  • セカンドライン:すべてを最初の桁を除く桁
  • 3行目:最初の2桁を除くすべて
  • 最後の行:最後の桁
  • 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++; 
        } 
    } 
    

    (私たちは書式設定を無視した場合)のコードは動作しますが、いくつかは、丸めん:例えばのために

、 番号5678として表示されますいくつかの出力値は何かを知っていますか? solutionsは配列とすべてを使用していますが、これは間違っていますか?

+1

*コードは動作しますが、いくつかの出力値frのいくつかの丸めやものを行います。*それはどういう意味**英語で**? – cnicutar

+0

動作しない状況の例を教えてください。 –

+0

入力、期待出力、実際の出力を指定します。 –

答えて

2

私が問題に「いくつかの値」で仮定している、あなたが印刷されており、このよう50345などの入力として、それらにゼロを持っている値を参照している:

50345 
345 
345 
45 
5 

いうより:

50345 
0345 
345 
45 
5 

数値の整数表現は、先行ゼロを一意の整数値として認識しないという問題があります。

先行ゼロを含む値を印刷する必要がある場合は、トークンまたは文字列のように番号を処理する必要があります。先行ゼロがある値は、先行ゼロなしのバージョンの一意の文字列値です。これは、文字列のような数値を扱う配列バージョンが機能し、このタイプの入力の場合に現在のバージョンが表示されない理由です。

0

すべての変数のデータ型としてintを使用しているため、四捨五入されている可能性があります。したがって、(5/10)のようなものは0.5ではなく0に丸められます。

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"): 
} 
} 
関連する問題