|  | 
 
 发表于 2016-6-10 18:57:54
|
显示全部楼层 
| 本帖最后由 人造人 于 2016-6-10 19:00 编辑 
 我还是不了解题目,以下代码实现了部分功能
 
 我简单解释一下
 在main函数中一直循环输入,数据存放在 char buff[BUFF_COUNT][BUFF_MAX];
 当输入是Q时,执行计算,完成后复位 buff_count,进行下一次计算
 
 calc 函数中把结果打印出来
 用atof 函数把字符串转换成 double
 strncmp 比较字符串前面的字母
 
 
 复制代码#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFF_MAX 10
#define BUFF_COUNT 20
void calc(void);
char buff[BUFF_COUNT][BUFF_MAX];
int buff_count = 0;
int main(void)
{
        while(1) 
        {
                if(buff_count >= BUFF_MAX) exit(1); // 超出缓冲区,退出
                printf("请输入:");
                fgets(buff[buff_count++], BUFF_MAX, stdin);
                if(strncmp(buff[buff_count - 1], "Q", 1) == 0)
                {
                        calc();
                        buff_count = 0; // 复位
                }
        }
        return 0;
}
void calc(void)
{
        int i;
        double value;
        for(i = 0; i < buff_count; i++) 
        {
                if(strncmp(buff[i], "X", 1) == 0)
                {
                        char *p = buff[i];
                        printf("%lf\n", atof(++p)); // ++p 后,指向字母后面的值
                }
                else if(strncmp(buff[i], "Z", 1) == 0)
                {
                        char *p = buff[i];
                        printf("%lf\n", atof(++p));
                }
                else if(strncmp(buff[i], "U", 1) == 0)
                {
                }
                else if(strncmp(buff[i], "W", 1) == 0)
                {
                }
                else if(strncmp(buff[i], "Q", 1) == 0) // 这里是最后输入的 Q
                {
                }
                else
                {
                        printf("error\n");
                }
        }
}
 $ ./a.out
 请输入:Q
 请输入:X123.12
 请输入:Z45.35
 请输入:X45.01
 请输入:X
 请输入:45
 请输入:Z
 请输入:Q
 123.120000
 45.350000
 45.010000
 0.000000
 error
 0.000000
 请输入:45
 请输入:Z78
 请输入:X45.3
 请输入:bcd
 请输入:Q
 error
 78.000000
 45.300000
 error
 请输入:
 
 | 
 评分
| 参与人数 1 | 荣誉 +1 | 鱼币 +5 | 贡献 +1 | 收起
理由 |  
|  晚起鸟儿 | + 1 | + 5 | + 1 | 虽然不是我想要的,谢谢您的帮助 |  
查看全部评分
 |