关于C语言的一段简单的程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:55:05
/*输出一个大于10的数字的除第一位。1234---234*/

#include<stdio.h>
main()
{int n,m=10;
double a;
printf("请输入一个大于10的整数");
scanf("%d",&n);
do
{a=n%m;m=m*10;}
while(a!=0);
m=m/10;
printf("%d",n%m);
}

调试没有错误,运行的话就会:“应用程序发生异常”。

请问这是为什么?

正确代码如下:

首先a不能用浮点数,其次n%m永远不会为0的,应该用n/m

#include<stdio.h>
main()
{int n,m=10;
long a;
printf("请输入一个大于10的整数");
scanf("%d",&n);
do
{
a=n/m;
m=m*10;}
while(a>=10);
m/=10;
printf("%d",n%m);
}

因为你输入的不是10的整倍数的话 他将是一个死循环
do
{a=n%m;m=m*10;}
while(a!=0);

楼主疏忽了,do{} while循环终止条件是while表达式成立,也就是应该把语句while(a!=0);改为while(a==0); 欢迎交流。