【发布时间】:2020-08-30 08:11:53
【问题描述】:
我正在尝试用 C 语言编写程序。捕获每个专辑的名称、年龄、专辑编号、名称和歌曲。我没问题,但它只打印最后一张专辑名称。假设我输入了 3 个专辑,“a”、“b”和“c”。它只会打印 c 3 次。它应该是a,b和c。谢谢。
#include <stdio.h>
int main() {
//variables
int edadCantante;
int x,numeroCanciones[x];
char nombreCantante;
char nombreDiscos[30][x];
printf("Introduzca el nombre del artista: ");
scanf(" %[^\n]",nombreCantante);
printf("Introduzca edad del artista: ");
scanf("%d", &edadCantante);
printf("Introduzca número de discos: ");
scanf("%d\n",&x );
// taking input and storing it in an array
for(int i = 0; i < x; ++i) {
scanf("%[^\n]%*c", nombreDiscos[i]);
}
printf("Desplegando albumes:\n ");
// printing elements of an array
for(int i = 0; i < x; ++i) {
printf("%s\n", nombreDiscos[i]);
}
printf("Número de canciones por album respectivamente:\n ");
for(int i = 0; i < x; ++i) {
scanf("%d", &numeroCanciones[i]);
}
printf("Desplegando número de canciones:\n ");
// printing elements of an array
for(int i = 0; i < x; ++i) {
printf("Número de canciones en album %d = %d\n",i+1,numeroCanciones[i]);
}
return 0;
}
【问题讨论】:
-
int x,numeroCanciones[x]; char nombreDiscos[30][x];这是不正确的,会导致未定义的行为,因为在声明数组时未设置x。 -
//变量 int edadCantante; char nombreCantante[30]; printf("Introduzca el nombre del Artista:"); scanf(" %[^\n]",nobreCantante); printf("Introduzca edad del Artista:"); scanf("%d", &edadCantante);诠释 x; printf("Introduzca número de discos:"); scanf("%d\n",&x ); int numeroCanciones[x];字符 nombreDiscos[30][x];我像这样修改它,现在它打印出类似:abc,bc,c。它按该顺序打印索引,而不是 a、b、c。
-
@Tejon 请edit 代替问题。
标签: c