航電OJ C語言-實驗6

1. (20分)

6.2 寫一個判斷素數的函數,在主函數中輸出1~100間的素數信息
輸入描述

輸出描述
輸出1~100之間所有的素數,中間用空格隔開

輸入樣例

輸出樣例
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

用戶代碼

#include<stdio.h>
int main()
{
	int i,j,k;
	for(i=1;i<=100;i++)
	{
		k=0;
		for(j=1;j<=i;j++)
		{
			if(i%j==0)
				k++;
		}
		if(k==2)
			printf("%d ",i);
	}
	return 0;
}

最後保存時間: 2019-11-27 10:56:26

本題得分:20分(1/1)
查看最新評判結果

2. (20分)

6.3 設a,b,c爲三個大於零的正整數,計算並輸出下列不定方程組解的個數Number以及滿足此條件的所有a,b,c之和sum。
題目描述
設a,b,c爲三個大於零的正整數,計算並輸出下列不定方程組解的個數Number以及滿足此條件的所有a,b,c之和sum。
不定方程組爲:(1) a+b+c=13 (2)a-c=5,且(a,b,c>0)
請編寫函數countValue()實現程序要求並在主函數中輸出結果。

輸入描述

輸出描述
在子函數countValue()中依次輸出滿足條件的a,b,c,並求Number和sum,在主函數裏輸出Number和sum

輸入樣例

輸出樣例
a=6,b=6,c=1
a=7,b=4,c=2
a=8,b=2,c=3
sum=39,Number=3

用戶代碼

#include<stdio.h>
int main()
{
	int a,b,c,sum=0,number=0;
	for(c=1;c<=3;c++)
	{
		b=8-2*c;
		a=c+5;
		printf("a=%d,b=%d,c=%d\n",a,b,c);
		sum+=a+b+c;
		number++;
	}
	printf("sum=%d,Number=%d",sum,number);
	return 0;
}

最後保存時間: 2019-11-27 11:09:16

本題得分:20分(1/1)
查看最新評判結果

3. (20分)

6.4用遞歸調用法求Fibonacci數列前30個數。
題目描述
遞推公式如下:F1=1(n=1),F2=1(n=2),Fn=Fn-1+Fn-2(n>2)

輸入描述

輸出描述
每一個數以%15ld的格式輸出,每5個數換一行

輸出樣例
//忽略第一行的註釋
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
10946 17711 28657 46368 75025
121393 196418 317811 514229 832040

用戶代碼

#include<stdio.h>
int main()
{
	long n,j=0,k=1,t;
	for(n=1;n<=30;n++)
	{
		if(n%5!=0)
		    printf("%15ld",k);
		else
			printf("%15ld\n",k);
		t=k;
		k+=j;
		j=t;
	}
	return 0;
}

最後保存時間: 2019-11-27 11:22:28

本題得分:20分(1/1)
查看最新評判結果

4. (40分)

參加我校大學生英語演講比賽決賽階段的選手有n位,決賽中共有m位評委,假設所有選手的成績存放在一個二維數組中,根據評分規則計算每位選手的平均分,並按成績逆序打印。(評分的規則是:去掉一個最高分,去掉一個最低分,然後對剩下評委的評分求和平均即爲該選手得分)請編程實現(輸出形式表6.1)(假設n=5, m=5)。本程序要求必須編寫如下2個函數:
題目描述
參加我校大學生英語演講比賽決賽階段的選手有n位,決賽中共有m位評委,假設所有選手的成績存放在一個二維數組中,根據評分規則計算每位選手的平均分,並按成績逆序打印。(評分的規則是:去掉一個最高分,去掉一個最低分,然後對剩下評委的評分求和平均即爲該選手得分)請編程實現(輸出形式表6.1)(假設n=5, m=5)。本程序要求必須編寫如下2個函數:a) 求平均分的函數;
b) 排序函數。(排序時注意分數和姓名的對應關係,姓名可以使用拼音)
表6.1 英語演講比賽成績表
Name Ref1 Ref2 Ref3 Ref4 Ref5 Average 排名
ChenJun 9.3 8.5 9.2 9.2 9.5 9.23 1
ZhanRen 9.0 8.9 8.6 9.2 7.8 8.83 2
HuKai 8.6 8.4 8.8 9.5 8.0 8.63 3
XieQian 9.1 8.3 8.5 8.1 9.0 8.60 4
DuMu 7.8 8.2 9.7 8.0 9.4 8.53 5
【提示】選手姓名用二維字符數組,成績用二維數組存儲。排名可採用兩種方法:(1)另用一個數組存儲選手的名次,根據名次輸出成績。(2)實現數據排序,注意按均分排序時,姓名要對應(即姓名也要對應交換)。

