作业要求一
已完成。
作业要求二
1)C高级第二次PTA作业(1)
6-7 删除字符串中数字字符
1.设计思路
(1)主要描述题目算法
第一步:题目要求删除字符串中数字字符
第二步:定义i,j为整数 并且i = 0.
第三步:当s[i]不等于\0的时候,用if语句判断s[i]是数字的情况,如果是数字,就把i赋值给j,,进行第四步,然后i++;
第四步:当s[j]不等于\0的时候,把s[j+1]赋值给s[j],这么做就是把数字后面的赋值给前面,达到把数字消除的目的,然后j++;
(2)流程图
2.实验代码
void delnum(char *s)
{
int i = 0,j;
while(s[i]!='\0') {
if(s[i] >= '0' && s[i] <= '9') {
j = i;
while(s[j]!='\0') {
s[j] = s[j+1];
j++;
}
continue;
}
i++;
}
}
3.本题调试过程碰到问题及解决办法
本题最开始不会,让后问了室友给讲会了
6-8 统计子串在母串出现的次数
1.设计思路
(1)主要描述题目算法
第一步:定义i,j,k,num为整形变量,num = 0.
第二步:使用for循环
第三步:判断substr[k+1]是否为\0,若是,则num++,跳出循环
第四步:返回num。
(2)流程图
无。
2.实验代码
int fun(char *str,char *substr)
{
int i,j,k,num=0;
for(i=0;str[i];i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
if(substr[k+1]=='\0')
{
num++;
break;
}
return(num);
}
3.本题调试过程碰到问题及解决办法
6-9 字符串中除首尾字符外的其余字符按降序排列
1.设计思路
(1)主要描述题目算法
第一步:定义i,j,k,m为整型变量且都为0,t为字符变量。
第二步:第一个for循环,如果s[n]是'\0',则跳出循环,此步骤表明了n的大小
第三步:降序
(2)流程图
无。
2.实验代码
int fun(char *s,int num)
{
int i=0, j=0, k=0, m=0;
char t;
for(m=0;;m++)
{
if(*(s+m)=='\0')break;
}
m--;
for(i=1;i<m-1;i++)
{
for(j=i;j<m;j++)
{
if(*(s+i)<*(s+j))
{
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
}
}
}
}
3.本题调试过程碰到问题及解决办法
无。
7-1 输出学生成绩
1.设计思路
(1)主要描述题目算法
第一步:定义n,i为整型变量,max,min,sum,a为double型,且max,sum为0,min为100。
第二步:用for循环输入学生成绩再用if语句,当遇到比max大的数就赋值给max,比min小的数就赋值给min;
第三步:求和除以人数就是平均数
(2)流程图
无。
2.实验代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
int n,i;
double max=0,min=100,sum=0,now;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lf",&now);
if(now>max) max=now;
if(now<min) min=now;
sum=sum+now;
}
printf("average = %.2lf\n",sum/n);
printf("max = %.2lf\n",max);
printf("min = %.2lf",min);
return 0;
}
3.本题调试过程碰到问题及解决办法
注意使用for循环,并知道括号的位置。
2)C高级第二次PTA作业(2)
7-1 计算职工工资
1.设计思路
(1)主要描述题目算法
第一步:先创建一个结构,包含信息
第二步:定义整形变量n,定义数组a[n]。
第三步:用for循环输出。
(2)流程图
2.实验代码
#include <stdio.h>
struct people{
char name[10];
double y,z,q,x;
};
int main()
{
int i,n,j;
scanf ("%d", &n);
struct people a[n];
for(i=0;i<n;i++){
scanf ("%s%lf%lf%lf",&a[i].name,&a[i].q,&a[i].z,&a[i].x);
a[i].y=a[i].q+a[i].z-a[i].x;
}
for(j=0;j<n;j++){
printf("%s %.2lf\n",a[j].name,a[j].y);
}
return 0;
}
3.本题调试过程碰到问题及解决办法
最开始不明白struct的意思,后来上网查询,明白了创建结构。
7-2 计算平均成绩
1.设计思路
(1)主要描述题目算法
第一步:创建结构,定义a[n],i,j,n为整形变量,sum,average为浮点型变量。
第二步:利用for循环写入学生信息,并求学生成绩之和
第三步:利用for循环使学生成绩和平均成绩比较,如果小于平均 就输出其部分学生信息。
(2)流程图
无。
2.实验代码
#include <stdio.h>
struct student{
char name[10],num[5];
double chengji;
};
int main()
{
int i,j,n;
double sum=0,average;
scanf("%d",&n);
struct student a[n];
for(i=0;i<n;i++){
scanf("%s %s %lf",&a[i].num,&a[i].name,&a[i].chengji);
sum=sum+a[i].chengji;
}
average=1.0f*sum/n;
printf("%.2lf\n",average);
for(i=0;i<n;i++){
if(average>a[i].chengji){
printf("%s %s\n",a[i].name,a[i].num);
}
}
return 0;
}
3.本题调试过程碰到问题及解决办法
还是struct不明白,不知道是定义结构,上网查询明白的。
3)C高级第二次PTA作业(3)
6-1 按等级统计学生成绩
1.设计思路
(1)主要描述题目算法
第一步:子函数起的作用就是统计低于60分以下的个数和给不同分数的学生划分层次;
第二步:统计60分以下的人数的算法
第三步:用if语句
(2)流程图
2.实验代码
int set_grade( struct student *p, int n )
{
int count=0,i;
for(i = 0; i < n; i++,p++)
{
if(p->score>=85&&p->score<=100)
{
p->grade='A';
}
if(p->score>=70&&p->score<=84)
{
p->grade='B';
}
if(p->score>=60&&p->score<=69)
{
p->grade='C';
}
if(p->score>=0&&p->score<=59)
{
p->grade='D';
count++;
}
}
return count;
}
3.本题调试过程碰到问题及解决办法
最开始根本不明白怎么下手,不明白题意。经过室友讲解弄明白。
6-2 指针选择法排序
1.设计思路
(1)主要描述题目算法
(2)流程图
无。
2.实验代码
void sort(int *x,int n)
{
int i,j,t,temp;
for(i=0;i<n-1;i++)
{
t=i;
for(j=i+1;j<n;j++)
{
if(*(x+t)<*(x+j))
t=j;
}
temp=*(x+i);
*(x+i)=*(x+t);
*(x+t)=temp;
}
}
3.本题调试过程碰到问题及解决办法
6-2 结构体数组按总分排序
1.设计思路
(1)主要描述题目算法
第一步:本题有两个调用函数,一个是要求每名同学的成绩总和;一个是把学生总分按照从大到小排序;
第二步:主函数就是输入学生信息,再通过调用函数对信息进行处理后输出
第三步:求总和,用for循环求总和
(2)流程图
无。
2.实验代码
void calc(struct student *p,int n)
{
int i,j;
for(i=0;i<n;i++,p++)
{
p->sum=0;
for(j=0;j<3;j++)
{
p->sum =p->sum + p->score[j];
}
}
}
void sort(struct student *p,int n)
{
int i,k,b;
struct student temp;
for(i=0;i<n;i++)
{
k=i;
for(b=k+1;b<n;b++)
{
if((p+k)->sum < (p+b)->sum)
{
k=b;
}
}
if(i!=k)
{
temp=*(p+i);
*(p+i)=*(p+k);
*(p+k)=temp;
}
}
}
3.本题调试过程碰到问题及解决办法
struct不会用,经过上网查询和问室友才明白。
要求三、学习总结和进度
1、总结两周里所学的知识点有哪些学会了?
这两周复习了指针,学习了结构以及结构数组,还有动态分配内存,第一次作业是指针,动态分配内存,第二次作业是结构数组,作业三是结构指针。学到了struct这个结构概念。
2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。请注意git地址应是类似“https://git.coding.net/Dawnfox/wf4_2.git”这样的字符串且是可被访问者直接点击进行访问的链接
GIT地址:https://git.coding.net/yangyuxin/77777.git
3、点评3个同学的本周作业
徐伟业:http://www.cnblogs.com/xuweiye/p/8747209.html
于耀淞:http://www.cnblogs.com/jsjyys/p/8672972.html
董欣:http://www.cnblogs.com/dx2017/p/8666072.html
4、请用表格和折线图呈现你本周(3/26 8:00~4/9 8:00)的代码行数和所用时间、博客字数和所用时间