#做業要求一# 題目6-1 輸出月份英文名 html
題目6-2 查找星期 c++
題目6-3 計算最長的字符串長度 git
題目6-4 指定位置輸出字符串 算法
做業:C高級第三次做業(2)沒有思路,知識點也沒有明白,未完成。 #做業要求二# ##題目6-1 輸出月份英文名## 1.設計思路 (1)主要描述題目算法 第一步:題目要求設計getmonth函數來返回輸入的n相應月份的英文單詞。 第二步:定義變量i,定義字符串數組,含有各個月份的英文單詞。 第三步:使用for循環遍歷數組,經過if判斷來返回n相應的月份。由於輸入的n爲月份因此要大於或等於1才能夠獲得相應月份,因此循環內的if條件爲n=i+1. 第四步:最後,若是n不是月份則返回NULL。 (2)流程圖 主函數: 編程
調用函數: 2.實驗代碼數組
char *getmonth( int n ) { int i; char *month[12]={"January","February","March","April","May","June","July","August","September","October","November","December"}; for(i=0;i<12;i++) { if(n==i+1) { return *(month+i); } } if(n<=0||n>=13) { return NULL; } }
3.本題調試過程碰到問題及解決辦法 本題無問題,但在第一次提交時有一個分號打成了逗號致使編譯錯誤,經過dev-c++編譯找出,已改正,下次應注意。 ##題目6-2 查找星期## 1.設計思路 (1)主要描述題目算法 第一步:本題要求設計getindex函數,查找輸入星期對應的序號。 第二步:定義變量i,定義返回變量「xuhao」值爲-1,用做返回值。定義字符串數組,包含七個星期英文名。根據對應序號注意將星期日放在最前面。 第三步:使用for循環遍歷數組,利用if判斷,當找到輸入的與數組中的字符串一致時將i賦給「xuhao」。 第四步:返回「xuhao」。 2.實驗代碼函數
int getindex( char *s ) { int i; int xuhao=-1; char *week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; for(i=0;i<7;i++) { if(strcmp(s,*(week+i))==0) { xuhao=i; } } return xuhao; }
3.本題調試過程碰到問題及解決辦法 問題:if判斷條件使用「==」直接判斷字符串是否相等,答案錯誤。 解決辦法:經過網上查詢得知c語言中要比較字符串不支持使用關係運算符,需使用函數。使用strcmp函數比較則答案正確。 ##題目6-3 計算最長的字符串長度## 1.設計思路 (1)主要描述題目算法 第一步:本題要求實現一個函數,用於計算有n個元素的指針數組s中最長的字符串的長度。 第二步:定義循環變量i,最大值max和長度len。 第三步:利用for循環遍歷數組,使用strlen函數求出每一個字符串的長度,max最初爲首個字符串的長度,遇到比它長的就把len賦給max。 2.實驗代碼url
int max_len( char *s[], int n ) { int i; int max=0,len=0; for(i=0;i<n;i++) { len=strlen(*(s+i)); if(max<len) { max=len; } } return max; }
3.本題調試過程碰到問題及解決辦法 由於字母打錯致使編譯錯誤,已改正。 ##題目6-4 指定位置輸出字符串## 1.設計思路 (1)主要描述題目算法 第一步:本題要求實現函數,輸出給定字符串中特定的字符,定義變量i,j,長度len。指針變量p,計算出給定字符串長度賦給len。 第二步:遍歷數組,先利用if找到與ch1相同的字符,將其地址賦給p。在利用循環找到與ch2相同的字符,若存在,輸出字符並換行,若不存在則輸出字符。 第三步:若是沒找到ch1,輸出換行,總體循環以後一樣輸出換行。 2.實驗代碼.net
char *match( char *s, char ch1, char ch2 ) { int i=0,j=0; int len=0; char *p; len=strlen(s); for(i=0;i<len;i++) { if(s[i]==ch1) { p=&s[i]; for(j=i;j<len;j++) { if(s[j]!=ch2) { printf("%c",s[j]); } if(s[j]==ch2) { printf("%c\n",s[j]); return p; } } printf("\n"); return p; } } printf("\n"); return s+i; }
3.本題調試過程碰到問題及解決辦法 本題沒有思路,在網上查到代碼後根據代碼寫出來的思路,提交時狀況「ch1找不到,ch2找到」錯誤,緣由是最後一個return時錯誤的返回p,將p改成s+i,正確。 ##一道編程題## 有一個axb的數組,該數組裏面順序存放了從1到a*b的數字。其中a是你大學號的前三位數字,b是你大學號的後四位數字,好比你的學號是2017023936,那麼數組大小是201 x 3936,數組中順序存放了1到791136(201和3936的積)的整數. 要求用篩選法,把該數組裏的質數找出並打印出來,打印格式爲5個質數一行,數字間用空格隔開。設計
篩選法具體作法是:先把N個天然數按次序排列起來。1不是質數,也不是合數,要劃去。第二個數2是質數留下來,而把2後面全部能被2整除的數都劃去。2後面第一個沒劃去的數是3,把3留下,再把3後面全部能被3整除的數都劃去。3後面第一個沒劃去的數是5,把5留下,再把5後面全部能被5整除的數都劃去。這樣一直作下去,就會把不超過N的所有合數都篩掉,留下的就是不超過N的所有質數。
#include <stdio.h> int main () { int m=20,n=970; int *p = (int *)malloc((m*n) *sizeof(int)); int *q = (int *)malloc((m*n) *sizeof(int)); int i=0,j; for(i=0;i<(m*n);i++) { p[i] = i+1; } for(i=0;i<(m*n);i++) { for(j = i+1;j<=(m*n);j++) { if(p[i] !=1&&p[j] != 1) { if(p[j]%p[i] ==0) { p[j] = 1; } } } } j=0; for(i=0;i<(m*n);i++) { if(p[i] != 1) { printf(" %d",p[i]); j++; } if(j == 5) { printf("\n"); j=0; } } }
#做業要求三# 一、總結兩週裏所學的知識點,回答下列問題? (1)如何理解指針數組,它與指針、數組有何關係?爲什麼能夠用二級指針對指針數組進行操做? 答:指針數組即爲存放指針元素的數組,它以數組的形式存放指針。指針數組在使用時能夠做爲參量使用,與普通的數組使用方法相似。 (2)將C高級第三次PTA做業(1)任何一個題目改成使用二級指針對指針數組進行操做。 (3)用指針數組處理多個字符串有何優點?能夠直接輸入多個字符串給未初始化的指針數組嗎?爲何? 2.Git地址: https://git.coding.net/ZJY15/ZJY15.git
三、點評3個同窗的本週做業(在做業中給出被點評同窗博客的連接),並邀請3名同窗點評你的做業 王姝雯: http://www.cnblogs.com/sun031915/p/8836088.html 趙寅勝: http://www.cnblogs.com/2017023960ZYS/p/8759455.html 豐大爲: http://www.cnblogs.com/DavidPark/p/8778993.html 四、請用表格和折線圖呈現你本週(4/9 8:00~4/23 8:00)的代碼行數和所用時間、博客字數和所用時間