做業1:html
第一步:定義主函數
第二步:定義數組,用do while語句判斷字符是否爲數字,不是則s[j]=s[i];j++;循環後將最後一位賦值‘\0’git
、 #include<stdio.h> void delnum(char *s) { int i=0,j=0; do { if(!(s[i]>='0'&&s[i]<='9')) { s[j]=s[i]; j++; } i++; } while(s[i]!='\0'); s[j]='\0'; } 、
開始出現思路錯誤,換一種思路後沒有遇到問題。算法
第一步:定義主函數
第二步:定義指針,循環變量i和總數num,當字符不爲空字符時,若是字符爲'a','s','d'的一種,則num++,統計出num的值,最後返回num數組
、 #include<stdio.h> int fun(char *str,char *substr) { int i=0,num=0; while(*(str+i)!='\0') { if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d') { num++; } i++; } return num; }
本題沒有問題。函數
第一步:定義主函數
第二步:定義指針,循環變量i,j,置換字符temp,用for循環判斷兩個字符數值大小,將數值大的字符置換至前面,再用一個for循環排除首末位,輸出字符串。學習
、 #include <stdio.h> 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;} } } 、
在第二個for循環去掉首末位時出現幾回錯誤,嘗試幾回後錯誤排除。.net
第一步:定義變量,輸入學生人數
第二步:for循環判斷成績的大小,得出最大最小值和總和
第三步:輸出最高成績,最低成績,平均成績設計
、 #include<stdio.h> int main() { int n,i; float max,min=200,sum=0,cj; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%f ",&cj); if(cj>max) { max=cj; } if(cj<min) { min=cj; } sum=sum+cj; } printf("average = %.2f\n",sum/n); printf("max = %.2f\n",max); printf("min = %.2f",min); return 0; } 、
做業2:3d
第一步:定義結構體,數組,變量
第二步:輸入人數,引用結構體
第三步:用for循環輸入數據,輸出結果指針
、 #include<stdio.h> struct work { char name[10]; float jiben; float fudong; float zhichu; float sum; }; int main() { int n,i; scanf("%d",&n); struct work a[n]; for(i=0;i<n;i++) { scanf("%s %f %f %f",&a[i].name,&a[i].jiben,&a[i].fudong,&a[i].zhichu); a[i].sum=(a[i].jiben+a[i].fudong)-a[i].zhichu; printf("%s %.2f\n",a[i].name,a[i].sum); } } 、
本題沒有問題。
第一步:定義結構體,數組,變量
第二步:輸入人數,引用結構體
第三步:for循環輸入數據,計算平均成績並輸出,另外一個for循環比較成績與平均數成績的大小,若是成績小於平均成績則輸出姓名學號
、 #include<stdio.h> struct student { char xuehao[6]; char name[10]; int grade; }; int main() { int n,i,sum=0; float average; scanf("%d",&n); struct student a[n]; for(i=0;i<n;i++) { scanf("%s %s %d",a[i].xuehao,a[i].name,&a[i].grade); sum=sum+a[i].grade; average=1.0*(sum/n); } printf("%.2f\n",average); for(i=0;i<n;i++) { if(a[i].grade<average) { printf("%s %s\n",a[i].name,a[i].xuehao); } } } 、
開始將學號的字符串定義爲5位致使沒法結束字符串,修改位數後輸出正常。
做業3:
第一步:觀察主函數定義
第二步:定義循環變量,不及格人數,for循環判斷是否不及格,不及格則num++,另外一個for循環判斷分數等級
、 #include <stdio.h> #define MAXN 10 int set_grade( struct student *p, int n ) { int j=0,num=0; for(j=0;j<n;j++) { if(p[j].score<60) { num++; } } for(j=0;j<n;j++) { if((p[j].score)>=85&&(p[j].score)<=100) { (p[j].grade)='A'; }else if((p[j].score)>=70&&(p[j].score)<=84) { (p[j].grade)='B'; }else if((p[j].score)>=60&&(p[j].score)<=69) { (p[j].grade)='C'; }else if((p[j].score)>=0&&(p[j].score)<=59) { (p[j].grade)='D'; } } return num; }
本題沒有問題。
主要描述題目算法
第一步:觀察主函數定義
第二步:第一個函數for循環求出分數總和,第二個函數for循環比較兩人分數總和,分數高的置換到前面。
、 void calc(struct student *p,int n) { int i; 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 i,j=0; struct student t; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(p[i].sum<p[j].sum) { t=p[i]; p[i]=p[j]; p[j]=t; } } } } 、
第二個函數的for循環j的初始值最初出現錯誤,修改後正確。
郭釗毅 http://www.cnblogs.com/nothingistrue/p/8747979.html
班慶澤 http://www.cnblogs.com/wsbqz/p/8746704.html
豐大爲 http://www.cnblogs.com/DavidPark/p/8664273.html