2012-01-27 5 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++; 
    } 
} 

코드가 작동 (우리는 형식을 무시하는 경우)하지만 일부 반올림을한다 of 및 stuff fr 출력 값 ... 이유를 모르겠습니까 ?? solutions 배열과 모두를 사용하고 있습니다 ...하지만이 하나에 문제가 있습니까 ??

+1

* 코드 작동하지만 일부 출력 값 FR 일부 반올림과 물건을 않습니다. *? – cnicutar

+0

작동하지 않는 상황의 예는 무엇입니까? –

+0

입력, 예상 출력, 실제 출력을 제공하십시오. –

답변

2
내가 문제가있는 "일부 값"으로 믿고있어

, 당신은 50345 같은 입력으로 그들 제로가 값을 참조하고, 인쇄 할 것이다 :

50345 
345 
345 
45 
5 

보다는 :

50345 
0345 
345 
45 
5 

숫자 값의 정수 표현은 선행 0을 고유 한 정수 값으로 인식하지 못합니다.

앞에 오는 0을 포함하여 값을 인쇄해야하는 경우 토큰 또는 문자열과 같이 숫자를 처리해야합니다. 즉, 앞에 오는 0이있는 값은 0이없는 버전의 고유 한 문자열 값입니다. . 이것이 문자열 같은 숫자 값을 처리하는 배열 버전이 작동하고이 유형의 입력 사례가 제시 될 때 현재 버전이 작동하지 않는 이유입니다.

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"): 
} 
} 
관련 문제