第二次作业
2018-04-08 20:22 无敌伟业 阅读(212) 评论(4) 编辑 收藏 举报void delnum(char *s)
{
int a = 0,j;
while(s[a]!='\0') {
if(s[a] >= '0' && s[a] <= '9') {
j = a;
while(s[j]!='\0') {
s[j] = s[j+1];
j++;
}
continue;
}
a++;
}
}
第一步:定义一个初值;
第二步:判断是否等于0;
第三步:判断是否在所需的区间内;、
第四步:删除所规定的字符;
第五步:执行接下来的步骤。
本题调试过程碰到问题及解决办法:
忘记在字符上加上单引号了。
后来自己摸索改正了。
流程图:
int fun(char *str,char *substr)
{
int a,b,k,num=0;
for(a = 0;str[a];a++)
for(b=a,k=0;substr[k]==str[b];k++,b++)
if(substr[k+1]=='\0')
{
num++;
break;
}
return(num);
}
第一步:定义一些变量;
第二步:统计出现次数;
第三步:计数器加一;
第四步:输出。
错误:
无法输出结果;
指针型数组,没有加中括号。
向同学请教改正。
流程图:
int fun(char *s,int num)
{
int a=0, b=0, k=0, n=0;
char t;
for(n=0;;n++)
{
if(*(s+n)=='\0')break;
}
n--;
for(a=1;a<n-1;a++)
{
for(b=a;b<n;b++)
{
if(*(s+a)<*(s+b))
{
t=*(s+a);
*(s+a)=*(s+b);
*(s+b)=t;
}
}
}
}
第一步:定义一些变量;
第二步:判断是否等于0;
第三步:第一层排序;
第四步:第二遍排序;
错误:
忘记加上*号无法输出结果。
#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;
}
第一步:定义一些变量;
第二步:输入n的值;
第三步:输入学生的成绩;
第四步:计算平均,最大值,最小值;
第五步:输出结果。
错误:
定义的变量没有给予初值。自己一遍改过来。
#include <stdio.h>
struct zhigong
{
char name[10];
float a,b,c;
};
int main()
{
int N,i,j;
float sum;
scanf("%d",&N);
struct zhigong xu;
for(i = 0;i < N;i++)
{
// struct zhigong xu;
scanf("%s",xu.name);
scanf("%f",&xu.a);
scanf("%f",&xu.b);
scanf("%f",&xu.c);
sum = xu.a + xu.b - xu.c;
printf("%s %.2f\n",xu.name,sum);
}
return 0;
}
第一步:定义一些初值;
第二步:定义一个结构;
第三步:输入值;
第四步:求和;
第五步:输出值。
错误:
输出结果出错。问同学改正。
流程图:
#include<stdio.h>
struct student
{
char number[1000];
char name[100];
float a;
}student;
int main()
{
int n,i,j;
float sum=0.00,ave=0.00;
scanf("%d", &n);
struct student s[n];
for (i = 0; i < n; i++)
{
scanf("%s %s %f",&s[i].number,s[i].name,&s[i].a);
sum=sum+s[i].a;
}
ave=sum/n;
printf("%.2f\n",ave);
for (j = 0; j < n;j++)
{
if(s[j].a<ave)
{
printf("%s %s\n", s[j].name, s[j].number);
}
}
return 0;
}
第一步:定义一些变量;
第二步:输入n的值;
第三步:调用结构;
第四步:输入数据;
第五步:计算平均成绩;
第六步:输出结果。
错误:
没有加上中括号,指针数组定义不够完全。问同学解决的。
int set_grade( struct student *p, int n )
{
int 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';
}
if(p[i].grade == 'D')
{
count ++;
}
}
return count;
}
第一步:定义一些变量;
第二步:判断分数属于哪个档次;
第三步:将分数在D档的计数;
第四步:输出结果。
错误:
输出的结果都为D。错误的原因是if中的等于少打了一个等号,自己改正。
void calc(struct student *p,int n)
{
int i;
float k;
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 t;
for(i = 0;i < n - 1;i++)
{
for(j = 0;j <n-i-1;j++)
{
if(p[j].sum < p[j+1].sum)
{
t = p[j];
p[j]= p[j+1];
p[j+1] = t;
}
}
}
}
第一步:定义一些变量;
第二步:计算求和;
第三步:冒泡排序法;
错误:
分层太多,多打了很多个中括号。自己改正。
总结:
在过去的两周的学习生活中,我学到了,如何创建结构,使用结构。这个我感觉非常的难,并且学会了之后我感觉非常的自豪。我还是对于指针类型的数组,我感觉很让人费解,学的有一些瑕疵。
点评:
张心悦:www.cnblogs.com/zxy980612/p/8696690.html
董欣:http://www.cnblogs.com/dx2017/p/8666072.html
赵寅胜:www.cnblogs.com/2017023960ZYS/p/8653086.html