70,026
社区成员




学校的结构体相关作业,给结构体内元素赋值时,vs在终端内打完第一行敲回车直接结束,调试运行显示
0x00007FF94ECF2079 (ucrtbased.dll)处(位于 test.exe 中)引发的异常: 0xC0000005: 写入位置 0x0000009734F00000 时发生访问冲突。
输入的图
但是在dev-cpp中可以正常运行完程序,完成十次赋值。应该是哪里代码写错了,devcpp检查不够严格,麻烦各位大佬劳烦给小白指出错误.
感谢
代码附在下方,问题出现在最开始的scanf那里,麻烦各位大佬看看
#include <stdio.h>
typedef struct student
{
char num[10];
char name[20];
int grades[3];
}stud;
int main(void)
{
int a = 0;
int i;
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
stud stu[10];
printf("学号\t姓名\t三门课的成绩\t\n");
for (a = 0; a < 10; a++)
{
scanf_s("%s%s", stu[a].num, stu[a].name);
for (i = 0; i < 3; i++)
{
scanf_s("%d", &stu[a].grades[i]);
}
printf("学号\t姓名\t三门课的成绩\t\n");
}
for (i = 0; i < 10; i++)
{
sum1 += stu[i].grades[0];
sum2 += stu[i].grades[1];
sum3 += stu[i].grades[2];
}
printf("三门课的平均成绩分别为%d %d %d", sum1 / 10, sum2 / 10, sum3 / 10);
int max, pos;//求最高工资员工
int com[10];
for (i = 0; i < 10; i++)
{
com[i] = stu[i].grades[0] + stu[i].grades[1] + stu[i].grades[2];
}
for (a = 0; a < 10; a++)
{
max = com[0];
if (com[a] > max)
{
max = com[a];
pos = a;
}
}
for (a = 0; a < 10; a++)
{
if (stu[a].grades == stu[pos].grades)
{
if (a != pos)
{
printf("最高工资的员工是%s\n", stu[a].name);
}
}
}
int sum4 = 0;
for (i = 0; i < 3; i++)
{
sum4 += stu[pos].grades[i];
}
printf("最高分的学生是%s数据如下\n", stu[pos].name);
printf("学号%s\n", stu[pos].num);
printf("姓名%s\n", stu[pos].name);
printf("三门课成绩分别为\n");
for (i = 0; i < 3; i++)
{
printf("%d", stu[pos].grades[i]);
}
printf("三门课平均成绩分别为%d", sum4 / 3);
return 0;
}
使用vc 2022时在头文件前加
#define _CRT_SECURE_NO_WARNINGS,就不用scanf_s了
scanf_s("%s%s", stu[a].num, 10, stu[a].name, 20);