第二次作业




6-7 删除字符串中数字字符
1,算法
遍历原数组,如果元素为非数字,将其复制给新数组
2,代码

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,问题及解决办法

6-8 统计子串在母串出现的次数
1,算法
对两个串元素依次进行比较,相等n+1
2,代码

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,问题及解决办法

6-9 字符串中除首尾字符外的其余字符按降序排列
1,算法
for循环,降序排列
2,代码

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,问题

7-1 输出学生成绩
1,算法
对每个成绩赋值,算出和平均值最大最小
2,代码

#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 计算职工工资
1,算法
用struct输入所有相关值,计算工资并输出
2,代码

#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,问题

6-1 按等级统计学生成绩
1,算法
用p【i】.score对成绩依次划分等级,等级为d时,不合格人数加一
2,程序

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].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,问题无
6-2 结构体数组按总分排序
1,算法
struct计算分数和
对分数从大到小排序
2,程序

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])*1.0;
  }
}
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+1].sum>p[j].sum)
      {
       t=p[j];p[j]=p[j+1];p[j+1]=t;
      }
    }
  }
}

3,问题
冒泡排序,注意j<n-i-1

总结
本周学习了struct输入和调用
点评
http://www.cnblogs.com/moxiaoshuai/p/8742635.html
http://www.cnblogs.com/qinbaoyan/
http://www.cnblogs.com/wwb986187/p/8727528.html#3943893

代码量,这周一直放假,打的不是很多
二百行左右吧

posted on 2018-04-08 07:07  江北宋天霸  阅读(186)  评论(3编辑  收藏  举报