我是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;
}标识符是西班牙语的,因为我必须用西班牙语来做。只是简单地解释一下名字:
我不知道是否还有人能帮我?如果你需要更多的解释,请告诉我!我做错了什么吗?图案印刷有什么问题吗?我真的很感谢你的帮助。
发布于 2016-11-13 23:21:18
@R.Eduard非常感谢您指出了我的代码中的缺陷,我终于开始工作了:
#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,numerodecolumnas;
do {
printf("1: Triangulo\n");
printf("2: Piramide\n");
printf("\nSalir\n");
scanf("%d", &eleccion);
switch (eleccion) {
case 1:
numerodecolumnas=numerodefilas;
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;
}在重新启动循环之前,我必须做的更改是重置数字标记值。我只是简单地删除int numerodecolumnas=numerodefilas,并在for循环之前添加它。
再次谢谢你!
发布于 2016-11-13 22:00:44
如果我错了,请纠正我。
您的问题可能是由于没有将列重置为默认值这一事实造成的?
使用numerodecolumnas--;对列进行减法,这是第一次工作,但是第二次,值已经是1或0,因此您的循环可能无法工作。
https://stackoverflow.com/questions/40579170
复制相似问题