第十二周作業

這個作業屬于那個課程c語言
這個作業要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3236
我在這個課程的目標是學習掌握單向鏈表,掌握二級指針的概念,以及指針數組
這個作業在哪個具體方面幫助我實現目標前面3道題目
參考文獻

c語言程序設計,c primer plus

?

?

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 20int 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 max=0;//假設max為s[0] int i,j;for(i=0;i<n;i++){if(strlen(s[max])<strlen(s[i])){max=i;	}}	return strlen(s[max]);
} 

2.設計思路

??

?

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

本題目沒有遇到問題

4.運行結果截圖?

?

6-2?統計專業人數?(15?分)

本題要求實現一個函數,統計學生學號鏈表中專業為計算機的學生人數。鏈表結點定義如下:

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

這里學生的學號共7位數字,其中第2、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 num = 0;struct ListNode  *p = head;while(p != NULL){if(p->code[1] == '0' && p->code[2] == '2')num++;p = p->next;}return num;
}

  

2.設計思路

?

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

1.答案錯誤,if語句中的條件寫錯了,導致結果錯誤。

4.運行結果截圖?

?

?

6-3?刪除單鏈表偶數節點?(20?分)

本題要求實現兩個函數,分別將讀入的數據存儲為單鏈表、將鏈表中偶數值的結點刪除。鏈表結點定義如下

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

函數接口定義:

struct ListNode *createlist();
struct ListNode *deleteeven( struct ListNode *head );

函數createlist從標準輸入讀入一系列正整數,按照讀入順序建立單鏈表。當讀到?時表示輸入結束,函數應返回指向單鏈表頭結點的指針。

函數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, *p1, *tail;int num;head=(struct ListNode *)malloc(sizeof(struct ListNode));p1=tail=(struct ListNode *)malloc(sizeof(struct ListNode));p1->next=tail->next=head->next=NULL;while(1){scanf("%d",&num);if(num!=-1){p1->data=num;if(head->next==NULL){head->next=p1;}else {tail->next=p1;tail=p1;}p1=(struct ListNode *)malloc(sizeof(struct ListNode));p1->next=NULL;}else break;}return head;
}struct ListNode *deleteeven(struct ListNode *head)
{struct ListNode *num,*p;p=head;num=head->next;while(num!=NULL){if(num->data%2==0){p->next=num->next;}elsep=p->next;num=num->next;}return head->next;
}

  

2.設計思路

?

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

這次作業的鏈表在書上看的有些不一樣,剛剛做的時候出現了很多次的答案錯誤,是因為沒弄清楚到底是哪個結點解除,結點鏈接不對導致刪除的過多,

或者是全部都被刪除了。

然后出現最多的是字符指向結點的問題也出現了混亂,慢慢摸索,還是懂了許多。

4.運行結果截圖?

7-3?***八皇后問題?(20?分)

在國際象棋中,皇后是最厲害的棋子,可以橫走、直走,還可以斜走。棋手馬克斯·貝瑟爾 1848 年提出著名的八皇后問題:即在 8 × 8 的棋盤上擺放八個皇后,使其不能互相攻擊 —— 即任意兩個皇后都不能處于同一行、同一列或同一條斜線上。

現在我們把棋盤擴展到 n × n 的棋盤上擺放 n 個皇后,請問該怎么擺?請編寫程序,輸入正整數 n,輸出全部擺法(棋盤格子空白處顯示句點“.”,皇后處顯示字母“Q”,每兩格之間空一格)。

輸入格式

正整數 n (0 < n ≤ 12)

輸出格式

若問題有解,則輸出全部擺法(兩種擺法之間空一行),否則輸出 None。

要求:試探的順序逐行從左往右的順序進行,請參看輸出樣例2。

輸入樣例1

3

輸出樣例1

None

輸入樣例2

6

輸出樣例2

. Q . . . .
. . . Q . .
. . . . . Q
Q . . . . .
. . Q . . .
. . . . Q .. . Q . . .
. . . . . Q
. Q . . . .
. . . . Q .
Q . . . . .
. . . Q . .. . . Q . .
Q . . . . .
. . . . Q .
. Q . . . .
. . . . . Q
. . Q . . .. . . . Q .
. . Q . . .
Q . . . . .
. . . . . Q
. . . Q . .
. Q . . . .

代碼

