2019年春季學期第九周作業

AQ
這個作業屬于那個課程C語言程序設計II
這個作業要求在哪里2019春第九周作業
我在這個課程的目標是了解并且應用結構體和數組的知識
這個作業在那個具體方面幫助我實現目標掌握了數組的簡單編程及應用,了解了結構體
參考文獻C語言chap3和C語言chap9

一、本周完成的作業

題目1.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 <stdio.h>
#define MAXN 10struct 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

1).實驗代碼

int set_grade( struct student *p, int n )
{
int count=0,i;
for(i=0;i<n;i++)  
{  if((*p).score<60) {  (*p).grade='D';  count++;  }  else if((*p).score>=60&&(*p).score<=69) {(*p).grade='C';  } else if((*p).score>=70&&(*p).score<=84)  {(*p).grade='B'; }else {(*p).grade='A';} p++;
}  
return count; 
}

2) .設計思路

mermaid
flowchat
st=>start: 函數聲明,定義相關變量,聲明結構體
op=>operation: 利用if和else-if來進行成績在不同階層的分級
op1=>operation: 統計不及格人數
e=>end: return count;st->op->op1->e

1585170-20190426160947148-97878068.png

3).本題調試過程碰到問題及解決辦法

1585170-20190426161002344-1202156129.png

問題:老實說這道題對我來說不算很南,難的只有在指針上的部分,還有些許粗心。

解決方法:查閱書籍,調試代碼。

4).運行結果截圖

1585170-20190426161021862-709312407.png

題目2.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<stdio.h>
#include<string.h>struct student {  int sex;char name[10];int flag;  }; 
int main(){ struct student s[100]; int n;int count=0;scanf("%d",&n);for(int i=0;i<n;i++) {scanf("%d %s",&s[i].sex,&s[i].name);s[i].flag=0;} for(int i=0;i<n/2;i++) {for(int k=n-1;k>=n/2;k--){if((s[i].sex!=s[k].sex)&&s[i].flag==0&&s[k].flag==0){s[i].flag =1;s[k].flag =1;count=count+2;printf("%s %s\n",s[i].name ,s[k].name );}}if(count==n)break;}
}

2) 設計思路

mermaid
flowchat
st=>start: 編譯預處理函數,定義結構體
op=>operation: 定義相關變量,申明結構體
io=>inputoutput: 利用一個循環來輸入樣例
op1=>operation: 在利用for的雙重嵌套循環來進行分配任務
cond=>condition: 是異性且還沒有分配?
op3=>operation: 排除未配對統計已配對
cond1=>condition: count==n?
io1=>inputoutput: 輸出配對表
e=>endst->op->io->op1->cond
cond(yes,right)->op3->io1->cond1
cond(no)->op1
cond1(no)->op1
cond1(yes)->e

1585170-20190426161040402-807866595.png

3).本題調試過程碰到問題及解決辦法

1585170-20190426161052523-1202177006.png

問題:提交pta之后老師答案部分正確,我就在想是不是少了什么,從答案的測試點出發進行調試。

解決方法:在最后在多定義一個flag來作為標記是否已分配,提交后答案正確。

4).運行結果截圖

1585170-20190426161114500-137071823.png

題目3.*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<stdio.h>
#include<string.h>
struct student {  char num[20];int x,y;  }; 
int main(){ struct student s[1100]; int n,m;scanf("%d\n",&n);for(int i=0;i<n;i++) {scanf("%s %d %d\n",&s[i].num,&s[i].x,&s[i].y);} scanf("%d\n",&m);int b[m];for(int i=0;i<m;i++) {scanf("%d",&b[i]);} for(int i=0;i<m;i++) {for(int k=0;k<n;k++){if(s[k].x==b[i]) {printf("%s %d\n",s[k].num,s[k].y);}}}
}

2) 設計思路

mermaid
flowchat
st=>start: 聲明結構體,定義相關變量和數組
io=>inputoutput: 輸入n,并且利用循環輸入學號和座位號
io2=>inputoutput: 輸入m,并且利用for循環輸入座位號
op=>operation: 利用for的二重循環來進行在座位號的比較
cond=>condition:  s[k].x==b[i]?
io3=>inputoutput: 輸出學號座位號
e=>end: 結束函數st->io->io2->op->cond
cond(yes)->io3->e
cond(no)->op

1585170-20190426161134597-300054616.png

2) 本題調試過程中碰到問題及解決辦法

1585170-20190426161148739-1035357479.png

問題:pta提交答案錯誤,軟件上運行無法輸出

解決方法:仔細尋找發現原來是數組b[m]的位置沒放對應當放在輸入m之后。

4) 運行結果截圖

1585170-20190426161211877-132738813.png

題目4.思考題

1.什么是遞歸函數?

答:調用自己定義的函數也可以覺遞歸函數,這是我自己比較淺顯的理解,具體參考:什么是遞歸函數?

