日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第九周作业及其总结

發布時間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第九周作业及其总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第九周作業

一、本周作業頭

這個作業屬于哪個課程C語言程序設計Ⅱ
這個作業要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2828
我在這個課程的目標是靈活的使用結構類型來解決問題
這個作業在那個具體方面幫助我實現目標通過對結構的嵌套定義結構的變量定義再結合其他所學知識
參考文獻c語言教課書和百度

二、基礎作業

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

一、實驗代碼。

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

二、設計思路既流程圖。

三、本題調試過程遇到的問題及解決辦法。

1、出現了幾次的答案錯誤和編譯失敗?
解決辦法:詢問助教,以及自己慢慢調試,發現首先在if語句后其他含有括號的語句中輸入指針變量不能直接輸入,要這樣:(*p).score或者p->score.
在最后輸出時,要加上return返回。

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

一、實驗代碼。

#include<stdio.h> struct student {int sex;char name[10];int sign; }; int main() {struct student a[50];int n;int i,j;int sum=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %s", &a[i].sex, a[i].name);a[i].sign=0;}for(int i=0;i<n;i++){for(int j=n-1;j>=0;j--){if((a[i].sex!=a[j].sex)&&a[i].sign!=1&&a[j].sign!=1){a[i].sign =1;a[j].sign=1;printf("%s %s\n", a[i].name , a[j].name );sum+=2;}}if(sum==n)break;}return 0; }

二、設計思路既流程圖。

三、本題調試過程中遇到的問題及解決辦法。

1、開始自己進行運行時不知道怎么對學生進行配對,以及出現答案錯誤?
解決辦法:和一些同學進行討論交流,用兩個循環語句分別從前后對學生進行篩選,例:for(int i=0;i<n;i++),for(int j=n-1;j>=0;j--),一個遞增一個遞減,再配對時,要對以及配對的學生進行標記也就是令其a[i].sign=a[j]sign=1.否則會匹配錯誤。最后還要跳出循環,當匹配的人數等于總人數時。

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

一、實驗代碼。

#include<stdio.h> struct student {char num1[1000];int num2;int num3; }; int main() {struct student a[1000];int n,m,i,j;int num4[1000];scanf("%d",&n);for(i=0;i<n;i++){scanf("%s %d %d",a[i].num1,&a[i].num2,&a[i].num3);}scanf ("%d",&m);for(j=0;j<m;j++){scanf("%d",&num4[j]); }for(j=0;j<m;j++)for(i=0;i<n;i++){if(num4[j]==a[i].num2)printf("%s %d\n",a[i].num1,a[i].num3);}return 0; }

二、設計思路既流程圖。

三、本題調試過程遇到的問題及解決辦法。

1、再運行程序時沒有出現任何錯誤,不過答案總是不對
解決辦法:自己摸索,調試,發現了問題的所在,再輸入雙重循環語句時要先輸出 for(j=0;j<m;j++),再輸入for(i=0;i<n;i++),否則輸出格式就錯了,雖然dev上沒有錯誤,再一個就是接收數據時n,m不能同時接收,否則答案會不正確。

預習作業

第十周的教學內容是:第十章 函數與程序結構
請大家查閱資料,思考問題中的三問:什么是遞歸函數,它的優點和缺點有哪些,如何歸納出遞歸式?
請將你的思考用自己的語言寫下來。如果有引用他們的文字,請一定要標出出處(使用Markdown的鏈接方式)。

1、什么是遞歸函數?
遞歸函數是數論函數的一種,其定義域與值域都是自然數集,只是由于構作函數方法的不同而有別于其他的函數。處處有定義的函數叫做全函數,未必處處有定義的函數叫做部分函數。最簡單又最基本的函數有三個:零函數O(x)=0(其值恒為0);射影函數;后繼函數S(x)=x+1。它們合稱初始函數。要想由舊函數作出新函數,必須使用各種算子。
2、它的優缺點有哪些?
優點:

  • 簡潔
    2.在樹的前序,中序,后序遍歷算法中,遞歸的實現明顯要比循環簡單得多。
  • 缺點:
    1.遞歸由于是函數調用自身,而函數調用是有時間和空間的消耗的:每一次函數調用,都需要在內存棧中分配空間以保存參數、返回地址以及臨時變量,而往棧中壓入數據和彈出數據都需要時間。

    3、如何歸納出遞歸式?
    不同的問題其遞歸式子也不同,需要具體分析,然后確定遞歸盡頭,也就是遞歸出口,遞歸函數的核心語句就是這兩點。

    學習進度統計和學習感悟

    折線圖

    學習感悟

    學習一時,受用一世。今天的努力,明天的成功。

    結對編程

    優點:
    1、程序員互相幫助,互相教對方,可以得到能力上的互補。
    2、可以讓編程環境有效地貫徹Design。
    缺點:
    1、兩個人在一起工作可能會出現工作精力不能集中的情況。程序員可能會交談一些與工作無關的事情,反而分散注意力,導致效率比單人更為低下。
    2、結對編程可能讓程序員們相互學習得更快。有些時候,學習對方的長外,可能會和程序員們在起滋生不良氣氛一樣快。比如,合伙應付工作,敷衍項目。

    有時候發現結對編程還是有點用,結隊編程就是讓我們知道合作的重要性。

    轉載于:https://www.cnblogs.com/neir/p/10769422.html

    總結

    以上是生活随笔為你收集整理的第九周作业及其总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。