第2次作业

作业要求一

提交记录

1)C高级第二次PTA作业(1)

2)C高级第二次PTA作业(2)

3)C高级第二次PTA作业(3)

作业要求二

1)C高级第二次PTA作业(1)

6-7 删除字符串中数字字符

1.设计思路:

主要描述题目算法:

第一步:调用函数
第二步:定义两个变量构成两个字符串
第三步:利用循环判断该删除字节
第四步:该删除字节利用另一个字符串的下一个补上
第五步:返回主函数

2.实验代码:

void delnum(char *s){ int i,j=0; for(i=0;*(s+i)!='\0';i++) { if(*(s+i)<'0'||*(s+i)>'9') { *(s+j)=*(s+i); j++; } }*(s+j)='\0'; return *(s+j); }

6-8 统计子串在母串出现的次数

1.设计思路:

主要描述题目算法:

第一步:调用函数
第二步:利用第一个循环实现字符串挨个查询
第三步:利用第二个循环确定是否有相同的字符
第四步:n返回主函数

2.实验代码:

int fun(char *str,char *substr) { int i,j=0,n=0,a; for(i=0;*(str+i)!='\0';i++) { for (a=0;a<3;a++) { if*(str+i+a)==*(substr+j+a); else break; } n++; }return n; }

6-9 字符串中除首尾字符外的其余字符按降序排列

1.设计思路:

主要描述题目算法:

第一步:调用主函数
第二步:第一个循环确定字符串挨个字符查询
第三步:利用判断排除第一个和最后一个
第四步:利用循环进行降序排列
第五步:返回主函数

2.实验代码:

`int fun(char s,int num)
{
int i,j;
for(i=0;i<num-1;i++)
{
if(i!=0||i!=num-2)
{
for(i=1;
(s+i)!='\0';i++)
{
for(j = i+1;j < num-1;j++)
{
if((s+i)<(s+j))
{
int temp;
temp = *(s+i);
*(s+i) = *(s+j);
*(s+j) = temp;
}
}

}
}
}return *(s+i);
}`

7-1 输出学生成绩

1.设计思路:

主要描述题目算法:

第一步:创立动态内存定义平均成绩、最高成绩和最低成绩
第二步:输入学生的成绩
第三步:找出最低成绩最高成绩并求出成绩之和
第四步:利用成绩之和求出平均成绩
第五步:输出平均成绩、最高成绩和最低成绩并清除动态内存

2.实验代码:

#include<stdio.h> #include<stdlib.h> int main(void) { int sum=0,*p,i,N; double max,min; double average; scanf("%d",&N); if((p=(int*)calloc(N,sizeof(int))) == NULL){ printf("Not able to allocate memory.\n"); exit(1); } for(i=0;i<N;i++){ scanf("%d",&*(p+i)); } min = *p,max=*p; for(i=0;i<N;i++){ sum = sum + *(p+i); if(*(p+i)>max){ max = *(p+i); } if(*(p+i)<min){ min = *(p+i); } } average = (double)sum / (double)N; printf("average = %.2f\nmax = %.2f\nmin = %.2f",average,max,min); free(p); return 0;

3.流程图:

错误信息

错误原因:第一次把average = (double)sum / (double)N;放在了 sum = sum + *(p+i);下面,导致求了多个平均值。

2)C高级第二次PTA作业(2)

7-1 计算职工工资

1.设计思路:

主要描述题目算法:

第一步:建立结构包括姓名、基本工资、浮动工资、支出、实发工资
第二步:输入一共有几个职员
第三步:利用循环输入姓名、基本工资、浮动工资、支出
第四步:利用循环求出每个人的实发工资
第五步:输出姓名和实发工资

2.实验代码:

#include<stdio.h> struct nest_yuangong{ char name[10]; double jiben; double fudong; double zhichu; double shifa; }; int main(void) { int i,n; struct nest_yuangong s[n]; scanf("%d",&n); for (i=1;i<=n;i++){ scanf("%s%lf%lf%lf",&s[i].name,&s[i].jiben,&s[i].fudong,&s[i].zhichu); s[i].shifa = s[i].jiben+s[i].fudong-s[i].zhichu; } for (i=1;i<=n;i++){ printf("%s %.2lf\n",s[i].name,s[i].shifa); } return 0; }

7-2 计算平均成绩

1.设计思路:

主要描述题目算法:

第一步:建立结构包括学生的学号、姓名和成绩
第二步:输入一共有几个学生
第三步:利用循环输入学生的学号、姓名和成绩
第四步:利用循环求出成绩总和
第五步:求出平均成绩并输出
第六步:挑选出平均成绩以下的学生并输出

2.实验代码:

#include<stdio.h> struct nest_student{ char name[10]; char number[5]; int grade; }; int main(){ int i,n,sum=0; float average; scanf("%d\n",&n); struct nest_student s[n]; for(i=1;i<=n;i++){ scanf("%s %s %d",s[i].number,s[i].name,s[i].grade); sum = sum + s[i].grade; } average=(float)(sum*1.0/n*1.0); printf("%.2f\n",average); for(i=1;i<=n;i++){ if((float)(s[i].grade) < average){ printf("%s %s\n",s[i].name,s[i].number); } } return 0; }

3.流程图:

错误信息

错误原因:输入的时候强制改变数字类型。

3)C高级第二次PTA作业(3)

6-1 按等级统计学生成绩

1.设计思路:

主要描述题目算法:

第一步:调用函数
第二步:利用循环求出不及格数目
第三步:利用循环决定每个学生等级
第四步:返回主函数

2.实验代码:

int set_grade( struct student *p, int n ) { int i,sum=0; for(i=0;i<n;i++) { if((p+i)->score<60){ sum++; } } for(i=0;i<n;i++) { if(((p+i)->score)>=85&&((p+i)->score)<=100){ ((p+i)->grade)='A'; } else if(((p+i)->score)>=70&&((p+i)->score)<=84){ ((p+i)->grade)='B'; } else if(((p+i)->score)>=60&&((p+i)->score)<=69){ ((p+i)->grade)='C'; } else if(((p+i)->score)>=0&&((p+i)->score)<=59){ ((p+i)->grade)='D'; } } return sum; }

6-2 结构体数组按总分排序

1.设计思路:

主要描述题目算法:

第一步:调用主函数
第二步:利用循环求出每个学生总成绩
第三步:利用循环给每个学生的总分从高到低排序
第四步:返回主函数

2.实验代码:

`void calc(struct student *p,int n)
{
int i;
for(i=0;i<n;i++){
(p+i)->sum = (p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];
}
}

void sort(struct student *p,int n)
{
int i,j;
struct student swap;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if((p+i)->sum<(p+j)->sum)
{
swap=p[i];p[i]=p[j];p[j]=swap;
}
}
}
}`

3.流程图:

错误信息

错误原因:用指针的时候与用数组弄混,忘记了(p)->这种指示方式。

作业要求三

1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?

这两周主要学习了结构还有动态内存这两方面,我觉得掌握的还可以,但是对于结构中的函数掌握的还是不够熟练。

2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。

git地址:https://git.coding.net/wuyaole/dayixiaxueqidiercizuoye.git
图片:

3、点评3个同学的本周作业

1.胡景文:http://www.cnblogs.com/wshjw/p/8710431.html
2.高立彬:http://www.cnblogs.com/gao628526/p/8665187.html
3.丰大为:http://www.cnblogs.com/DavidPark/p/8664273.html

4、表格和折线图

posted @ 2018-04-08 18:49  无药了  阅读(253)  评论(6)    收藏  举报