免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
第十一周作業(yè)
這個作業(yè)屬于哪個課程C語言程序設計II
這個作業(yè)要求在哪里https://edu.cnblogs.com/campus/zswxy/MS/homework/3206
我在這個課程的目標是能夠對相對復雜的問題,合理定義程序的多函數結構;能夠使用遞歸函數進行編程;掌握宏的基本用法;掌握編譯預處理的概念。
這個作業(yè)在哪個具體方面幫助我實現(xiàn)目標PTA習題
參考文獻C語言程序設計第10章

題目一 7-1 漢諾塔問題*
漢諾塔是一個源于印度古老傳說的益智玩具。據說大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤,大梵天命令僧侶把圓盤移到另一根柱子上,并且規(guī)定:在小圓盤上不能放大圓盤,每次只能移動一個圓盤。當所有圓盤都移到另一根柱子上時,世界就會毀滅。

請編寫程序,輸入漢諾塔圓片的數量,輸出移動漢諾塔的步驟。

輸入格式

圓盤數 起始柱 目的柱 過度柱

輸出格式

移動漢諾塔的步驟
每行顯示一步操作,具體格式為:
盤片號: 起始柱 -> 目的柱
其中盤片號從 1 開始由小到大順序編號。

輸入樣例

3
a c b

輸出樣例

1: a -> c
2: a -> b
1: c -> b
3: a -> c
1: b -> a
2: b -> c
1: a -> c

源代碼

#include<stdio.h>void Hanio(int n,char a,char c,char b);int main(void){    int n;    char a,c,b;    scanf("%d %c %c %c",&n,&a,&c,&b);    Hanio(n,a,c,b);        return 0;  }   void Hanio(int n,char a,char c,char b) {    if(n==1)           printf("1: %c -> %c\n",a,c);    else{        Hanio(n-1,a,b,c);        printf("%d: %c -> %c\n",n,a,c);        Hanio(n-1,b,c,a);     } }

設計思路

本題調試過程碰到的問題及解決方法


模仿書上245頁的寫法,忽略了調換順序,于是答案錯誤。此題,三根柱子順序為a,c,b,從a到c,b為中間過渡。

pta運行結果截圖

題目二 7-2 估值一億的AI核心代碼


以上圖片來自新浪微博。
本題要求你實現(xiàn)一個稍微更值錢一點的 AI 英文問答程序,規(guī)則是:
無論用戶說什么,首先把對方說的話在一行中原樣打印出來;
消除原文中多余空格:把相鄰單詞間的多個空格換成 1 個空格,把行首尾的空格全部刪掉,把標點符號前面的空格刪掉;
把原文中所有大寫英文字母變成小寫,除了 I;
把原文中所有獨立的 can you、could you 對應地換成 I can、I could—— 這里“獨立”是指被空格或標點符號分隔開的單詞;
把原文中所有獨立的 I 和 me 換成 you;
把原文中所有的問號 ? 換成驚嘆號 !;
在一行中輸出替換后的句子作為 AI 的回答。

輸入格式:

輸入首先在第一行給出不超過 10 的正整數 N,隨后 N 行,每行給出一句不超過 1000 個字符的、以回車結尾的用戶的對話,對話為非空字符串,僅包括字母、數字、空格、可見的半角標點符號。

輸出格式:

按題面要求輸出,每個 AI 的回答前要加上 AI: 和一個空格。

輸入樣例:

6
Hello ?
Good to chat with you
can you speak Chinese?
Really?
Could you show me 5
What Is this prime? I,don 't know

輸出樣例:

Hello ?
AI: hello!
Good to chat with you
AI: good to chat with you
can you speak Chinese?
AI: I can speak chinese!
Really?
AI: really!
Could you show me 5
AI: I could show you 5
What Is this prime? I,don 't know
AI: what Is this prime! you,don't know

別人的源代碼

