第二次作业

作业要求一

ps:由于每道题会的程度不同,提交之前参考同学的编码在Devc++上写出了正确答案

作业要求二

题目6-1 计算两数的和与差

1 设计思路
第一步:定义字符数组a与数组s相等
第二步:修改s,a中不是数字赋给s
2流程图

3实验代码

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

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

题目2 统计子串在母串出现的次数

1设计思路
第一步:定义整型变量i,n
第二步:利用for循环让假定的字符串与指定字符串的i相等,依次加一
2流程图

3实验代码

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

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

题目3 字符串中除首尾字符外的其余字符按降序排列

1设计思路
冒泡排序
2流程图

3实验代码

int fun(char *s,int num)
{
  int i,j,swap;
   for(i=1;i<num-1;i++)
    for(j=1;j<num-1-i;j++)

  {
    if(s[j]<s[j+1])
    {
      swap=s[j];s[j]=s[j+1];s[j+1]=swap;
    }
  }
}

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

冒泡排序有点记不住,得一遍看书一遍做

题目6 计算平均成绩

1设计思路
第一步:输入数据
第二步:求平均成绩
2流程图

3实验代码

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

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

题目 计算职工工资

1设计思路
第一步:创建结构
第二步:输入数据
第三步:输出数据
2流程图

3实验代码

#include<stdio.h>
struct message {
	char name[10];
	float jibengz;
	float fudonggz; 
	float zhichu;
	float sum;
};
int main()
{
	int n;
	scanf("%d",&n);
	struct message m1;
	while(n--)
	{
		scanf("%s%f%f%f",m1.name,&m1.jibengz,&m1.fudonggz,&m1.zhichu);
		m1.sum=m1.jibengz+m1.fudonggz-m1.zhichu;
		printf("%s %.2f\n",m1.name,m1.sum);
	}
} 

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

%s--%d

题目4 输出学生成绩

1设计思路
第一步:输入数据计算平均值
第二步:求最大和最小值
2流程图
画布明白了呦!
3实验代码

#include<stdio.h>
int main()
{
  int n,i;
  double average,max,min,sum=0;
  scanf("%d",&n);
  double a[n];
  for(i=0;i<n;i++)
  {
  scanf("%lf",&a[i]);
  sum=sum+a[i];
  }
  average=sum/n;
  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];
    }
  }
  printf("average = %.2f\n",average);
  printf("max = %.2f\n",max);
  printf("min = %.2f",min);
  return 0;
  }

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

题目7 按等级统计学生成绩

1设计思路
第一步:判断学生成绩等级
第二步:根据等级赋给A,B,C,D
2流程图

3实验代码

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

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

题目8 结构体数组按总分排序

1设计思路
冒泡排序法的应用
2流程图

3实验代码

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

}

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

作业要求三

1.知识的总结

我们这两次课学了struct 的构建,进一步加强指针的运用

2.代码管理

3.点评

秦保岩
宋晨继
时宇

4图表

posted on 2018-04-08 17:32  Doyol  阅读(157)  评论(3编辑  收藏  举报

导航