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

來源:互聯網
上載者:User

標籤:after   不可   odi   奇數   整型   依次   core   斷行符號   為什麼   

一、PTA實驗作業題目1:6-3 結構體數組中尋找指定編號人員1. 本題PTA提交列表

2. 設計思路
    定義結構體變數q,迴圈變數i    for i=0 to i<N-1    判斷要查詢的編號是否存在    如果存在,賦值給q,結束迴圈    end for     返回結構體變數q
3.代碼

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

剛開始不太理解返回空串

題目2:7-1 計算職工工資1. 本題PTA提交列表

2. 設計思路
    職員資訊結構定義    定義整型變數i用於迴圈,n代表有幾位職員    輸入n的值    定義結構體數組salarys[n]    for i=0 to i<n            錄入職員資訊,並計算出實發工資是多少    end for    for i=0 to i<n             輸出每位職員的實發工資    end for
3.代碼

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

基本工資、浮動工資和支出都定義成整型的,只有實發工資是浮點型的,題目看的不夠認真

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

2. 設計思路
    通訊錄資訊結構定義    定義整型變數i、j用於迴圈,n表示有幾個通訊錄好友,k表示要查詢的次數,num表示要查詢的編號    輸入n的值    定義結構體數組list[n]    for i=0 to i<n        錄入通訊錄好友資訊    end for    輸入k的值    for i=0 to i<k        輸入num的值        如果num大於等於0並且小於n            for j=0 to j<n                如果要查詢的編號存在,輸出該條記錄            end for        否則輸出Not Found    end for
3.代碼

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

最初將生日也定義成字元型的,但是只有部分正確,詢問同學後改成整型的就可以了,但是還是有點不懂為什麼字元型的不可以
電話號碼和手機號碼定義的時候,數組長度不夠大

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

三、閱讀代碼
#include <stdio.h> int fibonaci(int i){   if(i == 0)   {      return 0;   }   if(i == 1)   {      return 1;   }   return fibonaci(i-1) + fibonaci(i-2);} int  main(){    int i;    for (i = 0; i < 10; i++)    {       printf("%d\t\n", fibonaci(i));    }    return 0;}

用遞迴的方法

四、本周學習總結1.總結本周學習內容。結構體:
結構體可以處理不同類型的資料。結構體每一位成員都用來表示一種具體事務的屬性。結構體總空間大小,等於各成員總長度
    struct 結構名 {      類型名 結構成員名1;      類型名 結構成員名2;      ···     類型名 結構成員名n;};
共用體:
共用體是一種多變數共用儲存空間的構造類型,它允許幾種不同的變數共用同一儲存空間。共用體成員可以表示多種屬性(同一儲存空間可以儲存不同類型的資料)。共用體空間等於最大成員佔據的空間。共用體常用來節省記憶體。
    union  共用體名        { 成員表列        }變數表列;
        union uarea       {                     char    c_data;                    short   s_data;                    long     l_data;       }
枚舉:
若一個變數只有幾種可能的值,可以定義為枚舉類型。將變數的值一一列舉出來,變數的值只限於列舉出來的值的範圍內
    enum weekday{sun,mon,tue,wed,thu,fri,sat};    enum weekday,week_end;

同時定義類型和變數

    enum weekday{sun,mon,tue,wed,thu,fri,sat}    workday,week_end;

枚舉元素為常量,sun、mon...sat的值依次為0、1...7

遞迴函式原理

遞迴就是子程式(或函數)直接調用自己或通過一系列調用語句間接調用自己,是一種描述問題和解決問題的基本方法。
  遞迴通常用來解決結構自相似的問題。所謂結構自相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的解決,可以分為兩部分:第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規模小。實際上,遞迴是把一個不能或不好解決的大問題轉化為一個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。因此,遞迴有兩個基本要素:
 
    (1)邊界條件:確定遞迴到何時終止,也稱為遞迴出口。
 
    (2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果
 
在遞迴函式中,調用函數和被調用函數是同一個函數,需要注意的是遞迴函式的調用層次,如果把調用遞迴函式的主函數稱為第0層,進入函數後,首次遞迴調用自身稱為第1層調用;從第i層遞迴調用自身稱為第i+1層。反之,退出第i+1層調用應該返回第i層。

2.羅列本周一些錯題。
線性表用順序實現。請填空寫一個求線性表L 中所有奇數之和的演算法。  例如:   L=(1,2,3,4,5) 其和為 9(本題結構體定義很不錯。)#include <stdio.h>#define N 10typedef struct sqlist {   int data[N];   int last;   }LIST; int Total(List list) {     return sum;   } void Show(LIST list) {   int i;   for(i=0;i<=list.last;i++)      printf("%3d", list.data[i]);   printf("\n"); }int main() {    LIST list;    int i,sum;    for(i=0;i<=5;i++)     list.data[i]=i;    list.last=5;    Show(list);    sum=Total(list);    printf("sum=%3d\n",sum);    return 0;}參考答案int sum=0;for(int i=0;i<=list.last;i++)   if(list.data[i]%2)      sum+=list.data[i];
我的作答

int sum=0,i;
for(i=0;i<5;i++)
if(list.data[i]%2!=0)
sum=sum+list.data[i];
sum=sum+list.last;
做題的時候沒充分理解list.last表示的到底是什麼,導致理解有偏差

程式通過定義學生結構體變數,儲存了學生的學號、姓名和3門課的成績。 函數fun的功能是將形參a所指結構體變數s中的資料進行修改,並把a中地址作為函數值返回主函數,在主函數中輸出修改後的資料。例如:a所指變數s中的學號、姓名、和三門課的成績依次是: 10001、" ZhangSan "、95、80、88, 修改後輸出t中的資料應為:10002、"LiSi "、96、81、89。注意:按照順序填代碼,不要帶編號1,2,3,4。空格或斷行符號隔開。#include  <stdio.h>#include  <string.h>struct student {  long  sno;  char  name[10];  float  score[3];}; ______2__________ Modif(struct student  *p){   int  i;   p->sno = 10002;   strcpy(p->name, "LiSi");   for (i=0; i<3; i++)       ______3_______++;   return _____4________;}void main(){  struct student  s={10001,"ZhangSan", 95, 80, 88},  *t;  int  i;  printf("\n\nThe original data :\n");  printf("\nNo: %ld  Name: %s\nScores:  ",s.sno, s.name);  for (i=0; i<3; i++)     printf("%6.2f ", ___1____);  printf("\n");  t = Modif(&s);  printf("\nThe data after modified :\n");  printf("\nNo: %ld  Name: %s\nScores:  ",t->sno, t->name);  for (i=0; i<3; i++)    printf("%6.2f ", t->score[i]);  return 0;}參考答案s.score[i]struct student *p->score[i]p
我的作答

s.score[i]
struct student
p->score[i]
p
第二空沒填對體現了自己對函數的形參理解還不夠

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.