第二次作业

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

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:遍历数组中的所有元素。

第四步:找到数组中小于0或大于9的元素,并重新输入到数组中。并将最后的元素定义为\0。

(2)流程图

2.实验代码

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

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:将 j 初始化为0,将&&改为||,将数组中最后的元素定义为'\0'。

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义count,初始化为0.

第四步:遍历数组中的元素,将数组中元素与另一个字符串一一对比,如果相同,则count加1。

第五步:返回count。

(2)流程图

2.实验代码

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

}

3.本题调试过程中碰到的问题及解决办法

无

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:遍历数组中从第二个至倒数第二个元素。

第四步:将后一个元素与前一个元素比较,如果后一个大于前一个,则交换这两个元素。

2.实验代码

int fun(char *s,int num)
{

int i,n,j;
for(i=1;i<num-1;i++)
{
for(n=1;n<i;n++)
{
if((s+i)>(s+n))
{
j=(s+i);(s+i)=(s+n);(s+n)=j;
}
}
}
}

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:将n<num-1改为n<i, 将i=0改为i=1。

7-1 输出学生成绩

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:定义sum=0,average=0,max,min;。

第三步:输入学生个数,利用for循环记录成绩,并算出总合。

第四步:将a[0]赋给max,min。

第五步:遍历数组中元素,并与max和min比较。如果max<a[i],则将a[i]赋给max;如果a[i]<min,则将a[i]赋给min。

第六步:计算平均数。

第七部:输出平均数,最高成绩,最低成绩。

2.实验代码

include <stdio.h>

int main()
{
int N,i;
float sum=0,average=0,max,min;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
max=a[0],min=a[0];
for(i=0;i<N;i++)
{
if(max<a[i])
max=a[i];

if(min>a[i])
min=a[i];
}
average=sum/N;
printf("average = %.2f\nmax = %.2f\nmin = %.2f\n",average,max,min);
return 0;
}

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:将sum,average由int类型改为float类,将average初始化为0,在%.2f后加\n换行。

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

7-1 计算职工工资

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:定义结构体变量

第三步:输入信息,利用for循环记录。

第四步:利用for循环计算实资。

第五步:利用for循环输出名字和实资。

(2)流程图

2.实验代码

include<stdio.h>

include<stdlib.h>

struct xinxi
{
char name[10];
float jizi;
float fuzi;
float zhichu;
float shizi;
};
int main()
{
int N,i;
scanf("%d",&N);
struct xinxi a[N];
for(i=0;i<N;i++)
{
scanf("%s%f%f%f",a[i].name,&a[i].jizi,&a[i].fuzi,&a[i].zhichu);

}
for(i=0;i<N;i++)
{
a[i].shizi=a[i].jizi+a[i].fuzi-a[i].zhichu;
}
for(i=0;i<N;i++)
{
printf("%s %.2f\n",a[i].name,a[i].shizi);
}
system("pause");
return 0;
}

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:删去a[i].name,前的&,将shizi由int类型改为float类型。

7-2 计算平均成绩

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:定义结构体变量。定义sum,average,N,i.sum=0。

第三步:将元素输入至结构变量。

第四步:计算平均成绩。

第五步:遍历结构变量中的成绩,并与平均成绩比较。如果成绩小于平均成绩,则输出信息。

2.实验代码

include<stdio.h>

include<stdlib.h>

struct students
{
char xuhao[6];
char name[11];
int chengji;
};

int main()
{
int N,i;
int sum;
sum=0;
float average;
scanf("%d",&N);
struct students s[N];
for(i=0;i<N;i++){
scanf("%s %s %d",s[i].xuhao,s[i].name,&s[i].chengji);
}
for(i=0;i<N;i++)
{
sum=sum+s[i].chengji;
}
average=sum/N;
printf("%.2f\n",average);
for(i=0;i<N;i++)
{
if(s[i].chengji<average)
{
printf("%s %s\n",s[i].name,s[i].xuhao);
}
}
system("pause");
return 0;
}

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:将 printf("%.2f\n",average);放到for循环之上。

C高级第二次作业(3)

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义count,i,并初始化为0;

第四步:遍历数组中所有元素。

第五步:如果分数在85-100为A,70-84为B,60-69为C,0-59为D。

第六步:返回count。

(2)流程图

2.实验代码

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

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:ABCD分别加上单引号。

for循环后加return。

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:遍历数组中所有元素,计算总成绩。

第四步:利用for循环,用冒泡排序法按从大到小排列。

2.实验代码

void calc(struct student *p,int n)
{
int i;
i=0;
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;
i=0;
j=0;
struct student a ;

for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(p[j].sum<p[j+1].sum)
{
a = p[j];
p[j] =p[j+1];
p[j+1] = a;
}
}
}
}

3.本题调试过程中碰到的问题及解决办法

错误原因:

改正方法:j<n-1改为 j<n-1-i。

学习总结和进度

1.知识总结

最近两周学习了结构体变量的定义和引用,目前对结构体变量的应用掌握的还算可以。

代码托管

点评

李春杨
李洪海
林昊

图表

posted @ 2018-04-03 23:53  2班-陆文奇  阅读(216)  评论(4)    收藏  举报