}
for(i=0;i<10;i++)
{if(a[i]==max)
printf("%d\n",i);
}
}
24.寻找特殊偶数
成绩:
5/折扣:
0.8
背景
有一种特殊偶数,它每一位上的数字都两两不相同。
我们现在需要找出四位数中某一区间内的这类偶数。
输入
所要寻找的四位偶数的范围。
每组输入有两个数字:
第一个数字是最小范围;第二个数字是最大范围。
如果输入遇到0,输入结束。
输出
列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。
1.#include
2.main()
3.{
4.inta,b,counter,i,number1,number2,number3,number4;
5.do
6.{
7.scanf("%d%d",&a,&b);
8.if((a==0)&&(b==0))
9.break;
10.if(a>=b)printf("Error\n");
11.else
12.{
13.if((a<1000)||(b<1000))printf("Error\n");
14.else
15.{
16.for(i=a,counter=0;i<=b;i++)
17.{
18.number1=i/1000;
19.number2=i/100%10;
20.number3=i/10%10;
21.number4=i%10;
22.if((number1!
=number2)&&(number1!
=number3)&&(number1!
=number4)&&(number2!
=number3)&&(number2!
=number4)&&(number3!
=number4))
23.{
24.if((i%2)==0)
25.{
26.printf("%d",i);
27.counter++;
28.}
29.}
30.}
31.printf("\n");
32.printf("counter=%d\n",counter);
33.}
34.}
35.}
36.while((a!
=0)&&(b!
=0));
37.return;
38.}
26二年级小学生的题目
成绩:
10/折扣:
0.8
两个二年级小朋友在一起玩游戏,小明给出一堆不超过两位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。
输入:
用逗号分隔的不超过两位的正整数序列,及其运算符和等号
输出:
最大数op最小数=结果
1.#include
2.intmain()
3.{
4.intop=0;
5.intmax=0;
6.intmin=99;
7.intmark=0;
8.intn1=-1,n2=-1,n=0;
9.for(;1;)
10.{
11.charc;
12.scanf("%c",&c);
13.if(c==',')
14.{
15.if(mark==1)
16.n=n1;
17.elseif(mark==2)
18.n=n1*10+n2;
19.if(n>max)
20.{max=n;}
21.if(n22.{min=n;}
23.mark=0;
24.n1=-1,n2=-1;
25.continue;
26.}
27.if(c=='+')
28.op=1;
29.elseif(c=='-')
30.op=2;
31.elseif(c=='*')
32.op=3;
33.elseif(c=='/')
34.op=4;
35.elseif(c=='%')
36.op=5;
37.elseif(c=='=')
38.{break;}
39.elseif(c<='9'&&c>='0')
40.{
41.if(mark==0)
42.{n1=c-'0';mark=1;}
43.elseif(mark==1)
44.{n2=c-'0';mark=2;}
45.
46.}
47.}
48.switch(op)
49.{
50.case1:
51.{
52.printf("%d+%d=%d\n",max,min,max+min);
53.break;
54.}
55.case2:
56.{
57.printf("%d-%d=%d\n",max,min,max-min);
58.break;
59.}
60.case3:
61.{
62.printf("%d*%d=%d\n",max,min,max*min);
63.break;
64.}
65.case4:
66.{
67.if(min==0)
68.printf("Error!
\n");
69.else
70.{
71.printf("%d/%d=%d\n",max,min,max/min);
72.}
73.break;
74.}
75.case5:
76.{
77.if(min==0)
78.printf("Error!
\n");
79.else
80.{
81.printf("%d%%%d=%d\n",max,min,max%min);
82.}
83.break;
84.}
85.}
86.}
27等值数列段
成绩:
10/折扣:
0.8
如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。
等值数列段中元素的个数叫做等值数列段的长度。
输入:
由N个元素组成的整数数列A(其中N<=50)
输出:
A中长度最大的所有等值数列段的始末位置,如果没有等值数列段,则输出Noequalnumberlist.
说明:
始末位置是指数组下标,即0表示第一个元素。
如果有多个同等长度的等值数列,只输出第一个等值数列的起始位置。
当在一个LIST中出现两个等长的连续串的时候,我们的答案应该是第一个等长串。
1.#include
2.intmain()
3.{
4.
5.for(;1;)
6.{
7.intnum[50]={0};
8.intn=0;
9.
10.scanf("%d",&n);
11.for(inti=0;i12.{scanf("%d",&num[i]);}
13.intstarttemp=num[0];
14.intstart=num[0];
15.inta=-1;
16.intb=0;
17.intcount=1;
18.intcounttemp=1;
19.
20.for(inti=1;i21.{
22.if(num[i]==num[i-1])
23.{
24.a=i;
25.counttemp++;
26.if(counttemp>count)
27.{b=a;count=counttemp;}
28.continue;
29.}
30.else
31.{
32.counttemp=1;
33.}
34.
35.}
36.if(a==-1)
37.{printf("Noequalnumberlist.\n");break;}
38.else
39.{printf("Thelongestequalnumberlistisfrom%dto%d.\n",b+1-count,b);break;}
40.}
41.}
28大家一起做游戏
成绩:
15/折扣:
0.8
幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。
规则如下:
所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。
每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。
现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。
输入:
小朋友的个数(<=50)要被练习的数字
输出:
最终被留下的小朋友的序号
说明:
如“要被练习的数字”是5,则每次数到5的同学要退出该游戏
1.#include
2.voidmain()
3.{
4.intN,n,i,s=0,a;
5.scanf("%d%d\n",&N,&n);
6.for(i=2;i<=N;i++)
7.s=(s+n)%i;
8.a=s+1;
9.printf("TheleftchildisNO%d.\n",a);
10.}
29组成最大数
成绩:
10/折扣:
0.8
任意输入一个自然数,输出该自然数的各位数字组成的最大数。
例如,输入1593,则输出为9531。
输入:
自然数n
输出:
各位数字组成的最大数
1.#include
2.#include
3.intmain()
4.{
5.chara[100000],c;
6.inti,j,k;
7.scanf("%s",&a);
8.i=strlen(a);
9.for(j=0;j10.for(k=0;k11.{
12.if(a[k]13.{
14.c=a[k];
15.a[k]=a[k+1];
16.a[k+1]=c;
17.}
18.}
19.printf("%s",a);
20.printf("\n");
21.}
30删除重复字符
成绩:
5/折扣:
0.8
背景:
输入一个长度不超过100的字符串,删除串中的重复字符。
输入:
输入要检查的字符串,长度不超过100个字符。
例如:
abacaeedabcdcd。
输出:
删除重复字符后的字符串。
例如:
abced。
1.#include
2.
3.#include
4.
5.intalread_saved(charlastchar,charnewstr[],intj)
6.
7.{
8.
9.inti=0;
10.
11.while(i12.
13.{
14.
15.if(lastchar==newstr[i])return1;
16.
17.i++;
18.
19.}
20.
21.return0;
22.
23.}
24.
25.voidmain()
26.
27.{
28.charstr[100];charnewstr[100];intn,i,j;
29.
30.i=0;
31.
32.j=0;
33.
34.gets(str);
35.
36.while(str[i]!
='\0')
37.
38.{
39.
40.if(!
alread_saved(str[i],newstr,j))
41.{newstr[j]=str[i];j++;
42.
43.}
44.i++;
45.
46.}
47.
48.newstr[j]='\0';
49.
50.puts(newstr);
51.
52.}
31合并字符串
成绩:
10/折扣:
0.8
输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
输入:
两个已经排好顺序(升序)的两个字符串
输出:
一个合并在一起的有序(升序)的字符串
要求:
设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
1.#include
2.
3.#include
4.
5.voidMergeList(charstr1[],charstr2[],charstr3[]);
6.
7.voidmain()
8.
9.{
10.charstr1[100];charstr2[100];charstr3[100];gets(str1);gets(str2);
11.
12.MergeList(str1,str2,str3);
13.
14.printf("%s\n",str3);
15.
16.}
17.
18.voidMergeList(charstr1[],charstr2[],charstr3[])
19.
20.{
21.
22.inti,j,k;
23.
24.i=0;j=0;k=0;
25.intlengthOfStr1,lengthOfStr2;lengthOfStr1=strlen(str1);lengthOfStr2=strlen(str2);
26.while(i27.
28.{
29.if(str1[i]<=str2[j])str3[k++]=str1[i++];elsestr3[k++]=str2[j++];
30.
31.}
32.while(i33.
34.}
32串的减法
成绩:
10/折扣:
0.8
输入字符串s和t(串长不超过80个字符),将在字符串s中出现,但未在字符串t中出现的字符组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u。
例如:
当s="112345",t="2467"时,u="1135"。
输入:
第一行为串s
第二行为串t
输出:
串u
1.#include
2.#include
3.intmain()
4.{
5.chara[80];
6.charb[80];
7.gets(a);
8.gets(b);
9.
10.intl=strlen(a);
11.
12.for(inti=0;b[i]!
='\0';i++)