C語言部落格作業--結構體

來源:互聯網
上載者:User

標籤:過程   姓名   覆蓋   blog   i+1   需要   class   語句   images   

一、PTA實驗作業題目1:6-4 結構體數組按總分排序1. 本題PTA提交列表

2. 設計思路
void calc 函數部分(計算每位同學成績總和)      i=0;     for  i to  n-1        總成績=三科成績總和    end;void sort 函數部分 (通過比較每位同學成績總和,對同學進行排序)          定義 i,j;        定義結構變數 temp         for i=1 to n           for j=0  to n-i            利用冒泡排序將同學的總分的從大到小排序    end;
3.代碼

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

計算總和時直接用sum=sum+score[i],發現運行後總和數並沒有相加,是要用結構指標間接訪問結構變數,後來改為p+i)->sum=(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2]可以計算成績總和;開始時是用選擇排序法,但發現發現過於複雜,後來換用冒泡排序,簡單

題目2:7-5 有理數比較1. 本題PTA提交列表

2. 設計思路
   定義結構變數;      int flag;      char ch;      輸入這兩個有理數number1,number2       flag=number1.fenzi*number2.fenmu-number2.fenzi*number1.fenmu      判斷flag的大小,從而確定ch的值       如若flag>0         ch=‘>‘;        若flag<0         ch=‘<‘        否則          ch=‘=‘          輸出兩個有理數比較後的結果             end   
3.代碼

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

開始時直接用兩有理數相減,但發現分子,分母都是整型範圍內整數,相除後不會保留小數;後來定義結構變數,分別定義分子,分母和分號;
再根據兩有理數分子,分母的關係,判斷ch的值就可以了

題目3:7-6 通訊錄的錄入與顯示1. 本題PTA提交列表

2. 設計思路
定義結構變數     定義結構變數表     輸入n    for i=0  to  n-1       輸入姓名 生日 性別 固話 手機      輸入k    for  i=0  to  k-1          輸入尋找編號num[i]    判斷num[i]是否在0~10之間,若在,則輸出相應的人員資訊    若不在,則輸出Not Found     
3.代碼

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

這題部分正確的原因是輸出錯誤,與原題要求的輸出符號錯了,其他沒什麼

二、本周題目集的PTA最後排名。三、閱讀代碼四、本周學習結1.總結本周學習內容。結構體 共同體 枚舉體結構體:概念:結構體時一種構造資料類型用途:把不同類型的資料群組合成一個整體記憶體:各成員所佔記憶體空間的累加關鍵詞:struct

一.結構體的聲明與定義變數的方法一共有三種:

1.常規定義:

struct AA
{
int a;
int b;
}; //注意大括弧後面有分號
變數定義:struct 機構體名 結構體變數名表
如: struct AA aa,bb;(前面的struct不能掉)
成員調用:aa.a; aa.b;

2.尾部定義。

struct CC
{
int a;
int b;
}aa,bb;
此時aa,bb就是已經定義好的CC類型的變數了,這種情況在聲明時struct前就一定不能加typedef,如果加上了,aa,bb就成了和CC一樣的結構體類型了,而不是變數了。

3.無名結構體

struct CC
{
int a;
int b;
}vip1,vip2;
此種情況除了vip1,vip2,不能再在其他地方定義新的變數,即定義了幾個就只能用幾個。

不能在結構體內部直接給成員賦值:

#include<stdio.h>  //直接帶變數名Huqinwei  struct stuff{  //      char job[20] = "Programmer";  //      char job[];  //      int age = 27;  //      float height = 185;  }Huqinwei; 12345678https://yq.aliyun.com/articles/104171
共用體:

構造資料類型,也叫聯合體。
用途: 使幾個不同類型的資料共佔一段記憶體(相互覆蓋)

關鍵詞:union特點:

1共用體變數任何時候只有一個變數存在。
2,共用體變數定義分配記憶體,長度=最長成員所在位元組數
3,定義共用體變數的方式和結構體一樣有三種:常規,尾部,無名。
4,當給一個成員重複賦值時或對多個成員賦值時,只承認最後一次的賦值。

枚舉體關鍵詞:enum

用途:列舉所有選項
舉例:day = {Sunday,Monday,Tuesday,Wednesday,Thusday,Friday,Saturday};
結尾有分號,如果個枚舉常量沒有賦值,則預設值為其下標(參考一維數組),比如此時Tuesday = 2

遞迴函式的原理

遞迴(recursion)就是子程式(或函數)直接調用自己或通過一系列調用語句間接調用自己,是一種描述問題和解決問題的基本方法。

遞迴通常用來解決結構自相似的問題。所謂結構自相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的解決,可以分為兩部分:第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規模小。實際上,遞迴是把一個不能或不好解決的大問題轉化為一個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。因此,遞迴有兩個基本要素:(1)邊界條件:確定遞迴到何時終止,也稱為遞迴出口。(2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果

在遞迴函式中,調用函數和被調用函數是同一個函數,需要注意的是遞迴函式的調用層次,如果把調用遞迴函式的主函數稱為第0層,進入函數後,首次遞迴調用自身稱為第1層調用;從第i層遞迴調用自身稱為第i+1層。反之,退出第i+1層調用應該返回第i層。

遞迴函式的內部執行過程

一個遞迴函式的調用過程類似於多個函數的嵌套的調用,只不過調用函數和被調用函數是同一個函數。為了保證遞迴函式的正確執行,系統需設立一個工作棧。具體地說,遞迴調用的內部執行過程如下:(1)運動開始時,首先為遞迴調用建立一個工作棧,其結構包括值參、局部變數和返回地址;(2)每次執行遞迴調用之前,把遞迴函式的值參和局部變數的當前值以及調用後的返回地址壓棧;(3)每次遞迴調用結束後,將棧頂元素出棧,使相應的值參和局部變數恢複為調用前的值,然後轉向返回地址指定的位置繼續執行。 

2.羅列本周一些錯題

1.輸出應是s.score,應加上結構變數名 2.定義結構體指標,struct student *; 3.分數加一,應加上變數名,p->score[i]或p.score[i] 4.返回的是學生的所有相關資訊,不止是成績


1.定義結構體變數 struct worker s[10] 2.name[20]是地址,不用加&,其他的需加& 即&s[i].num, s[i].name ,&s[i].jbpay,&s[i]zwpay 3,max=i 4.min=i

fun()函數定義了一個數及數組,但D選項中fun(int n ,int a)不可以這麼寫,這樣a是一個整型數,並不是一個數組

C語言部落格作業--結構體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.