輸入描述
依次輸入5位選手的姓名和成績,空格隔開

輸出描述
按照平均成績從高到低排名並輸出各個選手的姓名成績平均成績以及排名
輸出格式:%10s%8.1f%8.1f%8.1f%8.1f%8.1f%8.2f%8d\n

輸入樣例
ChenJun 9.3 8.5 9.2 9.2 9.5
ZhanRen 9.0 8.9 8.6 9.2 7.8
HuKai 8.6 8.5 8.8 9.5 8.0
XieQian 9.1 8.3 8.5 8.1 9.0
DuMu 7.8 8.2 9.7 8.0 9.4

輸出樣例
//忽略該行註釋
ChenJun 9.3 8.5 9.2 9.2 9.5 9.23 1
ZhanRen 9.0 8.9 8.6 9.2 7.8 8.83 2
HuKai 8.6 8.5 8.8 9.5 8.0 8.63 3
XieQian 9.1 8.3 8.5 8.1 9.0 8.60 4
DuMu 7.8 8.2 9.7 8.0 9.4 8.53 5

用戶代碼

#include<stdio.h>
#include<string.h>
int main()
{
	int i,j,max,min;
	double score[5][6]={0},s=0;
	char name[5][40]={""};
	void aver(double score[][6]);
	void rank(char name[][40],double score[][6]);
	for(i=0;i<5;i++)
	{
		scanf("%s",name[i]);
		for(j=0;j<5;j++)
		{
			scanf("%lf",&score[i][j]);
		}
		
	}
		aver(score);
		rank(name,score);
		for(i=0;i<5;i++)
		{
			printf("%10s",name[i]);
			for(j=0;j<6;j++)
		  {
			if(j!=5)
			    printf("%8.1f",score[i][j]);
			else
				printf("%8.2f%8d\n",score[i][j],i+1);
		  }
		}
			return 0;
}
void aver(double score[][6])
{
	int i,j,max,min;
	double s;
	for(i=0;i<5;i++)
	{
		s=0;
		max=0;
		min=0;
		for(j=1;j<5;j++)
		{
			if(score[i][j]>score[i][max])
				max=j;
			if(score[i][j]<score[i][min])
				min=j;
		}
		for(j=0;j<5;j++)
		{
			if(j!=max&&j!=min)
			s+=score[i][j];
		}
		score[i][5]=s/3;
	}
}
void rank(char name[][40],double score[][6])
{
	int i,j,k,pos;
	double temp;
	char t[40];
	for(i=0;i<5;i++)
	{
		pos=i;
		for(k=i+1;k<5;k++)
		{
			if(score[pos][5]<score[k][5])
				pos=k;
		}
		if(pos!=i)
		{
			for(j=0;j<6;j++)
			{
				temp=score[i][j];
		        score[i][j]=score[pos][j];
		        score[pos][j]=temp;
			}
			strcpy(t,name[i]);
			strcpy(name[i],name[pos]);
			strcpy(name[pos],t);
		}
	}
}

最後保存時間: 2019-11-27 18:10:52

本題得分:40分(2/2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章