为什么我的程序没有显示正确的结果?

时间:2012-01-27 05:11:55

标签: c

我写了以下代码 的

给定一个整数,编写一个显示数字的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使用数组和所有...但是这个错了?

4 个答案:

答案 0 :(得分:2)

我假设通过&#34;某些价值观&#34;如果出现问题,您可以引用其中包含零的值,例如50345之类的输入,它将打印出来:

50345
345
345
45
5

而不是:

50345
0345
345
45
5

问题是数值的整数表示不会将前导零确认为唯一的整数值。

如果必须打印值(包括前导零),则必须将您的数字视为标记或字符串,这意味着具有前导零的值是来自版本的唯一字符串值,而不是前导零零。这就是为什么数组版本,它将数字值视为一个字符串,工作,并且当你提供这种类型的输入案例时,你的当前版本不会。

答案 1 :(得分:0)

您看到的四舍五入可能是因为int用作所有变量的数据类型。因此(5/10)之类的内容将四舍五入为0而不是0.5。

答案 2 :(得分: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);
}
}

答案 3 :(得分: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"):
}
}