C語言第八次博客作業--字元數組

来源:http://www.cnblogs.com/lmb171004/archive/2017/12/10/8003804.html
-Advertisement-
Play Games

一、PTA實驗作業 題目1:查驗身份證 1. 本題PTA提交列表 2. 設計思路 3.代碼截圖 4.本題調試過程碰到問題及PTA提交列表情況說明。 部分正確 :將x改為大寫x 題目2:藏頭詩 1. 本題PTA提交列表 2. 設計思路 3.代碼截圖 4.本題調試過程碰到問題及PTA提交列表情況說明。 ...


一、PTA實驗作業

題目1:查驗身份證

1. 本題PTA提交列表

2. 設計思路

定義i,flag=1,z,m[11],a[19]
輸入次數n
for i=1 to n+1
   gets(a)
   加權求和在取餘計算z
   switch(z)
   對應查看a[17]與校驗碼是否一致
   若不一致,flag=0,輸出錯誤身份證
若flag=1,則說明全對

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明。

  • 部分正確 :將x改為大寫x

題目2:藏頭詩

1. 本題PTA提交列表

2. 設計思路

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明。

本題題目很好理解,在DEV上寫的時候發現了自己兩個問題

1.對一個漢字占兩個位元組沒理解。存儲一個漢字需要兩個位元組,而char類型是一個位元組,所以一個中文字占用2個位元組來存儲及輸出。

  • 調試過程:

本想通過調試看變數,但發現調試看不出毛病在哪裡。再瀏覽了一遍發現自己只在定義時保證了儲存空間足夠,而在對新詩賦值時卻沒有意識到要兩個位元組來表示一個漢字。

pome_[2*i]=pome[i][0];//對新詩賦值 
pome_[2*i+1]=pome[i][1];

2.忽略了字元數組結束標誌

  • 調試過程:

pome_[2*i]='\0';//標誌結束

題目2:輔音大寫字母

1. 本題PTA提交列表

2. 設計思路

定義i,num=0,a[80]
輸入字元串,接收到\n以\0結尾
for i=0 to a[i]='\0'
   if a[i]是大寫字母
       if a[i]不是A,E,I,O,U  num++
輸出num

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明。

沒什麼大問題,題目沒看清

二、截圖本周題目集的PTA最後排名。

三、同學代碼結對互評

1.互評同學名稱

王宵瑩

2.我的代碼、互評同學代碼截圖

我的代碼

宵瑩的代碼

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。

四、本周學習總結

1.你學會了什麼?

1.1指針變數如何定義(設計代碼可以用markdown代碼符號渲染)?

int *p1 *p2;
p1=&a;
p2=p1;

1.2 指針加法運算運用在哪種情況,2個指針變數能否相加?

指針+常數=常數*指針所指類型大小
指針相當於一個地址,兩個指針求和無意義。

1.3 指針不賦初值,直接使用,會出現什麼情況,請用DEVC驗證,並截圖展示?

  • 指針的初始值必須是一個地址,決不允許賦予任何其他數據,通常是一個數據的地址或地址變數或空指針。未初始化的指針,它指向的記憶體的值是不可預知的,很多時候程式崩潰都因為指針未被初始化或指向了錯誤的地方。

1.4 課堂派上關於分離浮點數的整數部分和小數部分那題,請用DEVC驗證實現,併在此貼圖展示,同時說明哪句是指針變數做函數形參,函數實參應該怎麼表示。指針變數做函數形參有什麼用處?

#include<Stdio.h>
void splitfloat (float x, int *intpart,float *fracpart);
int main()
{
    float x,fracpart;//定義拆分數,小數 
    int intpart;//定義整數 
    scanf("%f",&x);//輸入拆分數 
    splitfloat (x,&intpart,&fracpart);//調用函數 
    printf("該實數的整數部分為:%d\n",intpart);//輸出 
    printf("該實數的小數部分為:%f\n",fracpart);
    return 0;
} 
void splitfloat (float x, int *intpart,float *fracpart)
{
    float k;
    k=x-(int)x;
    *intpart=(int)x;
    *fracpart=k;
}