2..遞歸函數的優缺點。

答: 我怕覺得吧優點在于實現比較簡單,缺點的話就是比較麻煩,調用的耗時長,效率也可能很低,占用空間也會大一些。這是我的理解。

3..如何歸納出遞歸式?

答: 我覺得遞歸式都是前人總結的,沒有足夠的經驗是沒有成型的總結式。我仔細閱讀過這篇文章,這就是我得出的體會。參考:C語言遞歸操作總結

二、學習進度統計和學習感悟

1).學習進度統計

1585170-20190530110427973-842010296.png

2).學習感悟

本次作業讓我感覺難度非凡,深深的感到自己在結構體知識匱乏到了什么程度,幾天的時間才能完成作業,思路也不多太難了呀,耗時長,題目難,所幸在這個過程中還是又學習到一些東西的。

(1)本周你學習哪些內容?有哪些收獲?
本周學習了結構體和指針和數組的結合,三者的結合,難度誤以又提高了一個難度,難上加難。掌握了結構體的簡單應用,至少基礎作業做出來了。

(2)本周所學內容中你覺得哪些地方是難點?對此你做了哪些措施去客服這些難點?
我覺得都挺難的,主要看知識量和操作量的積累。我也精良去多做一些編程題目,題目太難的也不會去設計,都是先嘗試少量又相對簡單的編程題目。

三、結對編程的過程及優缺點

關于結對編程
1585170-20190426165017530-648847303.jpg

本次結對編程地點在寢室,本次結對與室友搭檔,過程還是依然比較愉快的,結對編程中我們討論了第九周基礎作業第三題中代碼總是在軟件上運行無法輸出,我們進行了長時間的調試和討論分別的除了不一樣的結果。
結對編程的優缺點:

優點:1.結對編程更適用于解決一些方向性的問題;2.結對編程中,雙方的互動目的在于開啟思路,避免單獨編程時思維容易阻塞的情況。3.多雙眼睛,少點 bug,也能增加不一樣的編程經驗

缺點:拍照編程還是有些讓人覺得不太自然。

轉載于:https://www.cnblogs.com/LfanWyuXooo/p/10775133.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536494.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

有源光纜AOC在40G網絡布線中備受歡迎的主要原因

現在很多數據中心已經在部署40G網絡&#xff0c;在40G網絡傳輸方案中會需要用到40G QSFP光模塊、40G高速線纜和40G有源光纜等產品&#xff0c;現如今用較多的是40G有源光纜&#xff0c;而40G高速線纜具有絕對的成本優勢&#xff0c;市場對高速線纜的需求量也是有增無減&#xf…

前端大框架知識歸納與總結

轉載于:https://juejin.im/post/5cc447ec6fb9a0324c20c412

accept和select的區別

2019獨角獸企業重金招聘Python工程師標準>>> 參考&#xff1a;https://blog.csdn.net/lsgqjh/article/details/65629609 select&#xff1a;查看指定fd_set中socket狀態&#xff0c;如果fd_set中有套接字準備就緒&#xff08;觸發&#xff08;讀、寫或執行&#xff…

【肥朝】看源碼,我為什么推薦IDEA?

本文并不評論Eclipse與IDEA孰好孰壞,但是由于肥朝平時都是使用IDEA開發的,所以推薦IDEA.這個和肥朝平時都是吃粵菜,所以推薦的都是粵菜為主,但是并不是說其他菜不好吃,肥朝不挑食! 1.條件斷點 看源碼的時候,經常遇到這個情況,源碼中有個for循環,關鍵是這個list的size有時候長達…

【技術干貨+限時活動】openstack原理及在華為云中的應用

五一小假提前放送&#xff0c;實力干貨課程&#xff0c;講清openstack原理及在華為云中的應用&#xff0c;一門路過別錯過的課程&#xff01;免費學習參加限時活動&#xff0c;評論課程&#xff0c;智能音響體脂秤領回家&#xff01;快戳&#xff1a;http://u6.gg/sxHV5轉載于:…

ansible的參數及常用模塊

ansible的參數及常用模塊參數&#xff1a;查看幫助手冊&#xff1a;ansible-doc -a查指定模塊的幫助&#xff1a;ansible-doc -s 模塊名ansible-doc -s setup 查看setup模塊的幫助信息ansible-doc -lansible-doc -s fileOptions:-a, --all Show …

[HNOI2009]有趣的數列

[HNOI2009]有趣的數列 有一個長度為2n的1~2n的全排列&#xff0c;保證其奇數項遞增&#xff0c;偶數項遞增&#xff0c;并且相鄰的奇數項和偶數項&#xff0c;后面的偶數項大于奇數項的方案數\(mod\ p,n<1000000,P<1000000000\)。 解 注意到2n&#xff0c;實際上也就猜到…

bzoj 3881 [Coci2015]Divljak——LCT維護parent樹鏈并

