第二次作业
题目6-7 删除字符串中数字字符
1.设计思路
(1)主要描述题目算法
①设计函数实现删除字符串中数字字符
②利用while循环
③利用if语句判断字符是否在0~9之间
(2)流程图
2.实验代码
#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] >= '0' && s[i] <= '9')) { s[j++] = s[i]; } i++; } s[j] = '\0'; }
3.本题调试过程碰到问题及解决办法
题目6-8 统计子串在母串出现的次数
1.设计思路
(1)主要描述题目算法
①定义n初始化为0
②从母串开始遍历
③返回n值
(2)流程图
2.实验代码
#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; } fun(char *str,char *substr) { int n=0; while(*(str)) { if(strncmp(str,substr,3)==0) { n++; } str=str+1; } return n; }
3.本题调试过程碰到问题及解决办法
6-9 字符串中除首尾字符外的其余字符按降序排列
1.设计思路
(1)主要描述题目算法
①定义i,j,t
②统计字符串长度
③对字符串进行排序
(2)流程图
2.实验代码
#include <stdio.h> int fun(char *s,int num); int main() { char s[10]; gets(s); fun(s,7); printf("%s",s); return 0; } fun(char *s,int num) { int i,j; char a = *(s+num-1); *(s+num-1)='\0'; for(i=0; i<num; i++) { for(j=1; j<num-i; j++) { if(*(s+j)<*(s+j+1)) { char t; t=*(s+j+1); *(s+j+1)=*(s+j); *(s+j)=t; } } } *(s+num-1)=a; }
3.本题调试过程碰到问题及解决办法
7-1 输出学生成绩
1.设计思路
(1)主要描述题目算法
①定义数组
②找出最值并且求出和
③求平均值
④输出
(2)流程图
2.实验代码
#include <stdio.h> float miny(float x,float y); float maxy(float x,float y); int main() { int N,grade,k,i=1; float average,max,min,sum=0.0; scanf("%d",&N); for(k=0; k<N; k++) { scanf("%d",&grade); sum+=grade; if (i==1) { max=grade; min=grade; i--; } max=maxy(max,grade); min=miny(min,grade); } average=sum/N; printf("average = %.2f\nmax = %.2f\nmin = %.2f",average,max,min); return 0; } float maxy(float x,float y) { float z; if(x>y) z=x; else z=y; return(z); } float miny(float x,float y) { float z; if(x<y) z=x; else z=y; return(z); }
3.本题调试过程碰到问题及解决办法