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)