#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
struct student
{
char name[80];
char number[10];
float score[5];
};
float SCORE(student x)
{
float sco = 0.2 * x ->score[0] + 0.05 * x->score[1] + 0.05x->score[2] + 0.2 x->score[3] + 0.5 * x ->score[4];
return(sco);
}
int main()
{
printf("请输入学生总数");
int n,i;
float sco[999]={0};
scanf_s("%d", &n);
student p = (student*)malloc(n * sizeof(student));
student* y = (student*)malloc(n * sizeof(student));
y = p;
printf("请按次序输入各学生姓名,学号,课后作业得分,大作业得分,随堂测试得分,期中考试得分,期末考试得分");
for (i = 0; i < n; i++)
scanf_s("%s%s%f%f%f%f%f",(p + i)->name, (p + i)->number, (p + i)->score[0], (p + i)->score[1], (p + i)->score[2], (p + i)->score[3], (p + i)->score[4]);
p = y;
for (i = 0; i < n; i++)
sco[i] = SCORE(p+i);
}
这个为什么会在那一串scanf_s中报错说格式不对呀,求大佬解答
改为
scanf_s("%s%s%f%f%f%f%f",(p + i)->name, 80, (p + i)->number, 10, &(p + i)->score[0], &(p + i)->score[1], &(p + i)->score[2], &(p + i)->score[3], &(p + i)->score[4]);
scanf_s函数在字符数组后面要加字符串长度。scanf_s函数为了确保字符串安全,要求参数指定字符串的最大长度,避免溢出
改成
scanf_s("%s%s%f%f%f%f%f",(p + i)->name, 80 , (p + i)->number, 10 , (p + i)->score[0], (p + i)->score[1], (p + i)->score[2], (p + i)->score[3], (p + i)->score[4]);
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
float SCORE(student x)
{
float sco = 0.2 * x ->score[0] + 0.05 * x->score[1] + 0.05x->score[2] + 0.2 x->score[3] + 0.5 * x ->score[4];
return(sco);
}
应改为
float SCORE(struct student * x )
{
float sco = 0.2 * x ->score[0] + 0.05 * x->score[1] + 0.05x->score[2] + 0.2 x->score[3] + 0.5 * x ->score[4];
return(sco);
}
student p = (student*)malloc(n * sizeof(student));
student* y = (student*)malloc(n * sizeof(student));
y = p;
改为
struct student * p = (struct student*)malloc(n * sizeof(struct student));
struct关键字,c++可以去掉,c不应该省略,也许有些c编译器支持省略,没有用过。