为什么我的程序没有显示正确的结果?
问题描述:
我写了下面的代码 这个为什么我的程序没有显示正确的结果?
给定一个整数,写一个显示号码如下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使用数组和所有...但这个错误?
答
我被“一些价值”有问题的假设,你指的是具有零在他们的价值观,比如像50345
输入,这将打印:
50345
345
345
45
5
而不是:
50345
0345
345
45
5
问题是数值的整数表示不承认前导零作为唯一的整数值。
如果您必须打印值(包括前导零),则必须像处理令牌或字符串那样对待数字,这意味着具有前导零的值是来自不带前导零的版本的唯一字符串值。这就是为什么当使用这种类型的输入大小写时,处理数字值(如字符串),数组值和当前版本的数组版本。
答
您看到的舍入可能是因为所有变量都使用了int
作为数据类型。因此,像(5/10)
这样的东西将舍入到0而不是0.5。
答
#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);
}
}
答
#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"):
}
}
*代码工作但它的一些圆角和东西FR一些输出值。*这是什么意思**在英语**? – cnicutar 2012-01-27 05:15:53
什么是不起作用的情况的例子? – 2012-01-27 05:20:32
给出输入,预期输出,实际输出。 – 2012-01-27 05:21:52