【问题标题】:C For only print last index inputC 仅用于打印最后一个索引输入
【发布时间】: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


【解决方案1】:

您需要移动numeroCancionesnombreDiscos 的声明。像这样:

int x;
scanf("%d\n",&x );
int numeroCanciones[x];

但不要忘记检查scanf的返回值,以防读取失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多