| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1042 人关注过本帖
标题:这个题怎么用链表怎么做?我用的C语言错的有些细节处理不了
只看楼主 加入收藏
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
结帖率:69.23%
收藏
已结贴  问题点数:20 回复次数:8 
这个题怎么用链表怎么做?我用的C语言错的有些细节处理不了
图片附件: 游客没有浏览图片的权限,请 登录注册
#include<stdio.h>
int main()
{int s[10],a[10][10],b[10],c[10];
int i,j,n,t;
s[0]=0;
scanf("%d",&n);
for(i=0;i<n;++i)
{s[i]=0;
for(j=0;j<n;++j)
{scanf("%d",&a[i][j]);
s[i]+=a[i][j];
b[i]=s[i];
}
}
for(i=0;i<n;++i)
for(j=0;j<n-1-i;++j)
{if(s[j]>s[j+1])
{t=s[j];s[j]=s[j+1];s[j+1]=t;
}
}
for(i=0;i<n;++i)
for(j=0;j<n;++j)

{if(s[i]==b[j])
c[i]=j;
}
for(i=0;i<n;++i)
printf("%d ",c[i]+1);
printf("\n");
return 0;
 }
搜索更多相关主题的帖子: C语言 
2017-03-01 22:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
先申明一下~链表排序~自然会有人处理了~

最近比较忙~看见这条题大概有个思路就放下了~还有很多编程任务~

先下啦~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-01 22:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
啊~还没有人回么~
好吧~

https://bbs.bccn.net/thread-474128-1-1.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-04 00:09
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:10 
#define LOCAL
#include<stdio.h>
int main()
{
    int s[10],a[10][10],b[10],c[10];
    int i,j,n,t;
#ifdef LOCAL
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
#endif
    s[0]=0;
    scanf("%d",&n);
    for(i=0;i<n;++i)//循环n*n次
    {
        s[i]=0;
        for(j=0;j<n;++j)//循环n次
        {
            scanf("%d",&a[i][j]);//成绩表
            s[i]+=a[i][j];
            b[i]=s[i];
        }
    }
    for(i=0;i<n;++i)
        for(j=0;j<n-1-i;++j)
        {
            if(s[j]<s[j+1])
            {
                t=s[j];
                s[j]=s[j+1];
                s[j+1]=t;
            }
        }
    for(i=0;i<n;++i)
        for(j=0;j<n;++j)
        {
            if(s[i]==b[j])
                c[i]=j;
        }
    for(i=0;i<n;++i)
        printf("%d ",c[i]+1);
    printf("\n");
    return 0;
 }
2017-03-04 15:08
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
收藏
得分:0 
回复 3楼 九转星河
用链表做居然那么长啊

刚学习小半年   ,   努力成为专家
2017-03-04 21:38
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
收藏
得分:0 
回复 4楼 mnmn4429
你这个还是没什么变化啊,我说的细节问题是当出现总成绩一样的时候先输出小的学号

刚学习小半年   ,   努力成为专家
2017-03-04 21:40
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
本来想过了今天,给你发过去的,
2017-03-04 21:56
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
链表真麻烦 用的是静态循环链表

#define LOCAL
#include<stdio.h>
#define MAX 100
#define INF 100000000 //无限大
int s[MAX];//成绩数组[数据]
int p[MAX];//排名数组[数据]
int main()
{
    int i,j,k,sh,n;
    int c;//单门成绩输入
#ifdef LOCAL
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
#endif
    scanf("%d",&n);
    s[0] = -INF;
    p[0] = 0;
    for(i = 1;i<=n;i++)//输入每个人的成绩
    {
            
        for(j=0;j<5;j++)//五门成绩
        {
            scanf("%d",&c);
            s[i] += c;//累加算出总成绩
        }
        k = 0;
        while(1)//判断排名
        {   
            if(s[i] > s[p[k]] && k == 0)
            {
                p[i] = p[k];
                p[k] = i;
                break;
            }   
            if(s[i] > s[p[k]] && k != 0)
            {
                p[i] = p[k];
                p[p[sh]] = i;
                break;
            }
            else if(s[i] == s[p[k]])
            {
                p[i] = p[sh];
                p[sh] = i;
                break;
            }
            else
                sh = k;//上一个下标
            k = p[k];   
        }
    }
    i = 0;
    while(1)
    {
        if(p[i]==0)
            break;
        printf("%d ",p[i]);
        i=p[i];
    }
    return 0;
 }
2017-03-05 00:14
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
收藏
得分:0 
回复 8楼 mnmn4429
#include<stdio.h>
#include<stdlib.h>
 
 struct student{
 int num;
 int score;
 struct student* next;
 } ;
 int n;
 int count=0,a,b,c,d,e;
 scanf("%d",&n);
 struct student* creat{
 
 struct *phead=NULL;
 struct *p1,*p2;
 }
 p2=p1=(struct student*)malloc(sizeof(struct student));
 scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
     p1->num=count;
     pi->score=a+b+c+d+e;
 while(count<n)
 {
     count++;
     if(count==1)
     {p1->next=phead;
     p2=p1;
     phead=p1;
         
     }
     else
     {
         p1->next=NULL;
         p2->next=p1;
         p2=p1;
     }
     p1=(struct student*)malloc(sizeof(struct student));
     scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
     p1->num=count+1;
     pi->score=a+b+c+d+e;
 
 }
 
 free(p1);
 return pheaad;
 }
 void print(struct student* pHead)
 {
     
 }我想要做的是这种的,现在基本理解了格式但是还不能把算法添加进去

刚学习小半年   ,   努力成为专家
2017-03-08 22:44
快速回复:这个题怎么用链表怎么做?我用的C语言错的有些细节处理不了
数据加载中...
 
   



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

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