二学期第二次作业
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.