標籤:core include 相關 簡潔 zha 結果 學習 har 改進
一、PTA實驗作業題目1:6-1 計算兩個複數之積1. 本題PTA提交列表
2. 設計思路
定義兩個結構體型變數imag用來儲存虛部real用來儲存實部定義一個結構體變數product用來儲存運算結果 product.real = x.real * y.real - x.imag * y.imag; product.imag = x.real * y.imag + x.imag * y.real;返回計算所得值
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
本題用的時間不是很長,只是在計算的時候由於沒有注意運算子的優先順序而導致一直輸出不出正確結果,通過調試解決
題目2:7-1 計算職工工資1. 本題PTA提交列表
2. 設計思路
定義結構體worker包括姓名(name)、基本工資(jb)、浮動工資(fd)和支出(zc)實際工資(sj)定義整形變數n用來儲存職員數量i為迴圈變數scanf("%d",&n);定義結構體型數組 wo[n]當i<n時將資訊輸入結構體內並計算wo[i].sj=wo[i].jb+wo[i].fd-wo[i].zc;printf("%s %.2f\n",wo[i].name,wo[i].sj)
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
本題遇到的錯誤有兩個,第一個是在輸出時沒有注意格式而導致的答案錯誤,第二個是由於數組長度定義錯誤而導致的段錯誤,通過問同學而解決
題目1:7-5 有理數比較1. 本題PTA提交列表
2. 設計思路
定義一個結構體變數以及結構體型變數a和b分別用來儲存分子與分母定義兩個結構體型變數x,y分別用來儲存兩次輸入的分子與分母定義整型變數result字元型變數chscanf("%d/%d %d/%d", &x.a, &x.b, &y.a, &y.b)result=x.a*y.b-x.b*y.a如果result為0ch = ‘<‘如果result > 0ch=‘>‘否則ch=‘=‘輸出"%d/%d %c %d/%d\n", x.a,x.b,ch,y.a,y.b
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
本題比較簡單,代碼寫得很順利,放在pta上也是一次性過得,只是我覺得方法還能再改進下,可以使它更簡潔。
二、本周題目集的PTA最後排名
三、閱讀代碼
計算同學們的總成績、平均成績和以及 140 分以下的人數
本題跟這次PTA上的一題很相似,但它用了兩個函數並且簡單地運用了函數嵌套,很值得學習。
四、本周學習總結1.總結本周學習內容
本周學習了結構體相關的知識,具體為結構體的嵌套,結構體與指標的應用還有運用結構體解決簡單的問題。
結構體聲明 struct book{ char title[MAXTITL]; char author[MAXAUTL]; float value; };struct-----表明後面是結構體book -----可選標記,後續程式可以使用該標記引用該結構。{}----花括弧裡是結構成員列表,每個成員都自己聲明描述。;-----結尾處的分號是必須的,表示結構布局定義結束。定義結構變數 struct book library;library ---為結構體變數的變數名。以上的定義可以寫成下面這樣:struct book{char title[MAXTITL];char author[MAXAUTL];float value;}library;也可以簡化成下面這樣:struct {char title[MAXTITL];char author[MAXAUTL];float value;}library;
2.羅列本周一些錯題
程式通過定義學生結構體變數,儲存了學生的學號、姓名和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]structs.score[i]s
程式改錯題: 輸入一個正整數n(3<=n<=10),再輸入n個僱員的資訊(如下表所示),輸出每人的姓名和實發工資(基本工資+浮動工資-支出)。格式: 改正代碼//錯誤碼#include<stdio.h>int main(){ struct emp { char name[10]; float jbg; float fdg; float zc; }; int i,n; printf(“n=”); scanf(“%d”,&n); for(i=0;i<n;i++) scanf(“%s%d%d%d”,emp[i].name,emp[i].&jbg,emp[i].&fdg,emp[i],&zc); for(i=0;i<n;i++) printf(“%5s實發工資:%d\n”, emp[i].name,emp[i].zc); return 0;}參考答案#include<stdio.h>int main(){ struct { char name[10]; float jbg; float fdg; float zc; }emp[10]; //1 int i,n; printf("n="); scanf("%d",&n); getchar(); //2 for(i=0;i<n;i++) { scanf("%s%f%f%f",emp[i].name,&emp[i].jbg,&emp[i].fdg,&emp[i].zc); //3 getchar();} //4 for(i=0;i<n;i++) printf("%5s實發工資:%7.2f\n", emp[i].name,emp[i]. jbg+emp[i]. fdg-emp[i].zc);//5 return 0;}我的作答#include<stdio.h>int main(){ struct emp { char name[10]; float jbg; float fdg; float zc; }; int i,n; struct emp[i] ;//原錯誤碼 printf(“n=”); scanf(“%d”,&n); for(i=0;i<n;i++) scanf(“%s%d%d%d”,emp[i].name,&emp[i].jbg,&emp[i].fdg,&emp[i],zc);//原錯誤碼 for(i=0;i<n;i++) printf(“%5s實發工資:%.0f\n”, emp[i].name,emp[i].zc);//原錯誤碼 return 0;}
C語言部落格作業--結構體