#include<stdio.h>#include<string.h>int main(void){    char str1[1001];    static int i,a,x,y,N,b;        scanf("%d\n",&N);    char str[N][1001];    for(i=0;i<N;i  ){              /*輸入對話,存入二維數組*/         gets(str[i]);    }        for(b=0;b<N;b  ){               /*對輸入的對話一行一行 進行改造*/     i=0;    a=0;    x=0;    while(str[b][i]!='\0'){               /*改造開始,以單個字母進行改變*/         if(str[b][i]==' '&&x==1){          /*多個空格變成一個*/             str1[a]=' ';            a  ;            x=0;        }                if(str[b][i]!=' '){               /*清除符號前的空格*/             if((str1[a-1]==' ')&&((str[b][i]<'a'||str[b][i]>'z')&&(str[b][i]<'A'||str[b][i]>'Z'))&&((str[b][i]<'0')||(str[b][i]>'9'))){                if(str[b][i]=='?'){                       /*改變問號為嘆號*/                     str1[--a]='!';                    a  ;                    x=1;                }                else{                    str1[--a]=str[b][i];                    a  ;                    x=1;                }            }            else{                if(str[b][i]<='Z'&&str[b][i]>='A'&&str[b][i]!='I'){       /*改大寫為小寫*/                    str1[a]=str[b][i]-'A' 'a';                    a  ;                    x=1;                }                else{                    if(str[b][i]=='?'){                     /*改變問號為嘆號*/                        str1[a]='!';                        a  ;                        x=1;                    }                    else{                               /*其他字母正常存入*/                         str1[a]=str[b][i];                        a  ;                        x=1;                    }                }            }        }        i  ;                      /*下一個字母*/     }        str1[a]='\0';                 /*添加字符串結束標記*/     if(str1[a-1]==' '){           /*去掉字符串最后的空格*/         str1[a-1]='\0';    }        i=0;    while(str1[i]!='\0'){        /*判斷是否為can you*/        if(str1[i]=='c'&&str1[i 1]=='a'&&str1[i 2]=='n'&&str1[i 3]==' '&&str1[i 4]=='y'&&str1[i 5]=='o'&&str1[i 6]=='u'){                 if(((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i 7]<'a'||str1[i 7]>'z')&&(str1[i 7]<'A'||str1[i 7]>'Z'))){                 str1[i]='I';                        /*判斷can you是否獨立(“獨立”是指被空格或標點符號分隔開的單詞)*/                 str1[i 1]=' ';                str1[i 2]='c';                str1[i 3]='a';                str1[i 4]='n';                str1[i 5]='8';                str1[i 6]='8';                i =7;                             /*減少判斷量,從can you后的字符繼續(xù)判斷*/                 continue;            }        }        /*判斷是否為could you*/        if(str1[i]=='c'&&str1[i 1]=='o'&&str1[i 2]=='u'&&str1[i 3]=='l'&&str1[i 4]=='d'&&str1[i 5]==' '&&str1[i 6]=='y'&&str1[i 7]=='o'&&str1[i 8]=='u'){            if(((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i 9]<'a'||str1[i 9]>'z')&&(str1[i 9]<'A'||str1[i 9]>'Z'))){                str1[i]='I';                        /*判斷could you是否獨立(“獨立”是指被空格或標點符號分隔開的單詞)*/                str1[i 1]=' ';                str1[i 2]='c';                str1[i 3]='o';                str1[i 4]='u';                str1[i 5]='l';                str1[i 6]='d';                str1[i 7]='8';                str1[i 8]='8';                i =7;                             /*減少判斷量,從could you后的字符繼續(xù)判斷*/                continue;            }        }         /*判斷I是否獨立(“獨立”是指被空格或標點符號分隔開的單詞)*/        if(str1[i]=='I'&&((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i 1]<'a'||str1[i 1]>'z')&&(str1[i 1]<'A'||str1[i 1]>'Z'))){            str1[i]='7';        }         /*判斷me是否獨立(“獨立”是指被空格或標點符號分隔開的單詞)*/        if((str1[i]=='m'&&str1[i 1]=='e')&&((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i 2]<'a'||str1[i 2]>'z')&&(str1[i 2]<'A'||str1[i 2]>'Z'))){            str1[i]='5';            str1[i 1]='6';            i  ;        }        i  ;    }    /*輸出改變后的字符串,'8'轉義為空,('5''6')轉義為you,'7'轉義為you*/     printf("%s\nAI: ",str[b]);    y=strlen(str1);    for(i=0;i<y;i  ){        if(str1[i]=='8')            continue;        else if(str1[i]=='5'&&str1[i 1]=='6'){            printf("you");            i  ;            continue;        }        else if(str1[i]=='7'){            printf("you");        }        else            printf("%c",str1[i]);    }    printf("\n");    }    }

設計思路

這一個億我是賺不了了,太復雜了,不會。

本題調試過程碰到的問題及解決方法

細分成一個個的小模塊,然后再合起來也還是蠻難的。

pta運行結果截圖

題目三 7-3 ***八皇后問題
在國際象棋中,皇后是最厲害的棋子,可以橫走、直走,還可以斜走。棋手馬克斯·貝瑟爾 1848 年提出著名的八皇后問題:即在 8 × 8 的棋盤上擺放八個皇后,使其不能互相攻擊 —— 即任意兩個皇后都不能處于同一行、同一列或同一條斜線上。
現(xiàn)在我們把棋盤擴展到 n × n 的棋盤上擺放 n 個皇后,請問該怎么擺?請編寫程序,輸入正整數 n,輸出全部擺法(棋盤格子空白處顯示句點“.”,皇后處顯示字母“Q”,每兩格之間空一格)。

輸入格式

正整數 n (0 < n ≤ 12)

輸出格式

