实验5 数组

1、利用筛法求指定范围之内的素数

【问题描述】:

使用筛法求指定范围[1,n]之间的素数。输出时每行显示10个数据。(每行最后一个数据后不输出空格)

n为正整数,且0<n<=1000.


【输入形式】:一个正整数:n

【输出形式】:一行输出10个数,中间空格隔开,每行最后一个数据后不输出空格

【样例输入】: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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int i,j,n,m=0;
	int a[1000];
	scanf("%d",&n);
	for(i=2;i<=n;i++)
	{
		a[i]=0;
	}
	for(i=2;i<=n;i++)
	{
		for(j=2;j<=(int)sqrt((double)i+1);j++)
		{
			if(i%j==0)
			{
				a[i]=1;
			}
		}
	}
	for(i=2;i<=n;i++)
	{
		if(a[i]==0)
		{
			printf("%d ",i);
			m++;
			if(m%10==0)
			{
				printf("\n");
			}
		}
	}
	printf("\n");
	return 0;
}

2、学生成绩统计与分析

【问题描述】:从键盘输入一个班(全班最多不超过30人)学生某课程的成绩,当输入成绩为负值或超出规定人数时,输入结束,分别实现下列功能: (1)输出各分数段的学生人数及所占的百分比,并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生名单;

【输入形式】:依次输入各个学生的分数,当输入负数或超过30人时结束

【输出形式】:

输出不及格学生名单

输出高于平均分学生名单

输出高于平均分的学生人数

输出各个分数段的学生人数及所占比例

注意:所有实数保留小数点后两位数,即以%.2f格式输出


【样例输入】:

10 20 30 40 50 60 70 80 90 100 100 99 98 76 79.6 54.3 67.9 12.4 56.0 65.9 78.1 -1


【样例输出】:

<60:

student1,10.00

student2,20.00

student3,30.00

student4,40.00

student5,50.00

student16,54.30

student18,12.40

student19,56.00

higher than average:

student7,70.00

student8,80.00

student9,90.00

student10,100.00

student11,100.00

student12,99.00

student13,98.00

student14,76.00

student15,79.60

student17,67.90

student20,65.90

student21,78.10

higher than average:12

[0,60):8,percentage:38.10%

[60,70):3,percentage:14.29%

[70,80):4,percentage:19.05%

[80,90):1,percentage:4.76%

[90,100):3,percentage:14.29%

100:2,percentage:9.52%

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int high[30],low[30];
	int n=0,i,a=0,b=0,c=0,d=0,e=0,f=0,s=0,x=0,y=0;
	double score[30],aver,sum=0;
	while(1)
	{
		scanf("%lf",&score[n]);
		if(score[n]<0||n>30)
		{
			break;
		}
		sum+=score[n];
		n++;
	}
	aver=sum/n;
	for(i=0;i<n;i++)
	{
		if(score[i]>=aver)
		{
			high[s]=i;
			s++;
		}
		if(score[i]<60)
		{
			low[a]=i;
			a++;
		}
		else if(score[i]<70)
		{ 
			b++;
		}
		else if(score[i]<80)
		{ 
			c++;
		}
		else if(score[i]<90)
		{ 
			d++;
		}
		else if(score[i]<100)
		{ 
			e++;
		}
		else
		{
			f++;
		}
	}
	printf("<60:\n");
	for(i=0;i<a;i++)
	{
		x=low[i];
		printf("student%d,%.2f\n",low[i]+1,score[x]);
	}
	printf("higher than average:\n");
	for(i=0;i<s;i++)
	{
		y=high[i];
		printf("student%d,%.2f\n",high[i]+1,score[y]);
	}
	printf("higher than average:%d\n",i);
	printf("[0,60):%d,percentage:%.2f%%\n",a,a*100.0/n);
	printf("[60,70):%d,percentage:%.2f%%\n",b,b*100.0/n);
	printf("[70,80):%d,percentage:%.2f%%\n",c,c*100.0/n);
	printf("[80,90):%d,percentage:%.2f%%\n",d,d*100.0/n);
	printf("[90,100):%d,percentage:%.2f%%\n",e,e*100.0/n);
	printf("100:%d,percentage:%.2f%%\n",f,f*100.0/n);
	return 0;
}

3、判断一个字符串在另一个字符串中是否出现

【问题描述】:数组str1存放母串,str2存放子串,子串与母串中的字符逐个比较,相同则比较下一个字符;不同,则子串重新从第一个字符、母串从下一个字符开始比较。

    当子串遍历完,即到串尾,则意味着在母串找到了子串;否则,则未找到子串。

【输入形式】:分别输入母串和子串(注意:长度不能超过100)

【输出形式】:若查找成功输出“Found!”,否则输出“Not found!”

【样例输入】:

are you ok?

ok?

【样例输出】Found!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[100],str2[100];
	int i=0,j=0;
	fgets(str1,100,stdin);
	fgets(str2,100,stdin);
	while(str1[i]!='\0'&&str2[j]!='\0')
	{
		if(str1[i]==str2[j])
		{
			i++;
			j++;
		}
		else
		{
			i=i-j+1;
			j=0;
		}
	}
	if(str2[j]=='\0')
	{
		printf("Found!\n");
	}
	else
	{
		printf("Not found!\n");
	}
	return 0;
}

4、验证魔方阵

【问题描述】

在下面的5X5魔方矩阵中,每一行、每一列及对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维数组中,然后验证其是否为魔方矩阵,并将其按如下格式显示在屏幕上(见题目描述)

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

[提示] 定义一个含有12个元素的数组,存放各行、各列及对角线的元素之和。


【输入形式】矩阵中各元素的值

【输出形式】

这个矩阵是或者不是魔方矩阵(is or is not)

输出该魔方矩阵(元素以%-6d格式输出)

【样例输入】

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

【样例输出】

The array is a magic square.

17    24    1     8     15

23    5     7     14    16

4     6     13    20    22

10    12    19    21    3

11    18    25    2     9

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int a[5][5];
	int i,j,s1=0,s2=0,s3=0,s4=0;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			s1+=a[i][j];
			s2+=a[j][i];
			s3+=a[i][i];
			if(i+j==4)
			{
				s4+=a[i][j];
			}
		}
		if(s1!=s2)
		{
			printf("The array is not a magic square.\n");
			for(i=0;i<5;i++)
			{
				for(j=0;j<5;j++)
				{
					printf("%-6d",a[i][j]);
				}
				printf("\n");
			}
			return 0;
		}
	}
	if(s1!=s2&&s3!=s4)
	{
		printf("The array is not a magic square.\n");
		for(i=0;i<5;i++)
		{
			for(j=0;j<5;j++)
			{
				printf("%-6d",a[i][j]);
			}
			printf("\n");
		}
	}
	else
	{
		printf("The array is a magic square.\n");
		for(i=0;i<5;i++)
		{
			for(j=0;j<5;j++)
			{
				printf("%-6d",a[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺❀氯ྀൢ躅ྀൢ❀༻꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值