c语言编程问题 谢谢了

来源:百度知道 编辑:UC知道 时间:2024/07/06 00:26:22
#include<stdio.h>
void main()
{
int i=0,k;
long int num;
int a[5];
printf("输入一个不多于五位的正数\n");
scanf("%ld",num);
printf("输入的数从低位道高位依次是:");
while(num>0)
{ a[i]=num%10;
num=num/10;
printf("%d ",
a[i]);
i++;
}
printf("\n输入的数是%d位数",i);
printf("\n输入的数逆序排列是:");
k=i;
for(i=0;i<k;i++)printf("%d",a[i]);
}

运行结果是 显示 不能written 咋办

scanf中需要一个指针地址,你这里直接给了num
你看看,你定义的是long int型的。

一个指针就占4字节,这里远远超过4字节,
也就是说在scanf里面,他要往num里写,此时你用的不是&num,而是num,所以他找不到这个非常大的值(也就是地址)指向的内容。

所以了,报出不能write.

具体你调试下就知道。

自己多动手。

scanf("%ld",num);
这里错了
scanf("%ld",&num);

头文件加上#include<iostream.h>试试