第一步:定義函數。
第二步:從不是空格的第一個字符開始判斷,若是它不在0到9的範圍內就將這個字符從新放到指針s中,按順序進行。
第三步:直到空格中止。html
void delnum(char *s) { int i = 0,j = 0; for(i=0;s[i] != '\0';i++) { if (!(s[i] >= '0' && s[i] <= '9')) { s[j++] = s[i]; } } s[j] = '\0'; }
錯誤1:在定義時忘記在末尾加分號並缺乏一箇中括號形成編譯錯誤。
錯誤2:將j++放在了for循環的外面,形成輸出只有一個數。git
第一步:定義函數。
第二步:由於題目給了固定的輸入和所查找的字符串因此直接經過for循環在不是空格的第一個字符開始尋找連續三個字符都相等的字符串,若是相等則n遞加。
第三步:返回n。數組
int fun(char *str,char *substr) { int i=0,n=0; for(i=0;str[i]!='\0';i++) { if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2])) { n++; } } return n; }
錯誤1:n++錯打成n=+。
錯誤2:應該在for循環中判斷是否爲空格。
函數
第一步:定義函數。
第二步:結合冒泡排序法除去字符串的第一位和最後一位進行排序,定義temp來實現交換。
第三步:結束。學習
int fun(char *s,int num) { int i,temp,j; for(i=1;i<num;i++) { for(j=i+1;j<num-1;j++) { if(*(s+i)<*(s+j)) { temp=*(s+i); *(s+i)=*(s+j); *(s+j)=temp; } } } }
無.net
第一步:定義所需變量,根據要求先輸入。
第二步:將*s中的首地址看作是最大值和最小值,以後判斷若是遇到比它大的數則把新的數賦給最大值,一直到最後一個數,最小值同理。
第三步:計算平均值、輸出、加上動態內存分配,輸出。設計
#include<stdio.h> #include<stdlib.h> int main() { int *s; int N; double average,max,min,sum=0; int i=0; scanf("%d/n",&N); if((s=(int*)malloc(N*sizeof(int)))==NULL) exit(1); for(i=0;i<N;i++) { scanf("%d/n",s+i); } max=*s; min=*s; for(i=0;i<N;i++) { sum=sum+*(s+i); if(*(s+i)>max) { max=*(s+i); } if(*(s+i)<min) { min=*(s+i); } } average=sum/N; printf("average = %.2f\n",average); printf("max = %.2f\n",max); printf("min = %.2f",min); free(s); return 0; }
錯誤1:沒有看到題目中的提示沒有用動態內存分配,一直處於編譯錯誤的狀態,在同窗的幫助下修改完成。
3d
第一步:定義結構,按照其要求定義變量類型。
第二步:輸入並計算平均值。
第三步:輸出。指針
#include<stdio.h> struct employee{ char name[10]; float base; float floating; float payment; }employee1; int main() { int N,i; float fsalary; scanf("%d\n",&N); for(i=0;i<N;i++) { scanf("%s %f %f %f",employee1.name,&employee1.base,&employee1.floating,&employee1.payment); fsalary=employee1.base+employee1.floating-employee1.payment; printf("%s %.2f\n",employee1.name,fsalary); } }
無調試
第一步:定義結構和變量類型。
第二步:輸入並計算平均值。
第三步:經過for循環中if語句判斷分數是否高於平均值,並輸出低於平均分的同窗姓名學號。
#include<stdio.h> struct student{ char num[10]; char name[10]; float grade; }student1[10]; int main() { int N,i; float average,sum=0; scanf("%d\n",&N); for(i=0;i<N;i++) { scanf("%s %s %f",student1[i].num,student1[i].name,&student1[i].grade); sum=sum+student1[i].grade; } average=sum/N; printf("%.2f\n",average); for(i=0;i<N;i++) { if(student1[i].grade<average) { printf("%s %s\n",student1[i].name,student1[i].num); } } }
錯誤1:student打錯了。
錯誤2:剛開始並無將結構變量student1定義成數組因此一直都只能輸出一個未達到平均分的同窗姓名學號。
第一步:定義函數,根據題意可知它判斷學生分數的‘A'、’B‘、’C‘、’D‘等且計算不及格人數。
第二步:經過if語句判斷分別給等級,若是爲’D‘等則count++。
第三步:輸出。
int set_grade( struct student *p, int n ) { int i,count=0; for(i=0;i<n;i++) { if(p[i].score<=100&&p[i].score>=85) { p[i].grade='A'; } if(p[i].score<85&&p[i].score>=70) { p[i].grade='B'; } if(p[i].score<70&&p[i].score>=60) { p[i].grade='C'; } if(p[i].score<60) { p[i].grade='D'; count++; } } return count; }
最後一個if判斷出現了else,前面的‘A'、’B‘、’C‘等並無跳出循環因此會進入else輸出錯誤答案。
第一步:這道題須要完成兩個函數,首先是求總分,將總分賦初值0,後先循環確保計算了每一學生的總分,其次循環一個學生的各科成績,最後疊加。
第二步:第二個排序,利用冒泡排序法,引入一個量交換位置。
第三步:結束。
void calc(struct student *p,int n) { int i,j; p->sum=0; for(i=0;i<n;i++,p++) { for(j=0;j<3;j++) { p->sum=p->sum+p->score[j]; } } } void sort(struct student *p,int n) { int i,j; struct student temp; for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++) { if((p+j)->sum<(p+j+1)->sum) { temp=*(p+j+1); *(p+j+1)=*(p+j); *(p+j)=temp; } } } }
在交換時直接定義了一個整型temp,沒有考慮到所要交換的是結構。
這兩週咱們主要學習告終構,結構的用法,但不夠熟練。
個人git地址是:https://coding.net/u/zhouxuan12/p/123/git?public=true
http://www.cnblogs.com/fengzx/p/8735254.html
http://www.cnblogs.com/gu-an-cheng-wxm/p/8697025.html
http://www.cnblogs.com/dx2017/p/8666072.html