题目6-7删除字符串中数字字符
1.设计思路
(1)主要描述题目算法
第一步:用for循环来进行查找
第二步:遇到0到9的数不做处理,其他的字符存储在另一个新的数组中
第三步:在数组后加上字符‘\\0‘
(2)流程图
2.实验代码
1 void delnum(char *s) 2 { 3 int i,k; 4 for(i=0,k=0; *(s+i)!=‘\\0‘; i++) 5 { 6 if(*(s+i)>=‘0‘ && *(s+i)<=‘9‘) 7 ; 8 else 9 { 10 *(s+k) = *(s+i); 11 k++; 12 } 13 } 14 *(s+k) = ‘\\0‘; 15 }
3.本题调试过程碰到问题及解决办法
错误信息1:无
改正方法1:无
题目6-8统计子串在母串出现的次数
1.设计思路
(1)主要描述题目算法
第一步:用for循环来查找
第二步:用if语句判断判断str数组中相邻三个数与substr相邻三个数是否相等
第三步:如果多符合条件的话,t++
(2)流程图
2.实验代码
1 int fun(char *str,char *substr) 2 { 3 int i, t=0; 4 for(i=0; i<81; i++) 5 { 6 if(*(str+i)==*(substr+0) && *(str+i+1)==*(substr+1) && *(str+i+2)==*(substr+2)) 7 t++; 8 } 9 return t; 10 }
3.本体调试过程碰到问题及解决办法
错误信息1:无
改正方法1:无
题目6-9字符串中除首尾字符外的其余字符按降序排列
1.设计思路
(1)主要描述题目算法
第一步:在for循环中除掉首尾
第二步:再用冒泡排序算法按照降序排列
第三步:输出数组
(2)流程图
2.实验代码
1 int fun(char *s,int num) 2 { 3 int i,j,t; 4 for(i=1; i<num-1; i++) 5 { 6 for(j=1; j<num-i-1; j++) 7 { 8 if(*(s+j) <*(s+j+1)) 9 { 10 t = *(s+j); 11 *(s+j) = *(s+j+1); 12 *(s+j+1) = t; 13 } 14 } 15 } 16 }
3.本题调试过程碰到问题及解决办法
错误信息1:无
改正方法1:无
题目7-1输出学生成绩
1.设计思路
(1)主要描述题目算法
第一步:调用malloc,申请一段指定大小的内存
第二步:用for循环输入数据,并求出总和
第三步:用for找出最大最小值,并求出平均值
(2)流程图
2.实验代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int main () 5 { 6 int n,i; 7 scanf("%d",&n); 8 int* a; 9 a = (int*)malloc(n*sizeof(int)); 10 //int a[n]; 11 12 float sum=0; 13 14 for(i=0; i<n; i++) 15 { 16 if(i == n-1) 17 scanf("%d",&a[i]); 18 else 19 scanf("%d ",&a[i]); 20 sum = sum + a[i]; 21 } 22 float max=0,min=a[0],average; 23 average = sum/n; 24 25 for(i=0; i<n; i++) 26 { 27 if(max < a[i]) 28 { 29 max = a[i]; 30 } 31 32 if(min > a[i]) 33 min = a[i]; 34 } 35 36 printf("average = %.2f\\n",average); 37 printf("max = %.2f\\n",max); 38 printf("min = %.2f\\n",min); 39 //free(a); 40 /*average = 平均成绩max = 最高成绩min = 最低成绩*/ 41 free(a); 42 return 0; 43 }
3.本题调试过程碰到问题及解决办法
错误信息1:编译错误,多种错误
错误原因1:在没有输入数组数据之前,提前定义了min=a[0]
改正方法1:将min=a[0]放在输入数组数据之后