liyifeng295641 发表于 2023-12-30 20:02:30

FishC 发表于 2023-12-30 20:00
你的代码存在一些问题,我来简单解释并修正一下:

1. 在函数result的定义中,你指定了返回类型为flo ...

test.c:24:24: warning: data argument not used by format string [-Wformat-extra-args]
      printf("答案是:",result(ch,num1,num2));

FishC 发表于 2023-12-30 20:02:41

liyifeng295641 发表于 2023-12-30 20:02
test.c:24:24: warning: data argument not used by f ...

你在第24行的printf函数中,没有提供任何格式化字符串的占位符来接收result函数的返回值。要修复这个警告并正确输出结果,你需要在printf函数的格式化字符串中加上一个占位符:%f,以接收result函数的返回值。修改后的代码如下所示:

#include <stdio.h>

float result(char ch, float num1, float num2) {
    switch (ch) {
      case '+':
            return num1 + num2;
      case '-':
            return num1 - num2;
      case 'x':
            return num1 * num2;
      case '/':
            return num1 / num2;
      default:
            printf("无效的运算符\n");
            return 0.0; // 添加默认返回值
    }
}

int main() {
    float num1, num2;
    char ch;
   
    printf("请输入你要计算的两个数和运算符:");
    scanf("%f %c %f", &num1, &ch, &num2);
   
    printf("答案是:%f\n", result(ch, num1, num2)); // 添加格式化字符串占位符

    return 0;
}

这样修改后,程序可以正确地输出计算结果,并且不再有编译器警告。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: 1 [2]
查看完整版本: C语言while语句和do...while语句03