[英]struct and values entered in C
我的程序无法正常工作。 例如,问题是:
您为学生输入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 * 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);
}
scanf("%d",&(*marks).x);
意味着你正在阅读到的第一mark
的marks
。
您已经有一个for循环和一个用于读取它的计数器变量,因此请使用它。 更改
sum= sum+(*marks).x;
至
sum= sum+marks[i].x;
这也等同于
sum = sum+(*marks+i).x;
为...做同样的事情
scanf("%d",&(*marks).x);
更改为
scanf("%d",&marks[i].x);
再次,
marks[i].x
等效于(*marks+i).x
问题的关键是,你要访问的第二个mark
中marks
在你的for循环的第二次迭代。 同样,程序完成后,请不要忘记free()
您的marks
。
变化:
scanf("%d",&marks[i].x);
和:
sum= sum+marks[i].x;
在这段代码的main
内部:
for (int i = 0; i < n; i++ ){
printf("Enter mark: ");
scanf("%d",&(*marks).x);
}
您总是将标记分配给第一个数组元素。
这段代码的内在fun
:
for (i = 0; i < n; i++ ){
sum= sum+(*marks).x;
}
您没有遍历标记数组,而是始终读取第一个数组的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.