c语言,求大佬帮帮忙,谢谢。

学生的记录由学号,得分组成,根据班级人数,将学生记录存放在结构体数组中。假设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