第十二週做業

這個做業屬於那個課程 C語言程序設計II
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/MS/homework/3239
我在這個課程的目標是 學好c語言
這個做業在那個具體方面幫助我實現目標 結構指針以及鏈表
參考文獻 C語言程序設計II

6-1 計算最長的字符串長度 (15 分)
本題要求實現一個函數,用於計算有n個元素的指針數組s中最長的字符串的長度。編程

函數接口定義:
int max_len( char *s[], int n );
其中n個字符串存儲在s[]中,函數max_len應返回其中最長字符串的長度。數組

裁判測試程序樣例:函數

include <stdio.h>

include <string.h>

include <stdlib.h>

define MAXN 10

define MAXS 20

int max_len( char *s[], int n );學習

int main()
{
int i, n;
char *string[MAXN] = {NULL};測試

scanf("%d", &n);
for(i = 0; i < n; i++) {
    string[i] = (char *)malloc(sizeof(char)*MAXS);
    scanf("%s", string[i]);
}
printf("%d\n", max_len(string, n));

return 0;

}設計

/* 你的代碼將被嵌在這裏 */
輸入樣例:
4
blue
yellow
red
green
輸出樣例:
6指針

1)實驗代碼調試

int max_len( char *s[], int n ){
    int i,a=0;
    for(i=0;i<n;i++){
        if(a<strlen(s[i]))
        a=strlen(s[i]);
        }
        return a;
}

2)設計思路code

3)本題調試過程當中遇到的問題

問題:忘記返回其中最長字符串的長度。在後增長 return a;blog

4)運行截圖

6-2 統計專業人數 (15 分)
本題要求實現一個函數,統計學生學號鏈表中專業爲計算機的學生人數。鏈表結點定義以下:

struct ListNode {
char code[8];
struct ListNode *next;
};
這裏學生的學號共7位數字,其中第二、3位是專業編號。計算機專業的編號爲02。

函數接口定義:
int countcs( struct ListNode *head );
其中head是用戶傳入的學生學號鏈表的頭指針;函數countcs統計並返回head鏈表中專業爲計算機的學生人數。

裁判測試程序樣例:

include <stdio.h>

include <stdlib.h>

include <string.h>

struct ListNode {
char code[8];
struct ListNode *next;
};

struct ListNode createlist(); /裁判實現,細節不表/
int countcs( struct ListNode
head );

int main()
{
struct ListNode *head;

head = createlist();
printf("%d\n", countcs(head));

return 0;

}

/* 你的代碼將被嵌在這裏 */
輸入樣例:
1021202
2022310
8102134
1030912
3110203
4021205

輸出樣例:
3

1)實驗代碼

int countcs( struct ListNode *head )
{
    int a=0;
    while(head!=NULL){
        if((*head).code[1]=='0'&&(*head).code[2]=='2')
        a++;
        head=(*head).next;
    }
    return a;
}

2)設計思路

3)本題調試過程當中遇到的問題

問題:沒加小括號。在第七行中head改爲(head),由於「.」的優先級高於「」的優先級,則head.next等價於*(head.next),含義發生了變化,從而會產生錯誤。

4)運行截圖

6-3 刪除單鏈表偶數節點 (20 分)
本題要求實現兩個函數,分別將讀入的數據存儲爲單鏈表、將鏈表中偶數值的結點刪除。鏈表結點定義以下:

struct ListNode {
int data;
struct ListNode next;
};
函數接口定義:
struct ListNode
createlist();
struct ListNode deleteeven( struct ListNode head );
函數createlist從標準輸入讀入一系列正整數,按照讀入順序創建單鏈表。當讀到−1時表示輸入結束,函數應返回指向單鏈表頭結點的指針。

函數deleteeven將單鏈表head中偶數值的結點刪除,返回結果鏈表的頭指針。

裁判測試程序樣例:

include <stdio.h>

include <stdlib.h>

struct ListNode {
int data;
struct ListNode *next;
};

struct ListNode createlist();
struct ListNode
deleteeven( struct ListNode head );
void printlist( struct ListNode
head )
{
struct ListNode *p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}

int main()
{
struct ListNode *head;

head = createlist();
head = deleteeven(head);
printlist(head);

return 0;

}

/* 你的代碼將被嵌在這裏 */
輸入樣例:
1 2 2 3 4 5 6 7 -1
輸出樣例:
1 3 5 7

1)實驗代碼

struct ListNode *createlist()
{   
    struct ListNode *head,*p,*tail;
    int size=sizeof(struct ListNode),data;
    head=NULL;
    scanf("%d",&data);
    while(data!=-1)
    {
        p=(struct ListNode*)malloc(size);
        (*p).data=data;
        (*p).next=NULL;
        if(head==NULL)
            head=p;
        else
            (*tail).next=p;
        tail=p;
        scanf("%d",&data);
     } 
    return head;
 } 
struct ListNode *deleteeven( struct ListNode *head )
{
    struct ListNode *prt1,*prt2;
    while(head!=NULL&&(*head).data%2==0)
    {
        prt2=head;
        head=(*head).next;
        free(prt2);
    }
    if(head==NULL)
    return NULL;
    
    prt1=head;
    prt2=(*head). next;
    while(prt2!=NULL)
    {
        if((*prt2).data%2==0)
        {
            (*prt1).next=(*prt2).next;
            free(prt2);
        }
        else
            prt1=prt2;
        
        prt2=(*prt1).next;
    }
    return head;

2)設計思路

3)本題調試過程當中遇到的問題

問題:刪除操做中while條件語句錯誤。在while條件語句中加上head!=NULL.

4)運行截圖

預習做業

從第十三週開始,將進入課程設計階段,請在本次做業中給出:

1.所在小組想要開發的項目的名稱和目標;

2.項目主體功能的描述;

3.現階段已作的準備工做;

4.小組成員名單和進度安排。(課程設計階段:13-17周)

1.所在小組想要開發的項目的名稱和目標;
名稱:俄羅斯方塊
目標:自設切換背景,音樂的俄羅斯方塊,
2.項目主體功能的描述;
每一行都沒有空缺了,被各類不一樣方塊填滿了,就消到這行,並得到積分,隨着分數越高,方塊掉落的速度越快。當某列堆滿的時候,遊戲結束。你game  over。
3.現階段已作的準備工做;
有了方向,知道從什麼地方着手,人員已經就緒,但仍是要繼續學習新的知識,並且這個遊戲,咱們只能搞最簡單的,技術還不夠,須要學習的地方還有不少。
4.小組成員名單和進度安排。(課程設計階段:13-17周)
鄒佳均(組長),唐志名,孫澤良。
進度安排目前尚未。

學習感悟:
本週編程整體感受還好,由於沒什麼太難的題目,不過基礎題第三題仍是有一點不懂,由於是照着書的模式來寫代碼的,只不過其中改了一些條件而已,有一些代碼沒看懂。

結對編程:
我跟我隊友在星期三晚自習一塊兒寫代碼,一塊兒討論了題目該怎麼寫,以及本身的思路,實在寫不出了就向其餘大佬請教。
優勢:可以集思廣益,以及能夠學到不少本身沒想到的思路。
缺點:時間不夠,在一塊兒討論的機會少。

學習進度條:

相關文章
相關標籤/搜索