題目6-7刪除字符串中數字字符
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義調用函數delnum,定義整形變量i,j
第三步:定義指針s,通過s,在函數for和函數if中的應用
第四步:通過(s+j)=‘\0’,返回值
(2)流程圖
2.實驗代碼
{
int i,j=0;
for(i=0;*(s+i)!='\0';i++)
{
if(*(s+i)>='0'&&*(s+i)<='9')
{
}else
{
*(s+j)=*(s+i);
j++;
}
}
*(s+j)='\0';
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:*s出錯
錯誤原因:調用函數指針使用出錯
改正方法:多次編譯
錯誤信息2:‘\0’
錯誤原因:*(s+j)='\0','\0'沒加‘’
改正方法:觀看錯誤提示后改正

題目6-8統計子串在母串出現的次數
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義函數fun(),在fun()中*star,*substr,i,count
第三步:使用for函數和函數if,在*(str+i)!='\0'的范圍內,如果*(str+i)==*(substr),*(str+i+1)==*(substr+1),*(str+i+2)==*(substr+2),所以count++
第四步:回歸count
(2)流程圖

2.實驗代碼
```int fun(char *str,char *substr)
{
int i,count=0;
for(i=0;*(str+i)!='\0';i++)
{
if(*(str+i)==*(substr))
{
if(*(str+i+1)==*(substr+1))
{
if(*(str+i+2)==*(substr+2))
{
count++;
}
}
}
}
return count;
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:count出錯
錯誤原因:count返回的值出錯,編譯出現問題
改正方法:將{}括號重新梳理對齊,編譯成功

題目6-9字符串中除首尾字符外的其余字符按降序排列
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義調用函數fun(),定義*s,整形變量sum,I,j,k,temp
第三步:在for循環中,在i<num-2范圍內循環j<num-1,int)(*(s+k))<(int)(*(s+j))得k=j,如果k!=i,則temp=*(s+i);*(s+i)=*(s+k);*(s+k)=temp來互換改變順序
第四步:輸出排列好的字符串
(2)流程圖

2.實驗代碼
```int fun(char *s,int num)
{
int i,j,k,temp;
for(i=1;i<num-2;i++)
{
k=i;
for(j=i+1;j<num-1;j++)
{
if((int)(*(s+k))<(int)(*(s+j)))
{
k=j;
}
}
if(k!=i)
{
temp=*(s+i);*(s+i)=*(s+k);*(s+k)=temp;
}
}
return 0;
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:代碼錯誤
錯誤原因:排序的代碼打印錯誤
改正方法:temp=*(s+i);*(s+i)=*(s+k);*(s+k)=temp,深刻理解排序代碼后,改正

題目7-1輸出學生成績
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義整形變量i,n,定義單精度浮點型變量sum=0,average,max,min,輸入n,對*p使用malloc函數
第三步:使用for函數,輸入n個數據,得到sum,使用for與if函數找出最大數據和最小數據
第四步:輸出平均值,最高成績,最低成績
(2)流程圖
2.實驗代碼
```#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
float sum=0,average,max,min;
scanf("%d",&n);
float *p=(float *)malloc(n);
for(i=0;i<n;i++)
{
scanf("%f",(p+i));
sum+=*(p+i);
}
min=*(p+0);max=*(p+0);
for(i=0;i<n;i++)
{
if(min>*(p+i))
{
min=*(p+i);
}
if(max<*(p+i))
{
max=*(p+i);
}
}
printf("average = %.2f\n",sum/n*1.0);
printf("max = %.2f\n",max);
printf("min = %.2f\n",min);
return 0;
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:無

題目7-1計算職工工資
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義一個結構體變量wage,在其中定義name,actual_wage,basic_wage,floating_wage,expenditure,
第三步:在主函數中定義整形變量N,i,利用for函數,引用結構體,計算
第四步:輸出
(2)流程圖

2.實驗代碼
```#include<stdio.h>
#include<stdlib.h>
struct wage
{
int num;
char name[10];
float actual_wage;
float basic_wage;
float floating_wage;
float expenditure;
};
int main()
{
int N,i;
scanf("%d",&N);
struct wage wage[N];
for(i=0;i<N;i++)
{
scanf("%s %f %f %f",wage[i].name,&wage[i].basic_wage,&wage[i].floating_wage,&wage[i].expenditure);
wage[i].actual_wage=wage[i].basic_wage+wage[i].floating_wage-wage[i].expenditure*1.0;
}
for(i=0;i<N;i++)
{
printf("%s %.2f\n",wage[i].name,wage[i].actual_wage);
}
return 0;
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:for函數
錯誤原因:for(i=1;i<=N;i++)
改正方法:for(i=0;i<N;i++)

題目7-2 計算平均成績
1.設計思路
(1)本次題目的算法
第一步:閱讀題目 理解主函數與函數聲明
第二步:定義一個結構體變量student,在其中定義student_id,name,grade
第三步:在主函數中定義整形變量N,i,sum,浮點型變量average,多次利用for和if函數,引用結構體student,計算
第四步:輸出
(2)流程圖

2.實驗代碼
```#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char student_id[6];
char name[11];
int grade;
};
int main()
{
int N,i,sum=0;
float average=0;
scanf("%d",&N);
struct student student[N];
if(N>0&&N<=10)
{
for(i=0;i<N;i++)
{
scanf("%s %s %d",student[i].student_id,student[i].name,&student[i].grade);
sum=sum+student[i].grade;
}
average=sum*1.0/N;
printf("%.2f\n",average);
for(i=0;i<N;i++)
{
if(average>student[i].grade)
{
printf("%s %s\n",student[i].name,student[i].student_id);
}
}
}
return 0;
}```
3.調試過程碰到問題及解決辦法
錯誤信息1:數組
錯誤原因:student_id[5],name[10]
改正方法:student_id[6],name[11]

學習總結和進度
1.學會的知識點
指針和排序方法
for函數的使用
結構體的應用
2.未完全掌握的知識點
結構體的使用還是不太明確
3.學習進度表格和折線圖

