c语言pta按等级统计学生成绩,第九周作业
6-1 按等級統計學生成績 (20 分)
本題要求實現一個根據學生成績設置其等級,并統計不及格人數的簡單函數。
函數接口定義:
int set_grade( struct student *p, int n );
其中p是指向學生信息的結構體數組的指針,該結構體的定義為:
struct student{
int num;
char name[20];
int score;
char grade;
};
n是數組元素個數。學號num、姓名name和成績score均是已經存儲好的。set_grade函數需要根據學生的成績score設置其等級grade。等級設置:85-100為A,70-84為B,60-69為C,0-59為D。同時,set_grade還需要返回不及格的人數。
裁判測試程序樣例:
#include
#define MAXN 10
struct student{
int num;
char name[20];
int score;
char grade;
};
int set_grade( struct student *p, int n );
int main()
{ struct student stu[MAXN], *ptr;
int n, i, count;
ptr = stu;
scanf("%d\n", &n);
for(i = 0; i < n; i++){
scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
}
count = set_grade(ptr, n);
printf("The count for failed (<60): %d\n", count);
printf("The grades:\n");
for(i = 0; i < n; i++)
printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78
輸出樣例:
The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob B
作者: 張泳
單位: 浙江大學
時間限制: 400 ms
內存限制: 64 MB
代碼長度限制: 16 KB
(1)實驗代碼
int set_grade(struct student *p, int n)
{
int flag = 0;
for (int i = 0; i < n; i++)
{
if (p[i].score >= 85)
p[i].grade = 'A';
else if(p[i].score >= 70)
p[i].grade = 'B';
else if (p[i].score >= 60)
p[i].grade = 'C';
else
{
p[i].grade = 'D';
flag++;
}
}
return flag;
}
(2)設計思路
(3)問題及解決辦法
沒有什么問題
(4)運行結果截圖
7-1 一幫一 (15 分)
“一幫一學習小組”是中小學中常見的學習組織方式,老師把學習成績靠前的學生跟學習成績靠后的學生排在一組。本題就請你編寫程序幫助老師自動完成這個分配工作,即在得到全班學生的排名后,在當前尚未分組的學生中,將名次最靠前的學生與名次最靠后的異性學生分為一組。
輸入格式:
輸入第一行給出正偶數N(≤50),即全班學生的人數。此后N行,按照名次從高到低的順序給出每個學生的性別(0代表女生,1代表男生)和姓名(不超過8個英文字母的非空字符串),其間以1個空格分隔。這里保證本班男女比例是1:1,并且沒有并列名次。
輸出格式:
每行輸出一組兩個學生的姓名,其間以1個空格分隔。名次高的學生在前,名次低的學生在后。小組的輸出順序按照前面學生的名次從高到低排列。
輸入樣例:
8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda
輸出樣例:
Amy Jack
Tom Linda
Bill Maya
Cindy John
(1)實驗代碼
#include
int main(void)
{
struct student
{
int sex;//性別
char name[10];//名字
}s[50];
int n,i,j,k;
scanf("%d",&n);
for(i=0;i
{
scanf("%d ",&s[i].sex);
scanf("%s",&s[i].name);
}
for(i=0;i
{
for(j=n-1;j>0;j--) //從結尾開始找
{
if(s[i].sex!=s[j].sex&&s[j].sex!=3) //判斷這個學生是否為異性并判斷是否已經排好座位
{
printf("%s %s\n",s[i].name,s[j].name);
s[j].sex=3; //標記已經排好座位的學生
break;
}
}
}
}
(2)設計思路
(3)問題及解決辦法
這題開始就是不知道怎么去判斷,后面看了一下別人的,就知道了,另外沒什么問題
(4)運行結果截圖
7-2 考試座位號 (15 分)
每個 PAT 考生在參加考試時都會被分配兩個座位號,一個是試機座位,一個是考試座位。正常情況下,考生在入場時先得到試機座位號碼,入座進入試機狀態后,系統會顯示該考生的考試座位號碼,考試時考生需要換到考試座位就座。但有些考生遲到了,試機已經結束,他們只能拿著領到的試機座位號碼求助于你,從后臺查出他們的考試座位號碼。
輸入格式:
輸入第一行給出一個正整數 N(≤1000),隨后 N 行,每行給出一個考生的信息:準考證號 試機座位號 考試座位號。其中準考證號由 16 位數字組成,座位從 1 到 N 編號。輸入保證每個人的準考證號都不同,并且任何時候都不會把兩個人分配到同一個座位上。
考生信息之后,給出一個正整數 M(≤N),隨后一行中給出 M 個待查詢的試機座位號碼,以空格分隔。
輸出格式:
對應每個需要查詢的試機座位號碼,在一行中輸出對應考生的準考證號和考試座位號碼,中間用 1 個空格分隔。
輸入樣例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
輸出樣例:
3310120150912002 2
3310120150912119 1
(1)實驗代碼
#include
struct student
{
char t[100];
int num1;
int num2;
};
int main(void)
{
int n,m,i,j;
scanf("%d",&n);
struct student stu[1000];
int a[1000];
for(i=0;i
{
scanf("%s %d %d",&stu[i].t,&stu[i].num1,&stu[i].num2);
}
scanf("%d",&m);
for(j=0;j
{
scanf("%d",&a[j]);
}
for(j=0;j
for(i=0;i
{
if(a[j]==stu[i].num1)
printf("%s %d\n",stu[i].t,stu[i].num2);
}
return 0;
}
(2)設計思路
(3)問題及解決辦法
寫完后,PTA老師答案錯誤,發現輸出結果中不是空格隔開,而是一個方框,后面問了室友他說是數組長度不夠,后面把char t[]變大就可以了
(4)運行結果截圖
預習作業:
什么是遞歸函數,它的優點和缺點有哪些,如何歸納出遞歸式?
答:遞歸就是一個函數在它的函數體內調用它自身。執行遞歸函數將反復調用其自身,每調用一次就進入新的一層。遞歸函數必須有結束條件。
當函數在一直遞推,直到遇到墻后返回,這個墻就是結束條件。
所以遞歸要有兩個要素,結束條件與遞推關系
注:遞歸的時候,每次調用一個函數,計算機都會為這個函數分配新的空間,這就是說,當被調函數返回的時候,調用函數中的變量依然會保持原先的值,否則也不可能實現反向輸出。
優點:代碼簡潔、清晰,易懂
==循環能干的事,遞歸都能干;遞歸能干的循環不一定能干==
學習進度條:
學習感悟:這周學習了結構,總體上感覺還可以,題目也是能理解的,但就是對于指針這一塊有太多的不理解,但又不知道問題在哪里,總之繼續加油吧。
結對編程感悟:這周交流比較少,但有些理解性的知識,小伙伴還是幫助了我,讓我對結構的知識點更加熟悉。
標簽:struct,試機,int,作業,grade,student,座位,第九
來源: https://www.cnblogs.com/cc82/p/10773640.html
總結
以上是生活随笔為你收集整理的c语言pta按等级统计学生成绩,第九周作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这么画c语言编程流程图,我想问一下这两个
- 下一篇: c语言跑马灯实验报告,单片机跑马灯实验