【发布时间】:2025-11-26 19:40:02
【问题描述】:
我是 C 新手,但必须为学校做一个项目。我想打印一个菜单,用户在其中选择一个模式,然后打印出来。应该是这样的:
但是正如您所看到的,当我第二次选择该模式时,它不会显示该模式。它只显示一个空格。到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int numerodefilas;
printf("Ingrese la cantidad de filas/longitud del objeto:\n");
scanf("%d", &numerodefilas);
int fila, columna, eleccion;
int numerodecolumnas = numerodefilas;
do {
printf("1: Triangulo\n");
printf("2: Piramide\n");
printf("\nSalir\n");
scanf("%d", &eleccion);
switch (eleccion) {
case 1:
for (fila = 1; fila <= numerodefilas; fila++) {
for (columna = 1; columna <= numerodecolumnas; columna++) {
printf("X");
}
printf("\n");
numerodecolumnas--;
}
break;
case 2: /* Second choice */
break;
case 3:
system("cls");
printf("Adios!\n");
break;
default:
printf("No seleccionaste una opción correcta!");
break;
}
} while (eleccion != 3);
system("PAUSE");
return 0;
}
标识符是西班牙语,因为我必须用西班牙语。只是关于名称的快速解释:
- numerodefilas = numberoflines
- numerodecolumnas = 列数
- fila = 线
- columna = 列
- 选举 = 选择
- "Ingrese la cantidad de filas/longitud del objeto" = 输入对象的行数/经度"
- 三角 = 三角形
- Piramide = Pyramide
- Adio = 再见
我不知道是否还有人可以帮助我?如果您需要更多解释,请告诉我!难道我做错了什么?图案印刷有问题吗?我真的很感激任何帮助。
【问题讨论】:
-
使用调试器跟踪程序的执行。在尝试尽可能多地自己调试之后,在 * 上发帖应该是最后的手段。您没有展示出太多的调试工作。
-
没有理由这样做
numerodecolumnas--; -
程序的输出可能是西班牙语,但强迫程序员使用西班牙语作为标识符是愚蠢的:它降低了全世界其他程序员的可读性。我在法国与法国开发人员一起工作,但坚持标识符要有有意义的英文名称。
-
@chqrlie 我知道这很愚蠢。可悲的是,我的老师希望我这样做。他们的论点是,如果我们复制任何代码,我们至少会在更改标识符方面做一些工作。
-
@TheUnriashol:这是一个糟糕的论点。我希望他们不赞成使用非 ASCII 字母作为标识符,最近版本的 C 标准和一些常见的编译器都支持这一点。虽然
#define π 3.14159265358979323846264338327950288有一些美,但你应该避免int sim = 1, não = 0;
标签: c menu switch-statement