| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2214 人关注过本帖
标题:大二学生的求助
只看楼主 加入收藏
a183816246
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-2-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
大二学生的求助
2  顺序线性表的操作

基于线性表的动态顺序存储结构,通过函数分别实现以下操作的算法。
实现要求:定义实现以下操作的函数
⑴ 顺序表的建立:通过键盘输入所建立的顺序表的元素个数n,通过随机生成的方式生成在[100,100000]之间的整数。
⑵ 输出顺序表的所有元素。
⑶ 求出顺序表中值最小和次小的元素值,要求该算法的时间复杂度为O(n),最小和次小的元素值通过指针变量带回,函数不需要返回值。
⑷ 删除顺序表中值在S与T之间(S和T的大小关系任意)的所有元素,要求该算法的时间复杂度为O(n),若S和T不合理或顺序表位空则显示错误信息。
⑸ 删除顺序表中所有值重复的所有元素,使得顺序表中的所有元素两两互不相同,要求该算法的时间复杂度为O(n2),然后调用函数输出处理之后的顺序表的所有元素。
⑹ 顺序表的排序,要求该算法的时间复杂度为O(n㏒2n),然后调用函数输出处理之后的顺序表.
⑺ 设计一个菜单,上述操作要求都作为菜单中的主要菜单项。
搜索更多相关主题的帖子: 线性表 动态 键盘 元素 
2017-02-21 22:10
a183816246
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-2-21
收藏
得分:0 
大神帮帮忙,课程设计不会写
2017-02-21 22:11
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:10 
这作业,好专业啊!
2017-02-22 21:04
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
我不懂“课程设计”要怎么做,但是如果写C代码的话,可以参照如下:
(备注,这是一个学生成绩管理系统,各个部分的函数和你需要的不一样,但是你可以借鉴这样的思路去写代码结构,然后根据你的实际需求更改各函数、结构的内容及实现)
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N
#define   MAX_LEN  10                        /* 字符串最大长度 */
#define   STU_NUM 30                       /* 最多的学生人数 */
#define   COURSE_NUM 6                     /* 最多的考试科目数 */
typedef struct student
{
    long num;                        /* 每个学生的学号 */
    char name[MAX_LEN];                /* 每个学生的姓名 */
    float score[COURSE_NUM];        /* 每个学生COURSE_NUM门功课的成绩 */
    float sum;                            /* 每个学生的总成绩 */
    float aver;                        /* 每个学生的平均成绩 */
}STU;
int   Menu(void);
void  ReadScore(STU stu[], int n, int m);
void  AverSumofEveryStudent(STU stu[], int n, int m);
void  AverSumofEveryCourse(STU stu[], int n, int m);
void  SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b));
int   Ascending(float a, float b);
int   Descending(float a, float b);
void  SwapFloat(float *x, float *y);
void  SwapLong(long *x, long *y);
void  SwapChar(char x[], char y[]);
void  AsSortbyNum(STU stu[], int n, int m);
void  SortbyName(STU stu[], int n, int m);
void  SearchbyNum(STU stu[], int n, int m);
void  SearchbyName(STU stu[], int n, int m);
void  StatisticAnalysis(STU stu[], int n, int m);
void  PrintScore(STU stu[], int n, int m);
int main(){
printf("Input student number(n<30):\n");
int n;scanf("%d",&n);
STU*stu=(STU*)calloc(n,sizeof(STU));
int choice;
u1:choice=Menu();
switch(choice){
    case 1:printf("Input course number(m<=%d):\n",COURSE_NUM);
    int m;scanf("%d",&m);
    printf("Input student's ID, name and score:\n");
    ReadScore(stu,n,m);goto u1;
    break;
    case 2:AverSumofEveryCourse(stu,n,m);goto u1;break;
    case 3:AverSumofEveryStudent(stu,n,m);goto u1;break;
    case 4:printf("Sort in descending order by score:\n");
            SortbyScore(stu,n,m,Descending);
            goto u1;break;
    case 5:printf("Sort in ascending order by score:\n");
                SortbyScore(stu,n,m,Ascending);
            goto u1;break;
    case 6:printf("Sort in ascending order by number:\n");
             AsSortbyNum(stu,n,m);
             goto u1;break;
    case 7:printf("Sort in dictionary order by name:\n");
            SortbyName(stu,n,m);
            goto u1;break;
    case 8:    SearchbyNum(stu,n,m);goto u1;break;
    case 9:SearchbyName(stu,n,m);goto u1;break;
    case 10:StatisticAnalysis(stu,n,m);goto u1;break;
    case 11:PrintScore(stu,n,m);goto u1;break;
    case 0:printf("End of program!");break;
    default:printf("Input error!\n");goto u1;break;
           

}
return 0;
}
void  PrintScore(STU stu[], int n, int m){
    for(int i=0;i<n;i++){
        printf("%ld\t%s\t",stu[i].num,stu[i].name);
        for(int f=0;f<m;f++)printf("%.0f\t",stu[i].score[f]);
        printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
    }
}
void  StatisticAnalysis(STU stu[], int n, int m){
   

    for(int j=0;j<m;j++){
        int a[6]={0};
        for(int i=0;i<n;i++){
            if(stu[i].score[j]<60)a[0]++;
            else if(stu[i].score[j]<70)a[1]++;
            else if(stu[i].score[j]<80)a[2]++;
            else if(stu[i].score[j]<90)a[3]++;
            else if(stu[i].score[j]<100)a[4]++;
            else if(stu[i].score[j]==100)a[5]++;
        }
        printf("For course %d:\n",j+1);
        printf("<60\t%d\t%.2f%%\n",a[0],a[0]*100.0/n);
        printf("%d-%d\t%d\t%.2f%%\n",60,69,a[1],a[1]*100.0/n);
        printf("%d-%d\t%d\t%.2f%%\n",70,79,a[2],a[2]*100.0/n);
        printf("%d-%d\t%d\t%.2f%%\n",80,89,a[3],a[3]*100.0/n);
        printf("%d-%d\t%d\t%.2f%%\n",90,99,a[4],a[4]*100.0/n);
        printf("%d\t%d\t%.2f%%\n",100,a[5],a[5]*100.0/n);
    }
}
void  SearchbyName(STU stu[], int n, int m){
    printf("Input the name you want to search:\n");
    char key[MAX_LEN];int flag=0;
    scanf("%s",key);
    for(int i=0;i<n;i++){
        if(strcmp(stu[i].name,key)==0){
            flag=1;
            printf("%ld\t%s\t",stu[i].num,stu[i].name);
            for(int f=0;f<m;f++)printf("%.0f\t",stu[i].score[f]);
            printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
            break;
        }
    }
    if(!flag)printf("Not found!\n");
}
void  SearchbyNum(STU stu[], int n, int m){
    printf("Input the number you want to search:\n");
    long key;int flag=0;
    scanf("%ld",&key);
    for(int i=0;i<n;i++){
        if(stu[i].num==key){
            flag=1;
            printf("%ld\t%s\t",stu[i].num,stu[i].name);
            for(int f=0;f<m;f++)printf("%.0f\t",stu[i].score[f]);
            printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
            break;
        }
    }
    if(!flag)printf("Not found!\n");
}
void  SortbyName(STU stu[], int n, int m){
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(strcmp(stu[i].name,stu[j].name)>0){
            for(int f=0;f<m;f++)
                SwapFloat(&stu[i].score[f],&stu[j].score[f]);
            SwapFloat(&stu[i].sum,&stu[j].sum);
            SwapFloat(&stu[i].aver,&stu[j].aver);
            SwapLong(&stu[i].num,&stu[j].num);
            SwapChar(stu[i].name,stu[j].name);
            }
        }
    }
    PrintScore(stu,n,m);
}
void  AsSortbyNum(STU stu[], int n, int m){
for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(stu[i].num>stu[j].num){
            for(int f=0;f<m;f++)
                SwapFloat(&stu[i].score[f],&stu[j].score[f]);
            SwapFloat(&stu[i].sum,&stu[j].sum);
            SwapFloat(&stu[i].aver,&stu[j].aver);
            SwapLong(&stu[i].num,&stu[j].num);
            SwapChar(stu[i].name,stu[j].name);
            }
        }
    }
    PrintScore(stu,n,m);
}
void  SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b)){
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(compare(stu[i].sum,stu[j].sum)){
            for(int f=0;f<m;f++)
                SwapFloat(&stu[i].score[f],&stu[j].score[f]);
            SwapFloat(&stu[i].sum,&stu[j].sum);
            SwapFloat(&stu[i].aver,&stu[j].aver);
            SwapLong(&stu[i].num,&stu[j].num);
            SwapChar(stu[i].name,stu[j].name);
            }
        }
    }
    PrintScore(stu,n,m);
}
void  SwapFloat(float *x, float *y){
    float u=*x;
    *x=*y;
    *y=u;
}
void  SwapLong(long *x, long *y){
    long u=*x;
    *x=*y;
    *y=u;
}
void  SwapChar(char x[], char y[]){
    char u[MAX_LEN];
    strcpy(u,x);
    strcpy(x,y);
    strcpy(y,u);
}
int   Descending(float a, float b){
    return a<b;
}
int   Ascending(float a, float b){
    return a>b;
}
void  AverSumofEveryStudent(STU stu[], int n, int m){
    for(int i=0;i<n;i++){
        float sum=0;
        for(int j=0;j<m;j++){
            sum+=stu[i].score[j];
        }stu[i].sum=sum;
        stu[i].aver=sum/m;
        printf("student %d: sum=%.0f,aver=%.0f\n",i+1,sum,sum/m);
    }
}
void  AverSumofEveryCourse(STU stu[], int n, int m){
    for(int j=0;j<m;j++){
        float sum=0;
        for(int i=0;i<n;i++){
            sum+=stu[i].score[j];
        }
    printf("course %d:sum=%.0f,aver=%.0f\n",j+1,sum,sum/n);
    }
}
void  ReadScore(STU stu[], int n, int m){
    for(int i=0;i<n;i++){
        scanf("%ld%s",&stu[i].num,stu[i].name);
        for(int j=0;j<m;j++)scanf("%f",&stu[i].score[j]);

    }
}
int   Menu(void){
    printf("Management for Students' scores\n\
1.Input record\n\
2.Caculate total and average score of every course\n\
3.Caculate total and average score of every student\n\
4.Sort in descending order by score\n\
5.Sort in ascending order by score\n\
6.Sort in ascending order by number\n\
7.Sort in dictionary order by name\n\
8.Search by number\n\
9.Search by name\n\
10.Statistic analysis\n\
11.List record\n\
0.Exit\n\
Please Input your choice:\n");
char n;
scanf("%d",&n);

return n;
}
运行效果如图:
图片附件: 游客没有浏览图片的权限,请 登录注册





[此贴子已经被作者于2017-2-25 22:48编辑过]


φ(゜▽゜*)♪
2017-02-25 22:46
快速回复:大二学生的求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023147 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved