【发布时间】:2022-01-14 16:00:07
【问题描述】:
我需要对结构中的数组 int kviz[10] 求和。该数组有 10 个整数元素,结构是它自己的数组[120]。我需要让用户选择他想要求和的元素数量(例如:int kviz[10] 中的第一个、第二个和第五个整数),并且需要对整个 strucnt [120] 进行求和。它需要使用可变参数函数来完成。该函数需要返回整个结构的数组总和,因为我需要稍后根据结果对结构进行排序。
结构:
typedef struct studenti
{
char index[10];
char ime[20];
char prezime[20];
int kviz[10];
} studenti[120];
我的尝试:
int sumaK(studenti student,*redniBrojKviza, int *brojKviza,...)
{
int suma;
va_list argumenti;
argumenti = redniBrojKviza;
for(int i=0; ;i++)
{
argumenti = student.kviz[i];
}
va_start (argumenti, brojKviza);
for(int x = 0; x < brojKviza; x++ )
{
suma += va_arg (argumenti, brojKviza);
}
va_end (argumenti);
return suma;
}
主函数 - 这是我需要让用户输入值的地方:
printf("Unesite broj kvizova: %d", brojKvizova);
scanf("%d", &brojKvizova);
for(int s=0;s<brojKvizova;s++)
{
printf("Unesite redni broj kviza: ");
scanf("%d", &redniBrojKviza);
}
sumaK(brojKvizova,redniBrojKviza);
【问题讨论】:
-
你不能。你需要使用一个数组。
-
为什么将
brojKviza声明为指针?如果它是一个指针,你需要取消引用它:x < *brojKviza。 -
对函数的调用需要至少有 3 个参数。可变参数在这些之后。
标签: c function input struct variadic