做業要求一:
做業截圖:
C高級第二次做業(1)
6-7:
6-8:
6-9:
7-1:
C高級第二次做業(2):
7-1:
7-2:
C高級第二次做業(3):
6-1:
6-2:
html
做業要求二:
6-7 刪除字符串中數字字符
1.實驗代碼:c++
#include <stdio.h> void delnum(char *s); int main () { char item[80]; gets(item); delnum(item); printf("%s\n",item); return 0; } void delnum(char *s) { int i=0,j=0; while(s[i]!='\0'){ if(s[i]>'9'||s[i]<'0') { s[j]=s[i]; j++; } i++; } s[j]='\0'; }
2.設計思路:
第一步:本題要刪除字符串中數字,經過數組遍歷字符串,遇到數字刪除,將以後的字符向前移動。
第二步:定義變量ij,運用if判斷字符串是否爲數字,循環遍歷字符串和ASCII碼值達到目的。
3.遇到問題:在運用while循環時出現編譯錯誤,經過devc++提示改正
4.流程圖:
git
6-8統計子串在母串出現的次數
1.實驗代碼:算法
#include<stdio.h> int fun(char *str,char *substr); int main() { char str[81]="asdasasdfgasdaszx67asdmklo",substr[4]="asd"; int n; n=fun(str,substr); printf("n=%d\n",n); return 0; } int fun(char *str,char *substr) { int i=0,num=0; do { if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d') { num++; } i++; }while(*(str+i)!='\0'); return num; }
2.設計思路:
第一步:運用if語句和循環來遍歷字符串和判斷字符串是否爲子串;
第二步:遇到子串循環變量加一,循環至末尾輸出。
3.遇到問題:
提交過程當中遇到了不少次編譯錯誤,經過devc++提示改正。
幾回答案錯誤是由於把I++放錯了位置,仔細檢查改正過來。編程
6-9字符串中除首尾字符外的其他字符按降序排列
1.實驗代碼:數組
#include <stdio.h> int fun(char *s,int num); int main() { char s[10]; gets(s); fun(s,7); printf("%s",s); return 0; } int fun(char *s,int num) { int i,j; char temp; for(i=0;i<num;i++) { for(j=1;j<num-2;j++) { if(s[j]<s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } } }
2.設計思路:
第一步:定義循環變量,運用循環遍歷數組。
第二步:運用冒泡法進行排序。
3.遇到問題:沒有遇到問題。sass
7-1輸出學生成績
1.實驗代碼:函數
#include<stdio.h> int main() { int n,i; float max,min=100,sum=0,x,average; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%f ",&x); if(x>max) { max=x; } if(x<min) { min=x; } sum=sum+x; average=sum/n; } printf("average = %.2f\n",average); printf("max = %.2f\n",max); printf("min = %.2f",min); return 0; }
2.設計思路:這道題運用了常規的思路,並無想到如何運用指針。
第一步:定義出各個變量。
第二步:運用if語句和計算輸出想要結果。
3.遇到問題:這道題在提交的過程當中也遇到了不少次錯誤,總的來講都是不夠認真所致使。仔細檢查後改正。.net
7-1計算職工工資
1.實驗代碼:設計
#include<stdio.h> struct employees { char name[10]; float basic,floating,out; }; int main() { int n,i=0; scanf("%d",&n); struct employees e[n]; for(i=0;i<n;i++) { scanf("%s %f %f %f",e[i].name,&e[i].basic,&e[i].floating,&e[i].out); } for(i=0;i<n;i++) { printf("%s %.2f\n",e[i].name,e[i].basic+e[i].floating-e[i].out); } }
2.設計思路:
第一步:定義一個結構體,其中含有名字,基本工資,浮動工資和支出。
第二步;在函數中輸入一個n,n爲人數,運用循環輸入各員工的數據,並輸出結果。
3.遇到問題:對於代碼的檢查不夠仔細緻使老是答案錯誤,最後發現輸出結果中的e[i]錯寫爲e[n]。
4.流程圖:
7-2計算平均成績
1.實驗代碼:
#include<stdio.h> #include<stdlib.h> struct student { char name[10]; char num[5]; int score; }; int main() { int n,i=0; float average,sum=0; scanf("%d",&n); struct student s[n]; for(i=0;i<n;i++){ scanf("%s %s %d",s[i].num,s[i].name,&s[i].score); sum=sum+s[i].score; } average=(float)(sum/n*1.0); printf("%.2f\n",average); for(i=0;i<n;i++) { if((float)(s[i].score)<average) { printf("%s %s\n",s[i].name,s[i].num); } } }
2.設計思路:
第一步:依然是定義一個結構體,其中有姓名 學號和成績;
第二步:在函數中定義出n,i,sum,average,各值;
第三步;運用循環輸入數據,運用算法計算結果,再次用循環輸出值;
3.遇到問題:沒有遇到問題
6-1 按等級統計學生成績
1.實驗代碼:
#include <stdio.h> #define MAXN 10 struct student{ int num; char name[20]; int score; char grade; }; int set_grade( struct student *p, int n ); int main() { struct student stu[MAXN], *ptr; int n, i, count; ptr = stu; scanf("%d\n", &n); for(i = 0; i < n; i++){ scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); } count = set_grade(ptr, n); printf("The count for failed (<60): %d\n", count); printf("The grades:\n"); for(i = 0; i < n; i++) printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade); return 0; } int set_grade( struct student *p, int n ) { int i, count = 0; for(i = 0;i < n;i ++,p++){ if((*p).score <=100 && (*p).score >= 85){ (*p).grade = 'A'; }else if((*p).score <85 && (*p).score >= 70){ (*p).grade = 'B'; }else if((*p).score && (*p).score >= 60){ (*p).grade = 'C'; }else{ (*p).grade = 'D'; count ++; } } return count; }
2.設計思路:
第一步:定義變量i和count.
第二步:經過循環和if語句判斷學生成績,最後返還count值;
3.遇到問題:沒有遇到問題。
6-2結構體數組按總分排序
1.實驗代碼:
#include <stdio.h> struct student { int num; char name[15]; float score[3]; float sum; }; void calc(struct student *p,int n); void sort(struct student *p,int n); int main() { struct student stu[5]; int i,j; float f; for(i=0;i<5;i++) { scanf("%d%s",&stu[i].num,stu[i].name); for(j=0;j<3;j++) { scanf("%f",&f); stu[i].score[j]=f; } } calc(stu,5); sort(stu,5); for(i=0;i<5;i++) { printf("%5d%15s",stu[i].num,stu[i].name); printf(" %.1f %.1f %.1f %.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum); } return 0; } void calc(struct student *p,int n) { int i=0; for(i=0;i<n;i++){ p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2]; } } void sort(struct student *p,int n) { int j=0,i=0; struct student a; for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(p[j].sum<p[j+1].sum) { a=p[j]; p[j]=p[j+1]; p[j+1]=a; } } } }
2.設計思路:起初並無設計思路,然後仍是求助於大佬趙寅勝。
第一步:在void calc這一函數中求出各同窗成績和;
第二步:在void sort函數中用冒泡法將結果排序;
3.遇到問題:在編程過程當中遇到了不少問題,比較突出的就是編譯錯誤,這是結構指針沒有熟練掌握所致使的。最後仍是趙寅勝大佬指出個人指針錯誤運用。
4.流程圖:
做業要求三:
上傳至git
地址: https://coding.net/u/AssassinCreed/p/Devil-May-Cry/git/tree/master/?public=true
截圖:
做業要求四
表格:
折線圖:
做業要求五:
評論同窗:
顧家瑋:http://www.cnblogs.com/qq807443119/p/8747414.html
班慶澤:http://www.cnblogs.com/wsbqz/p/8746704.html
高立彬:http://www.cnblogs.com/gao628526/p/8665187.html