【研究创新型】8.1谁能出线【题目描述】电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。【输入】按顺序给出一个小组10个人的最后得分(int)。【输出】能够出线的学生序号(0~9)。【样例输入】989810097959490949392【样例输出】2#includestdio.h#includestdlib.hintmain(){intscore[10];inti,j=0;for(i=0;i10;i++){scanf(%d,&score[i]);if(score[i]j)j=score[i];else;}for(i=0;i10;i++){if(score[i]==j)printf(%d\n,i);else;}system(pause);return0;}【设计型】8.2挑选小白鼠【题目描述】实验室有一批小白鼠,为了评估他们的健康程度,我们为每一只小白鼠都设定了一个“健康指数”。现在我们需要进一步的评估这批小白鼠的健康均衡程度,因此我们需要从中找到健康指数差距最大的两只小白鼠的编号,以此来进一步的进行评估。【输入】第一行是一个整数n(2=n=100),表示的是一共有n只小白鼠。第二行是n个整数(互不相同),分别表示n只小白鼠的健康指数,同时根据输入顺序,从1开始为其编号1,2…n。也就是说第一个整数是第一只小白鼠的健康指数,第二个整数是第二只小白鼠的健康指数,依次类推。【输出】输出健康指数差距最大的两只小白鼠的编号。第一个数是健康指数较大的小白鼠的编号,第二个数是健康指数较小的小白鼠的编号。【样例输入】1012345678911【样例输出】101#includestdio.h#includestdlib.hintmain(){intn,i,j=0,k=100000,x=0,y=0;scanf(%d,&n);ints[100];for(i=0;in;i++){scanf(%d,&s[i]);if(s[i]j)j=s[i];if(s[i]k)k=s[i];}for(i=0;in;i++){if(s[i]==j)x=i;if(s[i]==k)y=i;}printf(%d%d\n,x+1,y+1);system(pause);return0;}【设计型】8.3统计素数的个数求出2到m之间(含m,m=1000)所有素数并放在数组a中。输入:正整数m输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)如:输入:10输出:23574#includestdio.h#includestdlib.hintmain(){intm,i,j,k=0,t=2,n=0,l;inta[1000];scanf(%d,&m);printf(%4d,t);for(i=2;i=m;i++){for(j=2;ji;j++){if(i%j==0)break;elseif(j==i-1){a[n]=i;n=n+1;k=k+1;}else;}}for(l=0;ln;l++){printf(%4d,a[l]);}printf(\n);printf(%d\n,k+1);system(pause);return0;}【设计型】8.4交换理发师傅【题目描述】王师傅的发廊距开张已经有10年之久了!由于王师傅以及其他理发师傅洗剪吹技术娴熟,发廊有了许多常客,连毕业多年的学生也会不时回来学校,到王师傅的发廊做洗剪吹.常客们都有自己喜欢理发师,然而随着运营规模的扩张,理发师的分配时常会出现问题.现在你的任务就是为顾客们交换理发师傅.假设有0...n-1共n名顾客,他们的理发师傅恰巧安排反了.也就是说n-1的理发师傅安排给了0,n-2的理发师傅安排给了1...请帮助他们找到喜欢的理发师傅吧!【输入】第一行一个整型n(1=n=1000),表示顾客的人数第二行n个整型,分别表示现在安排给每位顾客的理发师傅的编号【输出】以此输出为0...n-1位顾客正确安排理发师傅之后的,师傅们的编号每个数字由空格隔开,最后一个数字后无空格。【样例输入】524715【样例输出】51742#includestdio.h#includestdlib.hintmain(){intn,i;scanf(%d,&n);ints[n];for(i=0;in;i++){scanf(%d,&s[i]);}for(i=n-1;i0;i--){printf(%d,s[i]);}printf(%d\n,s[0]);system(pause);return0;}【设计型】8.5二维数组【问题描述】程序定义了4×4的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n。【输入】一个4×4的二维数组,以及一个整数n【输出】变化之后的二维数组【样例输入】12342234323442340【样例输出】(输出的数按照4位宽度来输出,即%4d)0234003400040000#includestdio.h#includestdlib.hintmain(){ints[4][4];inti,j,n;for(i=0;i4;i++){for(j=0;j4;j++){scanf(%d,&s[i][j]);}}scanf(%d,&n);for(i=0;i4;i++){for(j=0;j4;j++){if(i=j){s[i][j]=s[i][j]*n;}}}for(i=0;i4;i++){for(j=0;j4;j++){printf(%4d,s[i][j]);}printf(\n);}system(pause);return0;}【设计型】8.6在屏幕上显示杨辉三角形【题目描述】杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。杨辉三角有如下性质:1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。2、第n行的数字个数为n个。3、每个数字等于上一行的左右两个数字之和。【输入】一个正整数n【输出】按照指定格式输出对应的杨辉三角形(注意数据之间的空格)。【样例输入】5【样例输出】11112113311464115101051#includestdio.h#includestdlib.hintmain(){inta[100][100];inti,j,n;scanf(%d,&n);for(i=0;i=n;i++){for(j=0;j=n;j++){if(i==j||j==0)a[i][j]=1;}}for(i=1;i=n;i++){for(j=1;j=n;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i=n;i++){for(j=0;j=n;j++){if(j=i)printf(%3d,a[i][j]);}printf(\n);}system(pause);return0;}【设计型】8.7插入法排序【题目描述】如果一个数组中保存的元素是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。定义一个数组,长度为11,初始元素为10个,按照从小到大的方式输入,然后输入一个要插入的元素,使得插入后仍然有序。【输入】共两行,第一行为10个从小到大排列的整数;第二行为要插入的数【输出】插入后的顺序【样例输入】1234567891011【样例输出】1234567891011#includestdio.h#includestdlib.hintmain(){inta[11];inti,k,t;for(i=0;i10;i++){scanf(%d,&a[i]);}scanf(%d,&k);for(i=0;i10;i++){if(a[i]k){for(t=9;t=i;t--){a[t+1]=a[t];}a[i]=k;gotoEND;}elseif(a[9]=k){a[10]=k;gotoEND;}else;}END:for(i=0;i11;i++){printf(%d,a[i]);}printf(\n);system(pause);return0;}【设计型】8.8求各位数字组成的最大数【题目描述】任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入1593,则输出为9531。【输入】自然数n【输出】各位数字组成的最大数【样例输入】1593【样例输出】9531#includestdio.h#includestdlib.hintmain(){inta[20];inti,n,t,j,m=0;scanf(%d,&n);while(n!=0){a[m]=n%10;m++;n=n/10;}for(i=0;im-1;i++){for(j=i+1;jm;j++){if(a[j]a[i]){t=a[j];a[j]=a[i];a[i]=t;}}}for(j=0;jm;j++){printf(%d,a[j]);}printf(\n);system(pause);return0;}【设计型】8.9排序与查找【题目描述】上学期,环设13级两个班同学的C语言考试成绩(人数最多不超过70人)比较理想。现要求从键盘输入学生的成绩,编程将成绩按从高到低顺序进行排序输出,并同时输入指定学生的学号和成绩。【输入】有多行。从第一行开始,每行输入两个空格分隔的整数,分别表示每个学生的学号和成绩,当输入负值时,表示输入结束。最后一行输入需要查找的学生学号。【输出】有两行。第一行是按由高到低排好序的学生成绩。第二行输出查找到的学生学号和成绩,若没有找到指定学生,则输出未找到信息。【样例输入】130187130279130390130468-1-21302【样例输出】90877968130279#includestdio.h#includestdlib.hintmain(){inta[70];intb[70];intc[70];intk=0,t,i,j,m,w=0;do{scanf(%d%d,&a[k],&b[k]);k++;}while(a[k-1]=0&&b[k-1]=0);for(i=0;ik-1;i++){c[i]=b[i];}scanf(%d,&m);for(i=0;ik-1;i++){for(j=i+1;jk;j++)if(b[j]b[i]){t=b[j];b[j]=b[i];b[i]=t;}}for(i=0;ik-1;i++){if(i==0)printf(%d,b[i]);elseprintf(%d,b[i]);}printf(\n);for(i=0;ik;i++){if(a[i]==m){printf(%d%d\n,a[i],c[i]);w++;gotoend;}else;}if(w==0)printf(notfind!\n);end:system(pause);return0;}【设计型】8.10导弹速度【题目描述】我叫王大锤,是一个刚找到工作的程序员。万万没想到,刚开始工作的第一天,就发生了大事。某市高校P大与T大由于长期矛盾的积累,终于在这天爆发了全面战争。T大的导弹是突破了次元之壁的导弹,它会先在n维空间中运动,抵达目标后出现在P大相应的位置。P大及时的发明了在n维空间中阻截的方法,并找到了导弹的方向,现在我需要做的是计算出导弹的速度大小。P大找到了我所在的公司,而这个任务竟然落到了刚加入公司的我身上。现在公司的谍报人员已经获知,T大的导弹的速度大小是由先发出的两颗信号弹的速度矢量决定的,他们还顺便帮我捕获到了最终发射出的导弹的速度大小与信号弹速度矢量之间的关系为v(-)=v1·