结构体里成绩数组定义应这么改:
int score[3];
这样才能放下3个数
&(p->score[0]),&(p->score[1]),&(p->score[2])
scanf_s最后的2去掉,字符串的才需长度,你这个整数不需要,注意取地址符号
可以使用循环结构和指针来修改数组中的多个元素的值。具体实现步骤如下:
定义一个数组和一个指向该数组的指针;
使用scanf_s()函数循环读入多个输入值,以指针的方式逐个赋值给数组元素;
输出数组元素的值,检查更改是否成功。
示例代码如下:
#include <stdio.h>
#define N 3 // 定义数组元素个数
int main()
{
int a[N];
int *p = a; // 定义指针指向数组首元素
for (int i = 0; i < N; i++) {
printf("请输入第 %d 个元素的值:", i+1);
scanf_s("%d", p+i); // 逐个赋值给数组元素
}
printf("数组元素的值为:");
for (int i = 0; i < N; i++) {
printf("%d ", *(p+i)); // 逐个输出数组元素的值
}
printf("\n");
return 0;
}
如果出现只修改第一个元素的情况,很可能是由于scanf_s()函数格式字符串的输入参数不匹配导致的报错。这时可以按照参考资料中所述的方法,逐一检查输入格式字符串和输入参数是否对应,修改为正确的格式,从而实现对所有元素的修改。
值得一提的是,对于数组中的每个元素进行操作,指针运算是非常方便和高效的方法。例如,可以使用*(p+i)
的方式逐个输出和修改数组元素的值,其中指针加i的操作就相当于把指针从数组首元素p移动i个位置,即指向第i+1个元素。在这个过程中,由于指针指向的是数组首元素,所以指针加i之后就相当于指向了数组中的每个元素,因此可以方便地对每个元素进行操作。