1

这是我的问题:我必须阅读 +x 或 *x 两种短语中的一种,然后我必须使用我刚刚阅读的那个操作。就像,假设我计算了一些平均数,然后我读了+3,所以现在的平均值将是+3,与我设法完成加号部分的*函数相同,这是我的真正丑陋(但工作)它的代码:

char c=0;
char tempchar=0;
char sign=0;
printf("enter a character\n");
while (c!= '\n' && c!=EOF)
{
    tempchar=c;
    c = getchar();
    if (c=='+' || c=='*')
        sign = c;
    if (c=='\n' || c==EOF)
    {
        c=tempchar;
        break;
    }
}
if (sign == '+')
    avg = avg + (c-'0');

所以,+一有效。但是对于 * 选项,我只得到我输入的最后一个字符(例如,如果我输入 *1.2,我会得到 * 和 2)所以......我怎样才能让它得到 * 和整数?

谢谢!

4

1 回答 1

1

由于您想支持浮点数,请制作avga float,使用 获取输入字符串fgets,然后使用 解析它sscanf

#import <stdio.h>
#define MAXBUFFER 64

//... 

float value;
char input[MAXBUFFER];

fgets(input, sizeof(input), stdin);

if (sscanf(input, "+ %f", &value) == 1) avg += value;
if (sscanf(input, "* %f", &value) == 1) avg *= value;

//...
于 2013-05-09T00:41:25.610 回答