结构和在C中输入的值
我有一个程序不起作用。例如,问题是: 为学生输入2,然后为第一个学生输入5分,然后为第二个学生输入10分结构和在C中输入的值,c,output,C,Output,我有一个程序不起作用。例如,问题是: 为学生输入2,然后为第一个学生输入5分,然后为第二个学生输入10分 fun()函数中的输出和应返回15。但是,它返回20 这是我目前的代码: struct mark{ int x; }; int main(){ int n; printf("Enter the number of student: "); scanf("%d",&n); struct mark *marks= malloc(n * si
fun()
函数中的输出和应返回15。但是,它返回20
这是我目前的代码:
struct mark{
int x;
};
int main(){
int n;
printf("Enter the number of student: ");
scanf("%d",&n);
struct mark *marks= malloc(n * sizeof(struct mark)); ;
for (int i = 0; i < n; i++ ){
printf("Enter mark: ");
scanf("%d",&(*marks).x);
}
fun(marks,n);
free(marks);
return 0;
}
void fun(struct mark *marks, int n){
int sum =0,i;
for (i = 0; i < n; i++ ){
sum= sum+(*marks).x;
}
printf("Sum: %d \n",sum);
}
struct标记{
int x;
};
int main(){
int n;
printf(“输入学生人数:”);
scanf(“%d”和“&n”);
结构标记*marks=malloc(n*sizeof(结构标记));
对于(int i=0;i
更改:
scanf("%d",&marks[i].x);
以及:
在这段代码中的
main
:
for (int i = 0; i < n; i++ ){
printf("Enter mark: ");
scanf("%d",&(*marks).x);
}
for (i = 0; i < n; i++ ){
sum= sum+(*marks).x;
}
您不是在marks数组上迭代,而是始终读取第一个数组值
scanf("%d",&(*marks).x);
表示您正在读取标记
中的第一个标记
您已经有一个for循环和一个计数器变量来读取它,所以请使用它。改变
sum= sum+(*marks).x;
到
这也相当于
sum = sum+(*marks+i).x;
对我来说也是如此
scanf("%d",&(*marks).x);
换成
scanf("%d",&marks[i].x);
再说一遍
标记[i].x
相当于(*marks+i).x
关键是您希望在for循环的第二次迭代中访问
marks
中的第二个mark
。此外,不要忘记<代码>()代码>当程序完成时,你的代码>标记< /C>。如果是C(标题中所述,为什么是C++标签?),我尝试把这个锤打成一个形状。使用标记[i]代替(*Mark)。你总是写和读第一个代码>标记< /代码>。请注意,在的两个周期中,您没有使用索引i
。相反,您应该使用索引在标记
数组中选择正确的标记
。例如scanf(“%d”),&marks[i].x)
scanf("%d",&(*marks).x);
scanf("%d",&marks[i].x);