C语言作业4.pdf
25 等值数列段成绩:10/折扣:0.8 如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。输入:由 N 个元素组成的整数数列A(其中 N=50)输出:A 中长度最大的所有等值数列段的始末位置,如果没有等值数列段,则输出No equal number list.说明:始末位置是指数组下标,即0 表示第一个元素。如果有多个同等长度的等值数列,只输出第一个等值数列的起始位置。当在一个LIST 中出现两个等长的连续串的时候,我们的答案应该是第一个等长串。测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.52.1 2 3 4 5以文本方式显示1.No equal number list.1秒64M 0 测试用例2 以文本方式显示1.62.1 0 1 1 1 0以文本方式显示1.The longest equal number list is from 2 to 4.1秒64M 0 测试用例5 以文本方式显示1.82.1 1 0 1 1 1 0 1以文本方式显示1.The longest equal number list is from 3 to 5.1秒64M 0#include struct from_to int from;int to;void main()int a1000;int N;scanf(%d,&N);int i;for(i=0;iN;i+)scanf(%d,&ai);int j;struct from_to b1000;b0.from=0;j=0;for(i=1;iN;i+)if(ai!=ai-1)bj.to=i;j+;bj.from=i;bj.to=N;int c1000;for(i=0;i=j;i+)ci=bi.to-bi.from;int max=c0;int k=0;for(i=0;i=j;i+)if(maxci)max=ci;k=i;if(bk.to=1)printf(No equal number list.n);else printf(The longest equal number list is from%d to%d.n,bk.from,bk.to-1);26 大家一起做游戏成绩:15/折扣:0.8 幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如 5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。输入:小朋友的个数(=50)要被练习的数字输出:最终被留下的小朋友的序号说明:如“要被练习的数字”是 5,则每次数到5 的同学要退出该游戏测试输入期待的输出时间限制内存限制额外进程测试用例 2 以文本方式显示1.4 3以文本方式显示1.The left child is NO 1.1 秒64M 0#include#define N 50 int main()int aN;int i,j,n,s,k=0;scanf(%d%d,&n,&s);for(i=0;i0)printf(The left child is NO%d.n,ai);break;return 0;25 大数分解成绩:5/折扣:0.8 我们在“计算机科学导论”的期末考试中有一道试题。下面请你看看那题目应该如何编写。从键盘输入的一个大于1 的整数,通过算法将该整数分解为若干因子的乘积。输入:一个正整数。输出:分解后的各个因子。测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.24以文本方式显示1.22.23.24.31 秒64M 0 测试用例2 以文本方式显示1.17以文本方式显示1.171 秒64M 0 测试用例3 以文本方式显示以文本方式显示1 秒64M 0 1.151.32.5测试用例4 以文本方式显示1.3以文本方式显示1.31 秒64M 0 测试用例5 以文本方式显示1.2以文本方式显示1.21 秒64M 0 答案#include int main()int a,i;scanf(%d,&a);for(i=2;i=a;i+)if(a%i=0)printf(%dn,i);a=a/i;i=1;return 0;23 删除重复字符成绩:5/折扣:0.8 背景:输入一个长度不超过100 的字符串,删除串中的重复字符。输入:输入要检查的字符串,长度不超过100 个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字符串。例如:abced。测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.abacaeedabcdcd以文本方式显示1.abced1 秒 64M 0 测试用例2 以文本方式显示1.111122233344455577yuyuyu以文本方式显示1.123457yu1 秒 64M 0 测试用例3 以文本方式显示1.11111111111111以文本方式显示1.11 秒 64M 0 答案#include#define N 102 int main()char aN;int i=0,k,j=0;scanf(%s,a);for(;ai!=0;i+)for(k=0;k=j;k+)if(ak=ai)break;if(k=j&aj!=ai)aj+1=ai;j+;for(i=0;i=j;i+)printf(%c,ai);printf(n);return 0;24 单词排序成绩:10/折扣:0.8 输入5 个单词,将它们按从大到小的顺序排列后输出。输入:5 个单词输出:排序后的顺序测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.BASIC2.C+3.Pascal4.C5.Fortran以文本方式显示1.Pascal2.Fortran3.C+4.C5.BASIC1 秒64M 0 答案#include#include#define N 25 int main()char a5N,b5N;int i,k,j;for(i=0;i5;i+)scanf(%s,ai);for(j=0;j5;j+)for(i=0,k=0;i5;i+)if(strcmp(aj,ai)0)k+;strcpy(bk,aj);for(i=0;i5;i+)printf(%sn,bi);return 0;27 二年级小学生的题目成绩:10/折扣:0.8 两个二年级小朋友在一起玩游戏,小明给出一堆不超过两位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。输入:用逗号分隔的不超过两位的正整数序列,及其运算符和等号输出:最大数 op 最小数=结果测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.1,2,3,4,5,+,=以文本方式显示1.5+1=61 秒10240KB 0 测试用例6以文本方式显示1.1,0,/,=以文本方式显示1.Error!1 秒10240KB 0#include int main()int op=0;int max=0;int min=99;int mark=0;int n1=-1,n2=-1,n=0;for(;1;)char c;scanf(%c,&c);if(c=,)if(mark=1)n=n1;else if(mark=2)n=n1*10+n2;if(nmax)max=n;if(nmin)min=n;mark=0;n1=-1,n2=-1;continue;if(c=+)op=1;else if(c=-)op=2;else if(c=*)op=3;else if(c=/)op=4;else if(c=%)op=5;else if(c=)break;else if(c=0)if(mark=0)n1=c-0;mark=1;else if(mark=1)n2=c-0;mark=2;switch(op)case 1:printf(%d+%d=%dn,max,min,max+min);break;case 2:printf(%d-%d=%dn,max,min,max-min);break;case 3:printf(%d*%d=%dn,max,min,max*min);break;case 4:if(min=0)printf(Error!n);else printf(%d/%d=%dn,max,min,max/min);break;case 5:if(min=0)printf(Error!n);else printf(%d%d=%dn,max,min,max%min);break;