#include<stdio.h>void queen(int i,int j);    //遞歸函數, 
int check(int i,int j);     //判斷是否會遇到其他皇后 的函數 char chess[13][13];         //最大棋盤 
int a,b,n,sum=0;            //sum記錄能擺放的方法次數 int main(void){scanf("%d",&n);queen(0,0);if(sum==0){printf("None"); }return 0;}void queen(int i,int j){if(j>=n){return ; }if(check(i,j)==1){     //如果能放chess[i][j]='Q';   //放皇后if(i==n-1){        //如果是最后一行,記錄情況sum++;         //記錄符合的次數if(sum!=1)      //如果有新方法,就在新方法前加一個換行,使得最后一種方法后面沒有換行printf("\n");for(a=0;a<n;a++){    for(b=0;b<n;b++){if(chess[a][b]!='Q'){if(b!=n-1)printf(". ");elseprintf(".");}if(chess[a][b]=='Q'){if(b!=n-1)printf("Q ");elseprintf("Q");}}printf("\n");}}else{queen(i+1,0); //不是最后一行就分析下一行}}chess[i][j]='.';        //如果此位置不能放,就置空(0),判斷旁邊的格子。//如果此位置能放,走到這里就意味著上面的代碼全部執行了,把皇后拿走(置零),再討論其他情況,拿旁邊位置試探。queen(i,j+1);
}int check(int i,int j){int k;for(k=0;k<n;k++){if(chess[i][k]=='Q')return 0;                   //0=不能放}for(k=0;k<n;k++){if(chess[k][j]=='Q')return 0; }for(k=-n;k<=n;k++){                 //兩對角線if(i+k>=0&&i+k<n&&j+k>=0&&j+k<n)//從左上到右下對角線if(chess[i+k][j+k]=='Q') return 0;if(i-k>=0&&i-k<n&&j+k>=0&&j+k<n)//從左下到右上對角線if(chess[i-k][j+k]=='Q') return 0;}return 1;
}

  

2.設計思路

思路不對,所以我就沒有畫流程圖了

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

本題目做錯了,到現在為止還是沒有調試正確,部分正確和運行超時讓我十分苦惱

4.運行結果截圖?

?

?

?

學習感悟?

本周學習的鏈表實在有難度,結點的鏈接問題和刪除時結點的解除問題和方向問題。今天上課老師講的很清楚,感覺茅塞頓開。哈哈。

轉載于:https://www.cnblogs.com/hhwcg/p/10884166.html

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

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

相關文章

職場上的「小人」教我的事

很多人的小指頭都會帶一個尾戒&#xff0c;不是白金就是黃金&#xff0c;大部份是簡單的一環&#xff0c;沒有太多裝飾&#xff0c;也很少鑲寶石&#xff0c;目的不在于當作飾品&#xff0c;而是保命之用。 也有人不習慣戴尾戒&#xff0c;而是把指甲留得長長的&#xff0c;長到…

【Quartz】插件的使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Quartz 框架提供了幾種用于擴展平臺能力的方式。通過使用各種 "鉤子" (通常指的就是擴展點)&#xff0c;Quartz 變得很容易被擴…

自動化運維平臺(前端vue)

前端的大體流程&#xff1a;首先是Login登錄組件&#xff0c;當輸入用戶名和密碼之后&#xff0c;發送post請求到后端&#xff0c;然后根據返回的數據的是否正常&#xff0c;如果正常&#xff0c;將返回的token以及用戶名保存到sessionStorage中&#xff0c;并使用導航守衛進行…

老程序員的下場

長期從事編程活動的程序員都期望在50多歲時能爬到一個足夠高的職位&#xff0c;或者能順利的退休。 但我在這里討論的可能是一個你還沒有想過的問題&#xff1a;如果到那時你失業了呢&#xff1f; 50多歲時你的職業仕途會成為一個問題。如果你有很好的技術&#xff0c;有人雇…

Quartz 之入門示例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 環境:XPMyeclipse6.5JDK1.6 quartz官網:http://www.quartz-scheduler.org/ 參考資料 1 Quartz任務調度快速入門 http://www.blogjava…

CSS3最顛覆性的動畫效果,基本屬性[3D]

和2D一樣也是transform 即變形 1)rotateX rotateY rotateZ&#xff08;也可以用transform-origin來設置旋轉中心點&#xff09; 2)透視(perspective) 給父親加透視&#xff0c;透視就是模擬眼睛到物體的距離&#xff0c;近大遠小&#xff0c;即數值越小&#xff0c;3D越明顯 理…

解決報錯 :A component required a bean of type ‘gentle.test.Show‘ that could not be found

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 啟動工程失敗&#xff0c;報錯如題&#xff1a; A component required a bean of type gentle.test.Show that could not be found.…

30天提升技術人的寫作力-第十七天

