怎样用c语言写一个程序解决下面的问题:输入一串字符,统计其中的正负数并求平均值,我的代码有问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 02:45:20
我的代码是在下面,如果输入oei&^%%#¥+987-9-45+7-7*的话是正确的,但是在数字中间加入符号或者是字母就会出错。如输入jkhkl+986-9-5+98b&+87-8*就会出错,请高手们帮忙看看 谢谢
我的代码如下:
#include"stdio.h"
void main()
{
int k=0,pc=0,nc=0,x,f=0;
float pa=0.0,na=0.0;
char ch;
printf("输入:\n");
printf("------------------------------\n");
ch=getchar();
while(ch!='*')
{
if(ch=='+')
{
while(1)
{
ch=getchar();
x=ch-48;
if(x>=0&&x<=9) k=k*10+x;
else break;
}
pc++;
pa+=k;
printf("第%d个正数为:%d\n",pc,k);
k=0;
f=1;
}
if(ch=='-')
{
while(1)
{
ch=getchar();
x=ch-48;
if(x>=0&&x<=9)
{
k=k*10+x;
}
else break;
}
nc++;
na+=-k;
printf("第%d个负数为:%d\n",nc,0-k);
k=

兄弟,你的变量f在 while(ch!='*')开始时,忘记设置为0了
所以当你的程序遇到数字后f始终为1,而下次遇到非数字字符时,就不会执行
if(f==0) ch=getchar();这条语句了。
然后就是死循环了吧?