2023年的烧烤让全国的人民了解到了淄博,来自天津的小杨同学也被淄博的温暖所吸引考入了山东理工大学。小杨同学具备天津人的幽默和乐观,于是顺利地进入到学校学生会的宣传部工作,并且协助招聘1名宣传委员。
报名的人很多,每人首先交1张照片,小杨同学需要从n个照片里根据特征值选择1人(序号从 0 到 n - 1),每个参加招聘的同学都有自己的风格,可以按特征划分出 3 个特征值 w1 , w2 , w3 ,宣传部需要 w1 特征值高的同学,不太看重 w3 ,于是小杨同学对于每个特征都赋予一个权重,分别对应为0.7 0.2 0.1,你能帮小杨同学选出宣传部需要的人吗?
第一行给出一个整数 n (n <= 1000) ,之后有 n 行数。
每行数有三个整数 w1, w2, w3,表示三个特征值。
不存在权值和相等的情况。
输出n 个应聘同学中权值和最高的序号。
3
1 5 10
5 1 10
10 5 1
2
#include<stdio.h>
struct
{
int w1;
int w2;
int w3;
}a[1000];
int main()
{
int n,i,k;
int b[1000];
int max=-1;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d %d",&a[i].w1,&a[i].w2,&a[i].w3);
}
for(i=0;i<n;i++)
{
b[i]=a[i].w1*0.7+a[i].w2*0.2+a[i].w3*0.1;
}
for(i=0;i<n;i++)
{
if(b[i]>max)
{
max=b[i];
k=i;
}
}
printf("%d",k);
return 0;
}
某校学生会由全校学生投票选举产生,共有m名候选人报名参选,编号为1到m(0<m<1000),全校有n名学生(0<n<30000),每人都可以投票。但每人只能投一票,每票只能选1名候选人。请你设计一个程序能够统计出哪个候选人得票最高,得了多少票。不会出现得票数相同的情况。
第一行输入候选人数m和学生数n,以空格分开;
下面依次输入每个学生所选的候选人的编号。
第一行输出得票最多的候选人编号;
第二行输出该候选人所得的票数。
3 10
1 2 3 2 3 1 2 3 1 3
3
4
#include<stdio.h>
struct
{
int a[1000];
}b;
int main()
{
int m,n,x,i,k;
int max=-1;
scanf("%d %d",&m,&n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
b.a[x]++;
}
for(x=1;x<=m;x++)
{
if(b.a[x]>max)
{
max=b.a[x];
k=x;
}
}
printf("%d\n%d",k,max);
return 0;
}
SDUT某实验室集训队的选拔又要开始了,集训队需要根据参加者的分数排名来决定谁能够进入集训队。 先要求你写一个自动排名的程序,根据每一个参与选拔的同学的分数进行排名,集训队需要根据大家的分数排名来决定谁能够进入集训队。
你能完成这个程序么?
输入的第一行为n ( 0<n<=50) ;
之后给出n 行,每行为一个人名和ta所得到的分数。保证没有相同的分数。
人名为英文单词,长度不超过10。
输出为n行,每行一个人名与他的得分。每一行最后没有多余的空格。
具体输出格式见样例。
3
Dan 10
John 50
Danny 30
John 50
Danny 30
Dan 10
#include<stdio.h>
struct
{
char name[11];
int score;
}a[50],k;
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d",&a[i].name,&a[i].score);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j].score<a[j+1].score)
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(i=0;i<n;i++)
{
printf("%s %d\n",a[i].name,a[i].score);
}
return 0;
}
倾国倾城的大家闺秀潘小姐要选夫婿啦!武林中各门各派,武林外各大户人家,闻讯纷纷前来,强势围观。前来参与竞选的男生藏龙卧虎,高手云集,才子遍布,帅哥纷纭,更不乏富二代,,可谓声势空前。
每个人参与竞选的帅哥除了进行一段激情洋溢的求婚演讲以外,还要报上自己姓名、身高和体重,以及个人简历。最后再进行文武选拔,最后夺魁者方能得到潘小姐的芳心。
潘小姐不爱名利,只看人,第一关就是身高和体重要合格,即必须在其要求的范围内,否则直接排除在外,不允许参加下一轮的选拔。
作为一个程序员,你没有钱也没有权,擅长的也就是编程了。潘小姐也发现了这一点,所以把首轮根据身高体重进行选拔的任务交给了你,如果完成的好,你可以直接进入下一轮选拔,你笑了。
潘小姐给你了所有报名男生的信息。
输入数据的第一行是一个正整数N (0 < N < 1000)。
之后N 行数据,每行包含三部分,用空格隔开。第一部分是报名者的姓名name(长度小于20的字符串),然后是整数身高h(0 < h < 300),第三部分是整数体重w (0 < w < 200)。
最后一行是四个整数a,b,c,d.表示身高的合格范围是[a,b],体重的合格范围是[c,d](0 < a < b < 200, 0 < c < d < 300)。
你需要把合格的男生信息按照身高从低到高输出,格式跟输入一样,也是每行三个信息,共N行,如果身高相同则按体重从轻到重输出,若没有合格人选则输出No,具体格式见样例。
8
武大郎 70 40
西门庆 180 70
李逵 160 150
燕青 175 69
鲁智深 180 100
武松 180 75
小泉纯一狼 30 20
孙二娘 169 60
165 190 60 90
孙二娘 169 60
燕青 175 69
西门庆 180 70
武松 180 75
#include<stdio.h>
struct
{
char name[21];
int h;
int w;
}ren[1000],k;
int main()
{
int n,i,j,a,b,c,d,flag=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d %d",&ren[i].name,&ren[i].h,&ren[i].w);
}
scanf("%d %d %d %d",&a,&b,&c,&d);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((ren[j].h>ren[j+1].h)||((ren[j].h==ren[j+1].h)&&(ren[j].w>ren[j+1].w)))
{
k=ren[j+1];
ren[j+1]=ren[j];
ren[j]=k;
}
}
}
for(i=0;i<n;i++)
{
if(ren[i].h>=a&&ren[i].h<=b&&ren[i].w>=c&&ren[i].w<=d)
{
printf("%s %d %d\n",ren[i].name,ren[i].h,ren[i].w);
flag=1;
}
}
if(flag==0)
printf("No");
return 0;
}
输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。
第一行输入整数的个数N;
第二行依次输入每个整数。
输出这组整数。
8
12 56 4 6 55 15 33 62
12 56 4 6 55 15 33 62
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node*next;
};
int main()
{
int n,i;
scanf("%d",&n);
struct node*head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
struct node*tail=head;
for(i=0;i<n;i++)
{
struct node*p=(struct node*)malloc(sizeof(struct node));
p->next=NULL;
scanf("%d",&p->data);
p->next=tail->next;
tail->next=p;
tail=tail->next;
}
struct node*r=(struct node*)malloc(sizeof(struct node));
r=head->next;
while(r)
{
if(r->next==NULL)
printf("%d",r->data);
else
printf("%d ",r->data);
r=r->next;
}
return 0;
}
输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。
输入多个整数,以-1作为结束标志。
输出逆置后的单链表数据。
12 56 4 6 55 15 33 62 -1
62 33 15 55 6 4 56 12
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *creat()
{
struct node *head,*tail,*p;
int num;
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
while(~scanf("%d",&num)&&num!=-1)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=num;
p->next=NULL;
tail->next=p;
tail=p;
}
return head;
}
struct node *reverse(struct node *head)
{
struct node *p,*q;
p=head->next;
head->next=NULL;
q=p->next;
while(p!=NULL)
{
p->next=head->next;
head->next=p;
p=q;
if(q!=NULL)
q=q->next;
}
return head;
}
int main()
{
struct node *head,*p;
head=creat();
head=reverse(head);
p=head->next;
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("%d\n",p->data);
return 0;
}
给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。
多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。
接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。
对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。
4
1 1
1 2
0 3
100 4
3 1 2 4
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
int n,m,x;
struct node *head,*p,*q;
while(~scanf("%d",&n))
{
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
while(n--)
{
q=head;
scanf("%d %d",&m,&x);
while(m--&&q->next)//☆找指针的位置
q=q->next;
p=(struct node *)malloc(sizeof(struct node));//逆序建链表
p->data=x;
p->next=NULL;
p->next=q->next;
q->next=p;
}
q=head->next;
while(q)
{
if(q->next==NULL) printf("%d\n",q->data);
else printf("%d ",q->data);
q=q->next;
}
}
return 0;
}
中国人民自古具有不怕死的精神,尤其在保家卫国的战场上,为了保卫祖国和人民,总是有人勇敢加入“敢死队”,不怕困难,勇于牺牲。大家不要以为我来介绍电影了,因为数据结构里真有这么道程序设计题目,原题如下:
淄博市马鞍山保卫战中,有M个敢死队员要炸掉敌人的一个碉堡,谁都抢着想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。
今天大家就要完成这道敢死队问题。我们假设排长是1号,按照上面介绍,从一号开始数,数到5的那名战士去执行任务,那么排长是第几个去执行任务的?
输入包括多组数据,每行一个整数M(0<=M<=10000)(敢死队人数),若M=0,输入结束,不做处理。
输出一个整数n,代表排长是第n个去执行任务。
9
6
223
0
在这里给出相应的输出。例如:
2
6
132
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
int n,m,i,k=0,j;
struct node *head,*tail,*p,*q;
while(~scanf("%d",&m)&&m!=0)
{
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
head->data=1;
tail=head;
for(i=2;i<=m;i++)
{
p=(struct node*)malloc(sizeof(struct node));
p->data=i;
tail->next=p;
tail=p;
}
tail->next=head;
p=head;
k=0;
j=0;
q=tail->next;
while(p->next!=NULL)
{
j++;
if(j==4)
{
q=p->next;
if(q->data==1)
break;
else {
p->next=p->next->next;
free(q);
j=0;
k++;
}
}
p=p->next;
}
printf("%d\n",k+1);
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- kqyc.cn 版权所有 赣ICP备2024042808号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务