二学期第二次作业

1

  1. 删除字符串中数字字符
    思路
    第一步:找出字符串中的数字
    第二步:将数字删除
void delnum(char *s)
{
  int i=0,j=0;
	for(;s[i]!='\0';i++)
	{
		if(s[i]>'9'||s[i]<'0')
		{
	    *(s+j++)=*(s+i);
        }
	}
	*(s+j)='\0';

}

无错误
2.统计子串在母串出现的次数
思路
第一步:讲子串与母串对比
第二步:统计母串中与子串相同的字符串个数

int fun(char *str,char *substr)
{
  int num=0,i;
	for(i=0;str[i]!='\0';i++)
	{
		if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2])){
			num++;
		}
	}
	return (num);	

}

无错误
3.字符串中除首尾字符外的其余字符按降序排列
思路
第一步:剔除首尾字符
第二步:使其余字符按照降序排列

int fun(char*s,int num)
{
    char t;
    int i,j;
    for(i=1;i<num-2;i++){
    for(j=i+1;j<num-1;j++){
    if(s[i]<s[j])
    {
	t=s[i];
  s[i]=s[j];
  s[j]=t;
	}
    }
	}
}

无错误
4.计算职工工资
思路
第一步:定义一个目标结构
第二步:输入数据
第三步:计算并输出

#include <stdio.h>
struct zhigong{
    char name[10];
    float jb;
    float fd;
    float zc;
    float sf;
}; 
int main()
{
    int n,i;
    scanf("%d",&n);
    struct zhigong salary[n];
    for(i=0;i<n;i++)
	{
        scanf("%s %f %f %f",salary[i].name,&salary[i].jb,&salary[i].fd,&salary[i].zc);
        salary[i].sf=salary[i].jb+salary[i].fd-salary[i].zc;
    }
    for(i=0;i<n;i++){
        printf("%s %.2f\n",salary[i].name,salary[i].sf);
    }
    return 0;
}

无错误
5.计算平均成绩
思路:同上题

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

输出时错误改正后正确
6.按等级统计学生成绩
思路
第一步:令目标分数等于该分数段等级
第二步:循环第一步

int set_grade( struct student *p, int n )
{
    int i,count=0;
    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
            {
                p[i].grade='D';
                count++;
            }  
    }
    return count;
}

无错误
7.结构体数组按总分排序
思路
第一步:用循环计算总分
第二步:根据学生总分排序

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

无错误

2

1.总结两周里所学的知识点有哪些学会了?(可记录每道作业题目所用的知识点)哪些还没有学会?
学会了定义结构,在定义结构里输入数据。指针指向数据结构还不太熟。
2.将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。请注意git地址应是类似“https://git.coding.net/Dawnfox/wf4_2.git”这样的字符串且是可被访问者直接点击进行访问的链接。
git地址

3.
金海东
高立彬
丰大为
4.

posted on 2018-04-08 19:57  1班李锐  阅读(206)  评论(3编辑  收藏  举报

导航