我写了以下代码 的此
给定一个整数,编写一个显示数字的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使用数组和所有...但是这个错了?
答案 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"):
}
}