約束作者在漫長的創作過程中&#xff0c;不偏離寫作目標。當寫的字數在十幾萬以上時&#xff0c;沒有先規劃&#xff0c;就會陷入混亂&#xff0c;發生注入重復、疏漏、相關知識未講解等問題。制作長文章或書籍的大綱&#xff0c;需要使用發散收斂工具。所謂發散是多方向、多思…

白領必看的十種職場致命毒藥

找到一個合適的工作可能需要3到15個月不等的時間——然而丟掉飯碗只需要幾天或幾周。下面是10種職場毒藥的特點&#xff1a;       1、人際交往技能不佳       討人喜歡會大有幫助。研究均表明和那些能力強而呆板的人相比&#xff0c;人們一致而且不可遏制地更喜歡和…

eclipse中folder、source folder和package的區別

今天做ssm項目時&#xff0c;突然發現了這個問題&#xff0c;特別好奇&#xff0c;sqlSessionFactory.xml文件如何找到&#xff1a; 1、放在src/hello目錄下&#xff1a; InputStream inputStream Resources.getResourceAsStream("./hello/sqlMapperConfig.xml"); 2…

解決.quartz.ObjectAlreadyExistsException: Unable to store Job : ‘jyGroup.jyJob‘, because one already

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 報錯如題&#xff1a; 定時任務出現異常 &#xff1a; org.quartz.ObjectAlreadyExistsException: Unable to store Job : jyGroup.…

WeMos-D1R2的使用

2019獨角獸企業重金招聘Python工程師標準>>> WeMos介紹 WeMos-D1R2一個基于ESP8266-12 Wifi模塊的Arduino-UNO開發板。也就是說&#xff0c;WeMos-D1R2是一個具有wifi功能的Arduino開發板&#xff0c;但WeMos-D1R2與Arduino-UNO的引腳不是一一對應的&#xff0c;其對…

職場中什么樣的員工最易發展?

職場中什么樣的員工最“搶手”?也許你會說有能力的人&#xff0c;沒錯有能力的人競爭力一定很強&#xff0c;但是能力會隨著經驗的豐富而慢慢變強&#xff0c;所以它不足以某個人在職場中站穩腳主要原因&#xff0c;反而是一個人的工作態度決定著他在職場中的發展方向與前景。…

PAT 1048 數字加密

題目鏈接 一開始我還以為以b的長度為基準&#xff0c;因為b是要加密的數據啊&#xff0c;看了答案才知道原來要以最長的長度為基準。但是這道題還有個bug&#xff0c;就是當你算出的結果前面有0竟然也可以通過&#xff0c;比如a為1111&#xff0c;b為1111&#xff0c;答案是020…

RabbitMQ MQTT協議和AMQP協議

RabbitMQ MQTT協議和AMQP協議 1 序言... 1 1.1 RabbitMq結構... 1 1.2 RabbitMq消息接收... 4 1.3 Exchange種類和消息發送模式... 4 1.4 RabbitMq的協議... 6 1.4.1 AMQP協議... 6 1.4.2 MQTT協議... 8 2 RabbitMq服務器安裝和使用…

Quartz 定時任務(Scheduler)的 3 種實現方式

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS&#xff1a;第 3 種最簡單。 一、引入 jar 。 <!-- quartz 定時任務調度 --><dependency><groupId>org.springfr…

加速財務自由的7種理財方法

有人說財務自由是個遙不可及的路&#xff0c;有人卻覺得想要在財務上成功很簡單&#xff0c;到底財務自由有沒有一個正確的方法或是被證明的技巧可以被實現&#xff1f;如果你現在還沒達成或是正在達成&#xff0c;底下這7種簡單有效的行動與方法可以加速你建構財務自由之路。 …

Code Chef December Challenge 2018題解

傳送門 \(MAXEP\) 二分&#xff0c;不過二分的時候要注意把\(mid\)設成\(\left\lfloor{9lr\over 10}\right\rfloor\)&#xff0c;這樣往右的次數不會超過\(6\)次 //minamoto #include<bits/stdc.h> #define R register #define inline __inline__ __attribute__((always_…

Git 安裝及 idea 配置 Git

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.git官網下載地址&#xff1a;點此跳轉git官網 git具體安裝不做詳細敘述。 2.打開idea 點擊Configure -> Settings 3.選擇Git 找到…

創業成功需早起?看看IT大佬們的作息時間

有人說&#xff0c;在一個企業里&#xff0c;級別的高低與越起越早現象呈坐標曲線型&#xff0c;也就是說&#xff0c;一開始進職場都嗜睡&#xff0c;有了一定級別就開始早起&#xff0c;隨著級別的升高&#xff0c;起床的時間也越來越早&#xff0c;到了級別特高了&#xff0…