2012-01-27 2 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

* Код работает, но делает некоторые округление и прочее пт некоторых выходных значений. * Что это значит ** на английском языке **? – cnicutar

+0

Каков пример ситуации, когда он не работает? –

+0

Дайте вход, ожидаемый выход, фактический выход. –

ответ

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"): 
} 
} 
Смежные вопросы