学生的记录由学号,得分组成,根据班级人数,将学生记录存放在结构体数组中。假设m位学生玩游戏,游戏规则如下:学生按学号顺序(升序)从2开始依次报数,报到质数得2分,其余数字得1分,求n轮后各学生的得分。要求:m,n,学号均由键盘输入。
就是做个循环啊,判断序号是否素数,人数循环,计算各人的分数
/*
学生的记录由学号,得分组成,根据班级人数,将学生记录存放在结构体数组中。
假设m位学生玩游戏,游戏规则如下:学生按学号顺序(升序)从2开始依次报数,报到质数得2分,
其余数字得1分,求n轮后各学生的得分。要求:m, n, 学号均由键盘输入。
*/
typedef struct _student
{
int nID;
int score;
}student;
bool isShusu(int n)
{
for (int i = 2; i < n; i++)
{
if (n%i == 0)
return false;
}
return true;
}
void main()
{
student stu[100];
int m, n,i;
printf("请输入班级人数:");
scanf_s("%d", &m);
printf("\n");
printf("请逐个输入学生学号:");
for (i = 0; i < m; i++)
{
scanf_s("%d", &stu[i].nID);
stu[i].score = 0;
}
printf("\n");
printf("请输入游戏轮数:");
scanf_s("%d", &n);
printf("\n");
for (i = 0; i < n; i++)
{
if (isShusu(i+2))
stu[i % m].score += 2;
else
stu[i % m].score++;
}
for (i = 0; i < m; i++)
{
printf("学号%d的学生得分:%d\n", stu[i].nID, stu[i].score);
}
}
#include<stdio.h>
#define M 10
typedef struct
{
char num[10];
double s;
}SCORE;
double fun(SCORE*C,SCORE*l,int*n)
{
double aver=0.0;
int i,j=0;
for(i=0;i<M;i++)
aver+=C[i].s;
aver/=M;
for(i=0;i<M;i++)
if(C[i].s<=aver)
{
*(l+j)=C[i];
j++;
}
*n=j;
return aver;
}
main()
{
SCORE stu[M]={{"03",76},{"02",69},
{"04",85},{"01",91},{"07",72},
{"08",64},{"06",87},{"09",60},
{"11",79},{"12",73}};
SCORE low[M],t;
FILE*out;
int i,j,n;
double ave;
ave=fun(stu,low,&n);
printf("The %d student data which is lower than %7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s %4.1f\n",low[i].num,low[i].s);
printf("\n");
out=fopen("outfile.dat","w");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(low[i].s<low[j].s)
{
t=low[i];
low[i]=low[j];
low[j]=t;
}
for(i=0;i<n;i++)
fprintf(out,"%4.1f\n",low[i].s);
fclose(out);
}
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632