c语言的程序求解。

来源:百度知道 编辑:UC知道 时间:2024/05/31 21:41:52
原题: 编程。输入一行数字字符,用回车结束,每个数字前后都有空格,请编一个程序,把这一行数字都转化为整数,例如输入2 3 0 则打印230

下面是我编写的程序,但打印出来的不是我要的结果,请高手帮我修正一下,最好有注释,并指出我那个步骤错了,谢谢
#include<stdio.h>
main()
{char ch;int n;
n=0;
while ((ch=getchar())!='\n')
{if(ch>='0'&&ch<='9')n=n*10+ch-'0';
}
printf("n=%d",n);
}

编译了,没有问题:
#include<stdio.h> //此行不需要
main()
{
char ch;int n; //定义字符ch和整形变量n,n为所求值。
n=0; //给n赋初值0
while ((ch=getchar())!='\n') //每次循环输入一个字符,直到输入回车
{
if(ch>='0'&&ch<='9')n=n*10+ch-'0'; //当该字符为数字字符是,进行累加
}
printf("n=%d",n); 打印所求出的值
}

测试没问题..结果正确

程序中有if条件,所以跟artep 说的没关系.
若只输入一个a,或者输入中没有数字字符,则不会运行while循环直接打印n的值,n==0;否则结果便正确~

程序没问题~

getchar() 会把得到的变量,转换成ASCII。 你输个a内存就会认为是97

应该是对的。不过最好把
if(ch>='0'&&ch<='9')换成
if((ch>='0')&&(ch<='9'))。

用switch判定他的acsii码