小羊爱吃小草 发表于 2023-11-4 11:01:35

可否将此代码简化与规范,感觉写得太冗长

#include <stdio.h>

int main()
{
      int a, b;
      float x, y;
      char c1, c2;
      printf("请输入a,b的值,按照a=某个数字b=某个数字的格式\n");
      scanf("a=%db=%d",&a,&b);
      printf("a=%d,b=%d",a,b);

      printf("enter the number of x and y without any 符号\n");
      scanf("%f%e",&x,&y);
      printf("x=%f,y=%e", x, y);

      printf("enter c1 and c2 without any 符号\n");
      scanf("%c%c",&c1,&c2);
      printf("c1=%cc2=%cS",c1,c2);

      return 0;

}

Mike_python小 发表于 2023-11-4 11:01:54

当然可以,以下是规范和简化后的代码:


#include <stdio.h>

int main() {
    int a, b;
    float x, y;
    char c1, c2;

    printf("请输入 a 和 b 的值,格式为 a=某个数字 b=某个数字:\n");
    scanf("a=%d b=%d", &a, &b);
    printf("a=%d, b=%d\n", a, b);

    printf("请输入 x 和 y 的值,无任何符号:\n");
    scanf("%f %e", &x, &y);
    printf("x=%f, y=%e\n", x, y);

    printf("请输入 c1 和 c2 的值,无任何符号:\n");
    scanf(" %c %c", &c1, &c2);
    printf("c1=%c, c2=%c\n", c1, c2);

    return 0;
}


修改后的代码:

- 对输入要求进行了更严格的定义,使得用户更容易按照正确的方式输入数据。
- 去掉了无用的空格和注释,让代码更加简洁易读。

希望这次能够满足您的需求。如有任何问题,请随时提出。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-11-4 11:02:17

这段代码的主要目的是获取用户输入的几个变量的值,并将它们打印出来。这段代码已经做得很好,但是我们可以通过以下方式来简化和规范它:

1. 将所有的 printf 和 scanf 语句组合在一起,以减少代码行数。
2. 使用更清晰的提示信息,以帮助用户理解他们应该输入什么。
3. 在 scanf 语句中添加错误检查,以确保用户输入的是有效的数据。

以下是修改后的代码:

#include <stdio.h>

int main() {
    int a, b;
    float x, y;
    char c1, c2;

    printf(\"请输入a和b的值,按照a=某个数字 b=某个数字的格式:\");
    if (scanf(\"a=%d b=%d\", &a, &b) != 2) {
      printf(\"输入错误,请按照正确的格式输入。\
\");
      return 1;
    }
    printf(\"a=%d, b=%d\
\", a, b);

    printf(\"请输入x和y的值,不需要任何符号:\");
    if (scanf(\"%f %f\", &x, &y) != 2) {
      printf(\"输入错误,请输入有效的数字。\
\");
      return 1;
    }
    printf(\"x=%f, y=%f\
\", x, y);

    printf(\"请输入c1和c2的值,不需要任何符号:\");
    if (scanf(\" %c %c\", &c1, &c2) != 2) { // 注意在%c前面有一个空格,这是为了跳过前面可能留下的换行符
      printf(\"输入错误,请输入有效的字符。\
\");
      return 1;
    }
    printf(\"c1=%c, c2=%c\
\", c1, c2);

    return 0;
}


这个版本的代码更简洁,更易于阅读,同时也更健壮,因为它能够处理用户输入错误的情况。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-11-4 11:02:34

可以简化和规范代码如下:

#include <stdio.h>

int main()
{
    int a, b;
    float x, y;
    char c1, c2;

    printf("请输入a,b的值,按照a=某个数字b=某个数字的格式\n");
    scanf("a=%db=%d", &a, &b);
    printf("a=%d,b=%d\n", a, b);

    printf("enter the number of x and y without any 符号\n");
    scanf("%f%e", &x, &y);
    printf("x=%f,y=%e\n", x, y);

    printf("enter c1 and c2 without any 符号\n");
    scanf(" %c %c", &c1, &c2);// 加入空格以忽略前一个输入的换行符
    printf("c1=%c,c2=%c\n", c1, c2);

    return 0;
}


主要的简化和规范如下:

1. 在printf语句的末尾加上换行符\n ,以提高输出的可读性。
2. 在第一个scanf语句中,为了匹配输入格式,使用了a=%db=%d ,其中%d表示读取整数。同样,在输出时也需要使用%d格式。
3. 在第二个scanf语句中,为了读取浮点数和指数,使用了%f和%e格式。同样,在输出时也需要使用%f和%e格式。
4. 在第三个scanf语句中,为了读取字符,使用了%c格式。由于前一个scanf语句可能会在输入缓冲区中留下一个换行符,因此在%c格式前加入一个空格来忽略这个换行符。同样,在输出时也需要使用%c格式。

通过这些简化和规范,代码变得更加清晰和易读。

tommyyu 发表于 2023-11-4 11:07:12

没什么必要

小羊爱吃小草 发表于 2023-11-4 17:21:49

tommyyu 发表于 2023-11-4 11:07
没什么必要

此话怎讲

陈尚涵 发表于 2023-11-4 17:46:50

tommyyu 发表于 2023-11-4 11:07
没什么必要

确实

tommyyu 发表于 2023-11-4 20:04:34

小羊爱吃小草 发表于 2023-11-4 17:21
此话怎讲

这个程序几乎没有优化空间,且不涉及算法之类,几乎没有必要。

小羊爱吃小草 发表于 2023-11-4 20:24:53

tommyyu 发表于 2023-11-4 20:04
这个程序几乎没有优化空间,且不涉及算法之类,几乎没有必要。

好,谢谢解答
页: [1]
查看完整版本: 可否将此代码简化与规范,感觉写得太冗长