void splitfloat (float x, int *intpart,float *fracpart)這句是指針變數做函數形參,函數實參為地址(指針變數)。

  • 用指針變數作函數參數可以將函數外部的地址傳遞到函數內部,使得在函數內部可以操作函數外部的數據,並且這些數據不會隨著函數的結束而被銷毀。利用它也可以使函數返回多個值。並且像數組、字元串、動態分配的記憶體等都是一系列數據的集合,沒有辦法通過一個參數全部傳入函數內部,只能傳遞它們的指針,在函數內部通過指針來影響這些數據集合。

1.5 請把課本的冒泡排序的函數改成指針變數做形參格式,並把代碼寫在底下,註意用markdown語法渲染。

void bubble (int *p ,int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
        for(j=0;j<n-i;j++)
        {
            if(*p>*(p+1))
            {
                t=*p;
                *p=*(p+1);
                *(p+1)=t;   
            }   
        }   
    for(i=0;i<n;i++)
        printf("%d",*(p+i)); 
}

1.6 如何定義一個指針變數指向數組,如何用指針變數表示數組元素?

int a[],*p;
p=a<=>p=&a[0];//指針變數指向數組第一個元素的地址
a[99]<=>*(p+99)<=>p[99]//三者等價

1.7 如何定義字元指針指向字元串?指針指向字元串後,初始位置在哪裡?

char *sp="point";

指針會指向該字元串的首字元

1.8 利用字元指針操作字元串,如設計函數實現字元串連接,請在此貼圖展示代碼。說明指針表示字元的方法好處是什麼?

void line(char *p1, char *p2)
{
    while(*p1)
    {
        p1++;
    }
    while(*p2)
    {
        *p1 = *p2;
        p1++;
        p2++;
    }
    *p1='\0';
}
  • 通過指針能實現所謂的“傳引用”而不是“傳值”,本質上節約了數據傳輸性能

2.本周你不會內容有什麼?

2.1 課堂派錯題羅列及如何訂正。

2.2 其他不會的?打算怎麼解決

3.數組上機考試小結

3.1 那題錯了,請羅列?

前兩個函數題沒做出來,剛開始看第一題沒什麼思路,就開始倒著寫,等寫到倒數第2題那個輸出字元間字元子串時,一直卡在那裡,後來打算先放下繼續做,等做到函數題時時間已經沒剩下多少了。

3.2 錯題如何訂正,為什麼錯了


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 前言 HashMap是非線程安全的,在多線程訪問時沒有同步機制,併發場景下put操作可能導致同一數組下的鏈表形成閉環,get時候出現死迴圈,導致CPU利用率接近100%。 HashTable是線程安全的,使用synchronized鎖住整個table的方式來保證併發訪問下的線程安全,但效率卻比 ...
  • ...
  • 基於資料庫的自動化生成工具,根據資料庫表結構自動生成JavaBean、自動生成MyBaits的Mapper映射配置文件、自動生成資料庫設計文檔、自動生成各種SQL等。支持MySQL、Oracle、SQLServce、PostgreSQL四種資料庫,支持Window、Linux、MacBook等多個... ...
  • 1、作用域public,private,protected,以及不寫時的區別 答: 區別如下: 2、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面) 答: 匿名的內部類是沒有名字的內部類。 ...
  • 1. 列表list 1.1 切片# 定義一個list。list = [1, 2, 3, 4, 5] 從左往右讀取字元(預設步長為 1 )。如:list[-2:-1] # 返回一個list數據類型,[6]list[2] # 返回一個int數據類型, 3 從右往左讀取字元串(預設步長為 1 )。如:li ...
  • 在開發項目時,有時候需要用到上傳功能,比如頭像上傳等,其文件會保存到伺服器中。但是我發現在用eclipse做項目的過程中,每次重新部署項目,原來上傳的文件就會丟失。 其原因是因為每次項目修改後,eclipse會把我們放在工作空間workspace中的這個項目拷貝到伺服器下(如tomcat的webap ...
  • ...
  • 在學習有關java枚舉的時候,我們知道了所有的枚舉類型均是繼承自java.lang.Enum類的,且所有的枚舉常量均是該枚舉類型的一個對象,且對象名即為該枚舉常量的名稱。例子如下:源碼: 反編譯後的代碼: 在寫代碼的時候,由於輸入法切換的問題,發現枚舉常量的常量名稱居然是可以使用中文的。代碼如下: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...