码迷,mamicode.com
首页 > 其他好文 > 详细

第二次作业

时间:2018-04-06 15:25:07      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:输入数据   char   .net   cat   main   冒泡排序   问题   scanf   dong   

作业要求一

技术分享图片

技术分享图片

技术分享图片
PS:提交答案正确后的再次提交是尝试不同的方法

作业要求二

题目1 删除字符串中数字字符

1. 设计思路

(1). 算法

第一步:定义一个新的字符数组a等于要修改的字符数组s

第二步:修改字符数组s,把a中不是数字的元素赋给s,完成字符串的删除。

(2). 流程图

2. 实验代码

void delnum(char *s)
{
    int i;
    char *a=s;
    for(i=0;*(a+i)!=‘\0‘;i++)
    {
        if((*(a+i)<‘0‘)||(*(a+i)>‘9‘))
        {
            *s=*(a+i);
            s++; 
        }
    }
    *s=‘\0‘; 
}

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

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

1. 设计思路

(1). 算法

第一步:判断字符串第1,2,3个字符是否和要判断的字符相等。

第二步:再判断第2,3,4个字符,直到字符串结束。

别说什么只能判断3个字符的字符串,通用性差什么的,题目就是让我们判断3个字符的字符串。

(2). 流程图

2. 实验代码

int fun(char *str,char *substr)
{
    int count=0;
    while(*(str+3)!=‘\0‘)
    {
        if((*str==*substr)&&(*(str+1)==*(substr+1))&&(*(str+2)==*(substr+2)))
        {
            count++;
        }
        str++;
    }
    return count;
} 

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

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

1. 设计思路

(1). 算法

第一步:把字符串的首尾字符排除,剩余的字符按照从大到小的顺序冒泡排列

第二步:思路就是这样啊,我不是把题目复述了一遍,具体操作看代码

(2). 流程图

技术分享图片

2. 实验代码

int fun(char *s,int num)
{
    int i,j,t;
    for(i=1;i<num-1;i++)
    {
        for(j=1;j<num-i-1;j++)
        {
            if(s[j]<s[j+1])
            {
                t=s[j];s[j]=s[j+1];s[j+1]=t;
            }
        }
    } 
}

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

题目4 输出学生成绩

1. 设计思路

(1). 算法

第一步:输入数据并计算平均值

第二步:再求最大值和最小值

第三步:输出数据

(2). 流程图

2. 实验代码

#include<stdio.h>
int main()
{
    int n,i;
    int *p;
    float max,min,average=0;
    scanf("%d",&n);
    if ((p = (int *) calloc (n, sizeof(int))) == NULL) 
    {
        printf ("Not able to allocate memory. \n");
        exit(1);
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",p+i);
        average=average+*(p+i);
    }
    average=average/n;
    max=*p,min=*p;
    for(i=0;i<n;i++)
    {
        if(max<*(p+i))
        {
            max=*(p+i);
        }
        if(min>*(p+i))
        {
            min=*(p+i);
        }
    }
    printf("average = %.2f\n",average);
    printf("max = %.2f\n",max);
    printf("min = %.2f\n",min);
}

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

题目5 计算职工工资

1. 设计思路

(1). 算法

第一步:创建结构

第二步:输入数据

第三步:计算职工工资

第四步:输出数据

(2). 流程图

技术分享图片

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. 本题调试过程碰到问题及解决办法

错误原因:结构定义时如果把变量类型定义为int型则会出现错误

改正:改成float或double型即可

题目6 计算平均成绩

1. 设计思路

(1). 算法

第一步:创建结构,输入数据

第二步:计算平均成绩并输出

第三步:如果学生成绩在平均成绩下,输出其信息

(2). 流程图

2. 实验代码

#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. 本题调试过程碰到问题及解决办法

错误原因:定义id时只给出5个空间,即char id[5]

改正:应为最后会有\0,只要定义空间为6以上即可

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

1. 设计思路

(1). 算法

第一步:判断学生成绩的等级,并赋给结构里统计等级的变量

第二步:在判断等级时,如果等级为D,则count加1,最后返回count

(2). 流程图

技术分享图片

2. 实验代码

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

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

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

1. 设计思路

(1). 算法

第一步:计算学生的总成绩

第二步:用冒泡排序按成绩降序把学生排列

(2). 流程图

2. 实验代码

void calc(struct student *p,int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        p->sum=0;
        for(j=0;j<3;j++)
        {
            p->sum=p->sum+p->score[j];
        }
        p++;
    }
}
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;j++)
        {
            if(p[j].sum<p[j+1].sum)
            {
                t=p[j];p[j]=p[j+1];p[j+1]=t;
            }
        }
    }
}

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

作业要求三

1. 知识的总结

复习了指针,学习了结构。

都学会了。

2. 代码管理

Git地址

3. 点评

辛静瑶

李伍壹

陈天胤

4. 图表

不想弄了

第二次作业

标签:输入数据   char   .net   cat   main   冒泡排序   问题   scanf   dong   

原文地址:https://www.cnblogs.com/wwb986187/p/8727528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!