題目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id3881 對 S 建 SAM &#xff0c;每個 T 會讓 S 的 parent 樹的鏈并答案1&#xff1b;在 T 走每一步的時候&#xff0c;走到的節點用 LCT access 一下&#xff0c;就能找到該點到 parent 根的鏈。 給鏈打標記。…

介紹一下再Apache下的Tomcat負載均衡的一些使用問題

在負載均衡技術中&#xff0c;硬件設備是比較昂貴的&#xff0c;對于負載均衡的學習者如果不是在企業中應用或者是學員中學習&#xff0c;很少有機會能碰到實際操作的訓練。&#xff08;http://xz.8682222.com&#xff09;所以&#xff0c;很多朋友都會選擇軟件方面的設置進行研…

Java利器之UML類圖詳解

本文轉載自https://blog.csdn.net/xiehuimx/article/details/53427452。 前言UML&#xff08;Unified Modeling Language&#xff09;中文統一建模語言&#xff0c;是一種開放的方法&#xff0c;用于說明、可視化、構建和編寫一個正在開發的、面向對象的、軟件密集系統的制品的…

Material Design之AppBarLayout總結

CoordinatorLayout 官方文檔 CoordinatorLayout 是一個加強型的FrameLayout. CoordinatorLayout 主要用于兩種場景: 作為activity最外層布局 作為協調一個或多個具有特定交互的子view的父布局 子view之間的特定協調動作&#xff0c;通過app:layout_behavior指定&#xff0c;如…

Git和GitHub快速入門

Git入門 簡介 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的分布式版本控制系統。 工具 準備工具 Git下載地址&#xff1a;https://git-scm.com Git配置 配置的內容主要是&#xff1a;用戶名和郵箱 git config --global --add user.name <用…

團隊沖刺三

昨天我做了什么&#xff1f; 完成了登錄的布局文件&#xff0c;建立數據庫&#xff0c;建數據表&#xff0c;連接數據庫&#xff0c;將信息存儲。 遇到了什么問題&#xff1f; 數據庫存儲功能報錯 今天打算做什么&#xff1f; 解決昨天遺留的問題。轉載于:https://www.cnblogs.…

C語言進階——全局變量

全局變量 定義在函數外面的變量是全局變量 全局變量具有全局的生存期和作用域 它們與任何函數都無關 在任何函數內部都可以使用它們 全局變量初始化 沒有做初始化的全局變量會得到0值 指針會得到NULL值 只能用編譯時刻已知的值來初始化全局變量 它們的初始化發生在main函數之前…

為什么我不用ViewPager或RecyclerView來做上下滑切換

上下滑切換翻頁大概是這樣的效果&#xff1a; 目前網上有諸多如 “仿抖音上下滑...” “仿花椒映客直播...” 之類的技術分享&#xff0c;都有講述實現上下滑切換頁面的方案&#xff0c;其中以 ViewPager 和 RecyclerView SnapHelper 兩種方案為多&#xff0c;但是都有明顯的缺…

web項目上之深入理解Java國際化

作者&#xff1a;https://blog.csdn.net/yangbo787827967/article/details/81124439 假設我們正在開發一個支持多國語言的Web應用程序&#xff0c;要求系統能夠根據客戶端的系統的語言類型返回對應的界面&#xff1a;英文的操作系統返回英文界面&#xff0c;而中文的操作系統則…

Chrome運行時性能瓶頸分析

一&#xff0c;初探&#xff0c;根據現象發現問題 chrome的performance知道很久了&#xff0c;但總是沒有特別權威且跟上時代的學習資料&#xff0c;這次痛定思痛&#xff0c;直接看英文文檔&#xff0c;一點點把這塊啃掉&#xff0c;本筆記基于Chrome 59 step 1: 隱身模式打開…

vue-router之路由鉤子(八)

路由鉤子&#xff0c;即導航鉤子&#xff0c;其實就是路由攔截器&#xff0c;vue-router一共有三類&#xff1a;全局鉤子&#xff1a;最常用路由單獨鉤子組件內鉤子1、全局鉤子在src/router/index.js中使用&#xff0c;代碼如下&#xff1a;// 定義路由配置const router new V…

java第一 ++--

大的轉換小的自動轉換 byte -> short -> int -> long -> float -> double l 自動類型轉換 表示范圍小的數據類型轉換成范圍大的數據類型&#xff0c;這種方式稱為自動類型轉換 自動類型轉換格式&#xff1a; 范圍大的數據類型 變量 范圍小的數據類型值&#xf…

在加拿大讀大學被開除了,以后該怎么辦?

在加拿大讀大學被開除了&#xff0c;以后該怎么辦&#xff1f; 一天晚上正準備睡覺的時候&#xff0c;手機振動&#xff0c;打開一看&#xff0c;是一條微消息&#xff0c;“在加拿大讀大學被開除了&#xff0c;以后該怎么辦&#xff1f;”又一個留學生遇到的棘手問題。在國內上…