C語言——第三次做業

#做業要求一# 題目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)的代碼行數和所用時間、博客字數和所用時間

相關文章
相關標籤/搜索