1. (15分) 实验5.2 利用筛法求指定范围之内的素数
题目描述
使用筛法求指定范围[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
用户代码
#include<stdio.h>
int main()
{
int i,j,k,m=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
k=0;
for(j=1;j<=i;j++)
{
if(i%j==0)
k++;
}
if(k==2)
{
m++;
if(m%10!=0)
printf("%d ",i);
else
printf("%d\n",i);
}
}
return 0;
}
最后保存时间: 2019-11-19 20:19:10
本题得分:15分(3/3)
查看最新评判结果
2. (15分) 实验5.3 样品抽样检查
题目描述
有1000台产品(编号从1~1000),要从中抽出15台进行抽样检测。请设计一个抽样模拟程序,输出抽样结果,输出时要求每行输出五个数据。
【提示】产生15个1~1000间的随机数,请查阅srand()和rand()函数。
抽样的结果需要保存到数组中,且样品编号不能重复。
输入描述
无输入
输出描述
输出抽样的15个数,每行5个,以%-6d方式输出。
输入样例
无
输出样例
本题由于为随机产生的数,因此没有设置测试用例,所以无需在意分数,只要得到类似上面样例输出的3行5列的1~1000之间的15个数即可
用户代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i,k;
srand((unsigned)time(NULL));
for(i=1;i<=15;i++)
{
k=rand()%1000;
if(i%5==0)
printf("%-6d\n",k);
else
printf("%-6d",k);
}
return 0;
}
最后保存时间: 2019-11-21 16:27:35
本题得分:0分(0/0)
查看最新评判结果
3. (30分) 实验5.5
从键盘输入一个班(全班最多不超过30人)学生某课的成绩,当输入成绩为负值或超出规定人数时,输入结束,分别实现下列功能: (1)输出各分数段的学生人数及所占的百分比,并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生名单;
题目描述
【提示】(1)用score[i]存放第i+1个学生的成绩。将成绩分为6个分数段,60分以下为第0段,6069分为第1段,7079分为第2段,8089分为第3段,9099分为第4段,100分为第5段,因此成绩与分数段的对应关系为分数段或为0(当成绩<60时)或者为(成绩-50)/10(当成绩>=60时)
各分数段的学生人数保存在数组stu中,用stu[i]存放第i段的学生人数。对于每个学生的成绩,先计算该成绩所对应的分数段,然后将相应分数段的人数加1,即stu[i]++。输出各个阶段的学生人数及比例,当score[i]<0时,打印i+1(即学生序号)和score[i]。
(2)先计算全班平均分aver,当第i个学生的成绩score[i]>= aver时,打印i+1(即学生序号)和score[i]。
输入描述
依次输入各个学生的分数,当输入负数或超过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
输出样例
不及格名单为
student1,10.00
student2,20.00
student3,30.00
student4,40.00
student5,50.00
student16,54.30
student18,12.40
student19,56.00
高于平均分名单为
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
高于平均分的人数为12
<60人数=8,所占有比例为38.10
60-69人数=3,所占有比例为14.29
70-79人数=4,所占有比例为19.05
80-89人数=1,所占有比例为4.76
90-99人数=3,所占有比例为14.29
100人数=2,所占有比例为9.52
用户代码
#include<stdio.h>
int main()
{
int i,j=0,k,n=0;
double score[29],stu[6]={0},s=0,aver;
for(i=0;;i++)
{
scanf("%lf",&score[i]);
if(score[i]>=0)
j++;
else
{
j--;
break;
}
}
for(i=0;i<=j;i++)
{
k=(int)score[i]/10;
switch(k)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:stu[0]++;continue;
case 6:stu[1]++;continue;
case 7:stu[2]++;continue;
case 8:stu[3]++;continue;
case 9:stu[4]++;continue;
case 10:stu[5]++;continue;
}
}
for(i=0;i<=j;i++)
s=s+score[i];
aver=s/(j+1);
printf("不及格名单为\n");
for(i=0;i<=j;i++)
{
if(score[i]<60)
printf("student%d,%.2f\n",i+1,score[i]);
}
printf("高于平均分名单为\n");
for(i=0;i<=j;i++)
{
if(score[i]>aver)
{
printf("student%d,%.2f\n",i+1,score[i]);
n++;
}
}
printf("高于平均分的人数为%d\n",n);
printf("<60人数=%.0f,所占有比例为%.2f\n",stu[0],100*stu[0]/(j+1));
printf("60-69人数=%.0f,所占有比例为%.2f\n",stu[1],100*stu[1]/(j+1));
printf("70-79人数=%.0f,所占有比例为%.2f\n",stu[2],100*stu[2]/(j+1));
printf("80-89人数=%.0f,所占有比例为%.2f\n",stu[3],100*stu[3]/(j+1));
printf("90-99人数=%.0f,所占有比例为%.2f\n",stu[4],100*stu[4]/(j+1));
printf("100人数=%.0f,所占有比例为%.2f\n",stu[5],100*stu[5]/(j+1));
return 0;
}
最后保存时间: 2019-11-20 21:48:56
本题得分:30分(2/2)
查看最新评判结果
4. (20分) 实验5.6 查找一个字符串在另一个字符串中首次出现的位置,要求字符串从键盘输入。
题目描述
【提示】数组str1存放母串,str2存放子串,子串与母串中的字符逐个比较,相同则比较下一个字符;不同,则子串重新从第一个字符、母串从下一个字符开始比较。
当子串遍历完,即到串尾,则意味着在母串找到了子串;否则,则未找到子串。
输入描述
分别输入母串和子串(注意:长度不能超过100)
输出描述
若查找成功输出“母串中发现子串”,否则输出“母串中未发现子串”
输入样例
are you ok?
ok?
输出样例
母串中发现子串
用户代码
#include<stdio.h>
int main()
{
char str[100],substr[100];
int local=-1,flag=0,i=0,k=0;
gets(str);
gets(substr);
while(str[i]!='\0'&&substr[k]!='\0'&&flag==0)
{
if(str[i]==substr[k])
k++;
else
k=0;
i++;
if(substr[k]=='\0')
flag=1;
}
if(flag==1)
printf("母串中发现子串");
else
printf("母串中未发现子串");
return 0;
}
最后保存时间: 2019-11-20 23:47:58
本题得分:20分(3/3)
查看最新评判结果
5. (20分) 实验5.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个元素的数组,存放各行、各列及对角线的元素之和。
输入描述
无输入(矩阵中的元素直接由二维数组初始化获得)
输出描述
输出该魔方矩阵(元素以%-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
用户代码
#include<stdio.h>
int main()
{
int square[5][5]={{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}},sum[12]={0},i,j,k,flag;
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++)
sum[i]=sum[i]+square[i][j];
}
for(j=0;j<=4;j++)
{
for(i=0;i<=4;i++)
sum[j+5]=sum[j+5]+square[i][j];
}
for(i=0,j=0;i<=4;i++,j++)
sum[10]=sum[10]+square[i][j];
for(i=4,j=4;i>=0;i--,j--)
sum[11]=sum[11]+square[i][j];
for(k=0;k<=10;k++)
{
if(sum[k]==sum[k+1])
{
k++;flag=1;
}
else
flag=0;
}
if(flag==1)
printf("这个矩阵是魔方矩阵\n");
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++)
{
if(j<4)
printf("%-6d",square[i][j]);
else
printf("%-6d\n",square[i][j]);
}
}
return 0;
}
最后保存时间: 2019-11-21 00:24:25
本题得分:20分(1/1)