2012-01-27 154 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"): 
} 
} 
相关问题