若問題有解,則輸出全部擺法(兩種擺法之間空一行),否則輸出 None。
要求:試探的順序逐行從左往右的順序進行,請參看輸出樣例2。

輸入樣例1

3

輸出樣例1

None

輸入樣例2

6

輸出樣例2

. Q . . . .. . . Q . .. . . . . QQ . . . . .. . Q . . .. . . . Q .. . Q . . .. . . . . Q. Q . . . .. . . . Q .Q . . . . .. . . Q . .. . . Q . .Q . . . . .. . . . Q .. Q . . . .. . . . . Q. . Q . . .. . . . Q .. . Q . . .Q . . . . .. . . . . Q. . . Q . .. Q . . . .

源代碼

設計思路

本題調試過程碰到的問題及解決方法

pta運行結果截圖

題目四 7-1 求迷宮最短通道

遞歸求解迷宮最短通道的總步長。輸入一個迷宮,求從入口通向出口的可行路徑中最短的路徑長度。為簡化問題,迷宮用二維數組 int maze[10][10]來存儲障礙物的分布,假設迷宮的橫向和縱向尺寸的大小是一樣的,并由程序運行讀入, 若讀入迷宮大小的值是n(3<n<=10),則該迷宮橫向或縱向尺寸都是n,規(guī)定迷宮最外面的一圈是障礙物,迷宮的入口是maze[1][1],出口是maze[n-2][n-2], 若maze[i][j] = 1代表該位置是障礙物,若maze[i][j] = 0代表該位置是可以行走的空位(0<=i<=n-1, 0<=j<=n-1)。求從入口maze[1][1]到出口maze[n-2][n-2]可以走通的路徑上經歷的最短的總步長。要求迷宮中只允許在水平或上下四個方向的空位上行走,走過的位置不能重復走。

輸入格式:

輸入迷宮大小的整數n, 以及n行和n列的二維數組(數組元素1代表障礙物,0代表空位)

輸出格式:

若有可行的通道則輸出一個整數,代表求出的通道的最短步長;若沒有通道則輸出"No solution"

輸入樣例:

10
1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1 0 1
1 0 0 0 0 1 1 0 0 1
1 0 1 1 1 0 0 0 0 1
1 0 0 0 1 0 0 0 0 1
1 0 1 0 0 0 1 0 0 1
1 0 1 1 1 0 1 1 0 1
1 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
上述輸入代表的是如下這樣一個迷宮:


其中紅色的小方塊是障礙物,藍色的小方塊是空位,白色的小圓連起來是一條從入口到出口的通道,兩個圓之間代表一個步長。

輸出樣例:

14

源代碼

設計思路

本題調試過程碰到的問題及解決方法

pta運行結果截圖

預習作業(yè)

第十二周的教學內容是:第十一章 指針進階
請大家查閱資料,思考如下問題:
請舉實例解釋以下幾個概念:數組指針,指針數組,指針函數,函數指針,二級指針,單向鏈表。(無實例不給分)
請用自己的理解回答。如果有引用他人的文字,請一定要標出出處(使用Markdown的鏈接方式)。

本周代碼行數和博客字數記錄

時間代碼行博客字數用時(h)知識點
3.19~3.2010050010h二維數組的使用;選擇排序和冒泡排序法
3.26~3.2915012006h如何定義和使用指針;掌握字符串的基本概念及使用方法,重點理解字符串與一維字符數組的區(qū)別、字符串的存儲以及字符串的操作方法。
4.2~4.58518626h理解變量、內存單元和地址之間的關系;掌握如何定義指針變量,怎樣使用指針變量,怎樣進行指針變量的初始化;掌握指針變量的基本運算;理解指針作為函數參數的作用;掌握如何使用指針實現(xiàn)函數調用返回多個值。
4.10~4.1210920686h掌握數組名作為函數參數的用法,理解指針、數組和地址之間的關系,理解指針和數組可以實現(xiàn)相同的操作。
4.17~4.19128189210h掌握常用字符串函數以及使用指針操作字符串的方法,掌握動態(tài)內存分配
4.24~4.268418848h能夠根據實際情況合理定義結構,能夠使用結構變量與結構數組進行熟練編程,掌握結構指針的操作,并應用于函數傳遞。
5.7~5.1020030006h能夠對相對復雜的問題,合理定義程序的多函數結構;能夠使用遞歸函數進行編程;掌握宏的基本用法;掌握編譯預處理的概念。

我的感想

本周學習了多函數結構,遞歸函數,宏,還是不怎么了解,題目好復雜。

結對編程感想

一個問題兩人做不動的話,就問題蠻大了。

來源:http://www.icode9.com/content-4-186251.html
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C語言——小知識
總結:c語言中指針的學習
快來看看這些c語言的基礎知識你掌握了嗎?
《C語言程序設計(第2版)》第11章指針進階
C語言 自定義函數返回數組的問題
C語言面試題
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服