第二次作业
6.7 删除字符串中数字字符
1.设计思路
(1)见题明义:考核学生对ASCII码的应用和了解,结合字符数组综合
(2)设计思路:运用循环方式将字符数组中的每个字符依次与数字的ASCII码进行比较。
(3)流程图:略
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,j; for(i=0;*(s+i)!='\0';i++) { if(*(s+i)>=48&&*(s+i)<=57) { for(j=i;*(s+j)!='\0';j++) { *(s+j)=*(s+j+1); } i--; } } }
3.调试过程中碰到的问题和解决办法:
没有问题
git地址:https://git.coding.net/linghundouluo/Onehousework.git
6.8 统计子串在母串出现的次数
1.设计思路
(1)见题明义:本题考核学生对嵌套的基础掌握知识和字符数组和指针的使用
(2)设计思路:使用循环for和if循环嵌套使用
(3)流程图:略
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; } int fun(char *str,char *substr) { int k; for(int i=0;*(str+i)!='\0';i++) { int t=1; if(*(str+i)==*substr) { for(int j=0;*(substr+j)!='\0';j++) { if(*(str+i+j)!=*(substr+j)) { t=0; break; } } if(t==1) k++; } } return k; }
3.调试过程中碰到的问题和解决办法:
没有问题
git地址:https://git.coding.net/linghundouluo/Onehousework.git
6.9 字符串中除首尾字符外的其余字符按降序排列
(1)见题明义:本题考核学生对ACSII码的数字比较能力
(2)设计思路:运用排序法和ACSII码的比较
(3)流程图:略
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; } int fun(char *s,int num) { for(int i=1;i<num-1;i++) { for(int j=i+1;j<num-1;j++) if(*(s+i)<*(s+j)) { char t; t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; } } }
git地址:https://git.coding.net/linghundouluo/Onehousework.git
7.1 输出学生成绩
(1)见题明义:本题复习了上学期的综合知识,不同想法解决本题方式不同
(2)设计思路:(1)在主函数中直接运用(2)使用函数设计
(3)流程图:略
2.实验代码:
C语言代码(1)
#include<stdio.h> #include<stdlib.h> int main() { int N,i; double sum=0,max,min,ag,*p; scanf("%d",&N); if((p=(double *)calloc(N,sizeof(double)))==NULL) { exit(1); } for(i=0;i<N;i++) { scanf("%lf",p+i); sum=sum+*(p+i); } max=*p,min=*p; for(i=0;i<N;i++) { if(*(p+i)>max) max=*(p+i); if(*(p+i)<min) min=*(p+i); } ag=sum*1.0/N; printf("average = %.2lf\nmax = %.2lf\nmin = %.2lf\n",ag,max,min); free(p); }
3.调试过程中碰到的问题和解决办法:
没有问题
C语言代码(2)
#include<stdio.h> int main() { void max(int *stmax,int *stgrade); void min(int *stmin,int *stgrade); void sum(int *stsum,int *stgrade); void average(int k,int *stsum,float *staverage); int N; scanf("%d",&N); int stgrade; scanf("%d",&stgrade); int stmax,stmin,stsum; float staverage; stmax=stgrade; stmin=stgrade; stsum=stgrade; for(int i=1;i<N;i++) { scanf("%d",&stgrade); max(&stmax,&stgrade); min(&stmin,&stgrade); sum(&stsum,&stgrade); average(N,&stsum,&staverage); } printf("average = %6.2f\nmax = %6.2f\nmin = %6.2f",staverage,(float)stmax,(float)stmin); return 0; } void max(int *stmax,int *stgrade) { if(*stgrade>=*stmax) { *stmax=*stgrade; } } void min(int *stmin,int *stgrade) { if(*stmin>=*stgrade) { *stmin=*stgrade; } } void sum(int *stsum,int *stgrade) { *stsum=*stgrade+*stsum; } void average(int k,int *stsum,float*staverage) { *staverage=(float)*stsum/k; }
3.调试过程中碰到的问题和解决办法:
在正常编译器上编译成功,且结果正确,在PTA上无法识别
C++语言代码
#include<iostream> #include<iomanip> using namespace std; class student { public: int grade; float average; int max; int min; int sum; }; student st1; int main() { void max(void); void min(void); void sum(void); void average(int k); int N; cin>>N; cin>>st1.grade; st1.max=st1.grade; st1.min=st1.grade; st1.sum=st1.grade; for(int i=1;i<N;i++) { cin>>st1.grade; max(); min(); sum(); average(N); } cout.setf(ios::fixed); cout<<setprecision(2)<<"average = "<<st1.average<<endl<<"max = "<<(float)st1.max<<endl<<"min = "<<(float)st1.min<<endl; return 0; } void max(void) { if(st1.grade>=st1.max) { st1.max=st1.grade; } } void min(void) { if(st1.min>=st1.grade) { st1.min=st1.grade; } } void sum(void) { st1.sum=st1.grade+st1.sum; } void average(int x) { st1.average=(float)st1.sum/x; }
3.调试过程中碰到的问题和解决办法:
在编译器上显示成功,且结果正确,在PYA上显示结果正确,但格式错误
git地址:https://git.coding.net/linghundouluo/Onehousework.git
git地址:https://git.coding.net/linghundouluo/Onehousework.git
git地址:https://git.coding.net/linghundouluo/Onehousework.git