(C语言)输入一个正整数字符串并将字符串转化为相应的数字。

#include <stdio.h>
long cton(void)
{ char c;
long s=0;
c=getchar();
while(c>='0'&&c<='9')
{s=s*10+c-'0';}
return (s);
}
void main()
{ printf("input a line of numeric character:");
printf("%ld\n",cton());
}
老师给的答案,怎么不行呢?

这种态度来学习写代码是不行的!
程序的逻辑自己有没有看过啊?
明显有问题啊
什么老师给的答案,老师给的答案就怎么啦?
老师给的,错了就是错了,先要自己去找问题所在,找不到问题再来问问提
不要动不动就来问,到最后自己还是不会写代码
再者,即使这段代码是对的,也不是一个好的代码,因为很难重用
long cton(const char* str)
{
//这里进行转换操作
return 结果;
}

void main()
{
char str[30]
scanf("%s",str);//输入字符串
long result = cton(str);//调用函数
printf("%ld\n",result);//显示结果
}

说了这些,估计你也不高兴,我也没想拿你的分数,但是希望对你有所触动追问

其实这段代码一大半是我自己敲的,谢谢你的忠告。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-04
正确的结果应该是这样的:

#include <stdio.h>
long cton(void)
{ char c;
long s=0;
c=getchar();
while(c>='0'&&c<='9')
{
s=s*10+c-'0';
fflush(stdin); //这里必须清除一下键盘缓冲区的数据,否则循环无法继续下去!
c = getchar(); //用c继续接收输入的字符,直到输入字符不是0-9的数字则结束!
}
return (s);
}
void main()
{ printf("input a line of numeric character:");
printf("%ld\n",cton());
}
第2个回答  2011-12-04
#include <stdio.h>
long cton(void)
{ char c;
long s=0;
c=getchar();
while(c>='0'&&c<='9')
{s=s*10+c-'0';c=getchar();}//这里少了一句c=getchar();
return (s);
}
void main()
{ printf("input a line of numeric character:");
printf("%ld\n",cton());
getch();
}本回答被提问者采纳
第3个回答  2011-12-04
你老师的程序只能将一个正整数字符转化为相应的数字,而不是字符串了,char c; c=getchar();
实际接收一个字符了,如果输入字符串,你参考stdlib中的字符串转换函数:atoi(将字符串转换成整型数);atol(将字符串转换成长整型数)等等很多直接转换的函数了。
第4个回答  推荐于2018-03-12
input a line of numeric character:321

#include <stdio.h>
long cton(void)
{ char c;
long s=0;
c=getchar();
while(c>='0'&&c<='9')
{
s=s*10+c-'0';
c=getchar(); /*少一条语句,所以陷入死循环了*/
}
return (s);
}
void main()
{ printf("input a line of numeric character:");
printf("%ld\n",cton());
}
现在你可以试试,只要最后一个输入字符不是数字就可以退出并显示数字了本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网