這個做業屬於哪一個課程 | C語言程序設計ll |
這個做業要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/3235 |
我在這個課程的目標是 | 瞭解並學習指針進階,主要內容是指針數組和二級指針 |
這個做業在哪一個具體方面幫助我實現目標 | 這個做業讓我瞭解和學習指針數組和二級指針的知識,更深刻了解指針 |
參考文獻 | 書本第十一章的知識以及百度查閱的知識 |
本題要求實現一個函數,用於計算有n個元素的指針數組s中最長的字符串的長度。
函數接口定義:c++
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
int max_len( char *s[], int n ) { int i,l = 0,len = 0; for(i = 0;i < n;i++) { l = strlen(s[i]); if(len < l) { len = l; } } return 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; } int max_len( char *s[], int n ) { int i,l = 0,len = 0; for(i = 0;i < n;i++) { l = strlen(s[i]); if(len < l) { len = l; } } return len; }
問題:把全部的代碼直接打上去,一直沒發現錯誤;第一次賦值的時候弄錯了
解決方法:檢查了以後才改過來了,編譯正確。編程
本題要求實現一個函數,統計學生學號鏈表中專業爲計算機的學生人數。鏈表結點定義以下:數組
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
int countcs( struct ListNode *head ) { int n=0; while (head!=0) { if(head->code[1]=='0'&&head->code[2]=='2') { n++; } head=head->next; } return n; }
#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; } int countcs( struct ListNode *head ) { int n=0; while (head!=0) { if(head->code[1]=='0'&&head->code[2]=='2') { n++; } head=head->next; } return n; }
問題:在while語句中忘記給head的值變換,致使有部分答案錯誤。
解決方法:在末尾加上變換head的值的語句,正確。測試
在dev-c++上編譯不出來,有個地方會報錯,好像是代碼自己的問題,我也不知道怎麼回事。設計
本題要求實現兩個函數,分別將讀入的數據存儲爲單鏈表、將鏈表中偶數值的結點刪除。鏈表結點定義以下:3d
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
struct ListNode *createlist() { struct ListNode *head,*p,*q; int num; head=(struct ListNode *)malloc(sizeof(struct ListNode)); p=q=(struct ListNode *)malloc(sizeof(struct ListNode)); p->next=q->next=head->next=NULL; while(1) { scanf("%d",&num); if(num!=-1) { p->data=num; if(head->next!=NULL) { q->next=p; q=p; } else { head->next=p; } p=(struct ListNode *)malloc(sizeof(struct ListNode)); p->next=NULL; } else break; } return head; } struct ListNode *deleteeven(struct ListNode *head) { struct ListNode *num,*p1; p1=head; num=head->next; while(num!=NULL) { if(num->data%2==0) { p1->next=num->next; } else p1=p1->next; num=num->next; } return head->next; }
問題:這道題目我嘗試了本身編寫代碼,結果錯誤不少,不會寫
解決方法:在百度上搜了不少大佬的代碼,而後仍是不會,但願老師能講解。
咱們組的想要開發的項目啥的還沒太想好,還需討論,等上完一節課再肯定。
周/日期 | 這周所花的時間 | 代碼行數 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
2/25-3/3 | 2天 | 39 | 初次學習數組的用法 | 關於數組的一些具體的用法 |
3/4-3/10 | 2天 | 35 | 編寫程序來處理文件數據 | 指針的具體用法和fscanf類型函數的理解 |
3/11-3/17 | 1天 | 59 | 第一題:編寫程序處理文件數據 | 指針的具體用法 |
3/11-3/17 | 2天 | 51 | 第二題:用二維數組知識編寫程序 | 二維數組的知識點不熟悉 |
3/18-3/24 | 2天 | 111 | 二維數組、選擇法排序和冒泡法排序 | 選擇法排序和冒泡法排序的區別 |
3/25-3/31 | 2天 | 78 | 判斷迴文,字符數組和使用字符串編程 | 使用字符串編程時的一些函數的用法 |
4/1-4/7 | 3天 | 102 | 指針的基本運算,數組和指針的結合 | 對於數組仍是不熟悉 |
4/8-4/14 | 3天 | 96 | 冒泡排序,指針、數組和地址間的關係 | 指針和數組的關係和應用不太會,容易錯 |
4/15-4/21 | 3天 | 129 | 經常使用的字符串處理函數和用指針實現內存動態分配 | 關於指針內存動態分配還不太熟悉 |
4/22-4/28 | 3天 | 86 | 瞭解和學習結構的概念與定義,結構變量的使用以及結構數組和指針的使用 | 結構指針不太會,多是沒用慣 |
4/29-5/5 | 1天 | ---- | 怎樣花兩年時間面試一我的;如何有效地記憶與學習;如何提問 | ---- |
5/6-5/12 | 2天 | 25 | 如何使用遞歸函數以及學習宏定義的知識 | 有挺多地方都不太懂,此次的做業很難,不會寫 |
5/13-5/19 | 2天 | 指針進階主要內容是指針數組和二級指針 | 感受知識點很不熟悉,比較繁雜,有個做業不會寫 |
時間 | 代碼行數 | 博客字數 |
---|---|---|
第一週 | 39 | 798 |
第二週 | 35 | 923 |
第三週 | 110 | 1071 |
第四周 | 111 | 1713 |
第五週 | 78 | 1878 |
第六週 | 102 | 2991 |
第七週 | 96 | 2618 |
第八週 | 129 | 3011 |
第九周 | 86 | 3598 |
第十週 | ---- | 3456 |
第十一週 | 25 | 3468 |
第十二週 | 76 | 3031 |