C语言作业.docx
《C语言作业.docx》由会员分享,可在线阅读,更多相关《C语言作业.docx(20页珍藏版)》请在冰点文库上搜索。
C语言作业
撞球
#include
intmain()
{
doublelength,wide,x0,y0,x1,y1;
inti;
chartowards[1500];
while
(1)
memset(towards,0,sizeof(towards));
if(scanf("%lf%lf",&wide,&length)==EOF)
break;
scanf("%lf%lf",&x0,&y0);
scanf("%lf%lf",&x1,&y1);
scanf("%s",towards);
for(i=0;i{if(towards[i]=='F')y0=-y0;if(towards[i]=='B')y0=2*length-y0;if(towards[i]=='L')x0=-x0;if(towards[i]=='R')x0=2*wide-x0;}printf("%.4lf\n",sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)));}return(0);}20.整数问题成绩:0/折扣:0.8请求输出满足以下条件的n位正整数的个数:要求该n位整数的从高位开始前1位可以被1整除,该n位整数前2位可以被2*2整除,该整数前3位可以被3*3整除,该整数前4位可以被4*4整除……。即该整数前k位都可被k平方整除。例如:n=1,则符合条件的1位正整数为1~9,输出答案9。n=2,符合条件的正整数为:12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,则输出答案22。当n=4时,2432就是一个符合题意的整数。第一位2可以被1整除;前2为24可以被4整除;前3位243可以被9整除;整个4位2432可以被16整除。输入: n(0<=n<9)输出: 符合该条件的n位正整数的数量(本题目为软件学院2007年保研学生初试上机试题。本题可以不用数组) 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.1↵以文本方式显示1.9↵无限制64M0测试用例2以文本方式显示1.2↵以文本方式显示1.22↵无限制64M0测试用例6以文本方式显示1.8↵以文本方式显示1.0↵无限制64M0思路一:做9个数组,第一个数组为1-9,从n=2开始,将上一组的每个数乘10加0-9,验算得到的数是否是n^2的整数倍,是则存入当前数组。完成后第n个数组的长度即是所求。思路二:直接数完9组数据,做成映射表。1,2,3,4,5,6,7,8,9共9个12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92共22个126,162,207,243,288,324,360,369,405,441,486,522,567,603,648,684,720,729,765,801,846,882,927,963共24个1264,2432,2880,3248,3600,3696,4416,4864,6032,6480,6848,7200,7296,8016,8464,9632,共16个24325,28800,36000,60325,64800,72000,96325,共7个243252,288000,360000,603252,648000,720000,963252,共7个6480005,共1个n=8,9时个数为0则建立数组a[9]={9,22,24,16,7,7,1,0,0},输入n则直接输出数组的第n个值即可注意,如果数组计数从0开始,则输入n要输出a[n-1]#includevoidmain(){intn;n<9;scanf("%d",&n);{if(n==1)printf("9\n");}{if(n==2)printf("22\n");}{if(n==3)printf("24\n");}{if(n==4)printf("16\n");}{if((n==5)||(n==6))printf("7\n");}{if(n==7)printf("1\n");}{if((n==8)||(n==0))printf("0\n");}}H5铺地板(选作)成绩:5/折扣:0.8背景: 你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:12671535814164913172210121821231119202425学了C语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。输入: 方阵N的大小。输出方阵。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5↵以文本方式显示1. 1 2 6 7 15↵2. 3 5 8 14 16↵3. 4 9 13 17 22↵4.10 12 18 21 23↵5.11 19 20 24 25↵1秒64M0测试用例2以文本方式显示1.3↵以文本方式显示1. 1 2 6↵2. 3 5 7↵3. 4 8 9↵1秒64M0测试用例5以文本方式显示1.9↵以文本方式显示1. 1 2 6 7 15 16 28 29 45↵2. 3 5 8 14 17 27 30 44 46↵3. 4 9 13 18 26 31 43 47 60↵4.10 12 19 25 32 42 48 59 61↵5.11 20 24 33 41 49 58 62 71↵6.21 23 34 40 50 57 63 70 72↵7.22 35 39 51 56 64 69 73 78↵8.36 38 52 55 65 68 74 77 79↵9.37 53 54 66 67 75 76 80 81↵1秒64M0#defineN50#includemain(){intc,d,b,h,i,j,n,a[N][N];scanf("%d",&b);if(b==1)printf("%d\n",b);else{for(i=0;ifor(j=0;j{if(i+j{d=((i+j)*(j+i+1))/2;if((i+j)%2==0)a[i][j]=d+j+1;elsea[i][j]=d+1+i;}if(i+j>=b){c=0;h=i+j-b;for(n=b-1;h>0;n--,h--)c=c+n;d=(b+1)*b/2+c;if((i+j)%2==0)a[i][j]=d+b-i;elsea[i][j]=d+b-j;}}for(i=0;i{for(j=0;jif(a[i][j]<=9)printf("%d",a[i][j]);elseprintf("%d",a[i][j]);if(a[i][j]<=9)printf("%d\n",a[i][j]);elseprintf("%d\n",a[i][j]);}}}H8邮票组合(选作)成绩:5/折扣:0.9背景: 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。 现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可相同,可不同。输入: 四种邮票的面值。输出: 用这四种面值组成的邮资最大的从1开始的一个连续的区间。说明: 如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。名词解释: 邮资:就是你寄东西需要花多少钱。 邮票面额:是由国家发行的具有固定价格的花纸片,被称为邮票。如果你寄东西,邮局称了重量,告诉你要240分。这样你就要贴邮票了。如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。显然不同邮票的组合都可以得到同样一种邮资。 测试输入期待的输出时间限制内存限制额外进程测试用例2以文本方式显示1.1 3 7 12↵以文本方式显示1.The max is 46.↵1秒64M0#includeintneng(inta[],intmax){inti,j,k,m,n;intsum;for(i=0;i<5;i++)for(j=0;j<5;j++)for(k=0;k<5;k++)for(m=0;m<5;m++)for(n=0;n<5;n++){sum=a[i]+a[j]+a[k]+a[m]+a[n];if(sum==max)return1;}return0;}voidmain(){inta[5],i;intmax=0;a[4]=0;scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);while(1){if(neng(a,max)){max++;}elsebreak;}printf("Themaxis%d.\n",max-1);}H6晕(选作)成绩:5/折扣:0.8看着这样的“回”形图案你晕吗?让我们不用数组,来做出它。输入: n。正方形的边长输出: 边长为n的数字回形方阵。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.3↵以文本方式显示1. 1 2 3↵2. 8 9 4↵3. 7 6 5↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1. 1 2 3 4↵2. 12 13 14 5↵3. 11 16 15 6↵4. 10 9 8 7↵无限制64M0测试用例5以文本方式显示1.5↵以文本方式显示1. 1 2 3 4 5↵2. 16 17 18 19 6↵3. 15 24 25 20 7↵4. 14 23 22 21 8↵5. 13 12 11 10 9↵无限制64M0#include#defineN20voidmain(){intn,x1,x2,x3,x4,y,flag=1,s,i=0,j=0,a[N][N];scanf("%d",&n);x1=n;x2=x3=n-1;x4=n-2;for(s=1;flag;){for(y=0;yx1-=2;i++;j--;if(s==n*n+1)flag=0;for(y=0;yx2-=2;j--;i--;if(s==n*n+1)flag=0;for(y=0;yx3-=2;i--;j++;if(s==n*n+1)flag=0;for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
if(towards[i]=='F')
y0=-y0;
if(towards[i]=='B')
y0=2*length-y0;
if(towards[i]=='L')
x0=-x0;
if(towards[i]=='R')
x0=2*wide-x0;
}
printf("%.4lf\n",sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)));
return(0);
20.整数问题
成绩:
0/折扣:
0.8
请求输出满足以下条件的n位正整数的个数:
要求该n位整数的从高位开始前1位可以被1整除,该n位整数前2位可以被2*2整除,该整数前3位可以被3*3整除,该整数前4位可以被4*4整除……。
即该整数前k位都可被k平方整除。
例如:
n=1,则符合条件的1位正整数为1~9,输出答案9。
n=2,符合条件的正整数为:
12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,则输出答案22。
当n=4时,2432就是一个符合题意的整数。
第一位2可以被1整除;前2为24可以被4整除;前3位243可以被9整除;整个4位2432可以被16整除。
输入:
n(0<=n<9)
输出:
符合该条件的n位正整数的数量
(本题目为软件学院2007年保研学生初试上机试题。
本题可以不用数组)
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例1
以文本方式显示
1.1↵
1.9↵
无限制
64M
0
测试用例2
1.2↵
1.22↵
测试用例6
1.8↵
1.0↵
思路一:
做9个数组,第一个数组为1-9,从n=2开始,将上一组的每个数乘10加0-9,验算得到的数是否是n^2的整数倍,是则存入当前数组。
完成后第n个数组的长度即是所求。
思路二:
直接数完9组数据,做成映射表。
1,2,3,4,5,6,7,8,9共9个
12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92共22个
126,162,207,243,288,324,360,369,405,441,486,522,567,603,648,684,720,729,765,801,846,882,927,963共24个
1264,2432,2880,3248,3600,3696,4416,4864,6032,6480,6848,7200,7296,8016,8464,9632,共16个
24325,28800,36000,60325,64800,72000,96325,共7个
243252,288000,360000,603252,648000,720000,963252,共7个
6480005,共1个
n=8,9时个数为0
则建立数组a[9]={9,22,24,16,7,7,1,0,0},输入n则直接输出数组的第n个值即可
注意,如果数组计数从0开始,则输入n要输出a[n-1]
voidmain()
{intn;
n<9;
scanf("%d",&n);
{if(n==1)
printf("9\n");
{if(n==2)
printf("22\n");
{if(n==3)
printf("24\n");
{if(n==4)
printf("16\n");
{if((n==5)||(n==6))
printf("7\n");
{if(n==7)
printf("1\n");
{if((n==8)||(n==0))
printf("0\n");
H5铺地板(选作)
5/折扣:
背景:
你是一名室内装潢工程队的配料员。
你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:
1
2
6
7
15
3
5
8
14
16
4
9
13
17
22
10
12
18
21
23
11
19
20
24
25
学了C语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。
方阵N的大小。
输出
方阵。
1.5↵
1. 1 2 6 7 15↵
2. 3 5 8 14 16↵
3. 4 9 13 17 22↵
4.10 12 18 21 23↵
5.11 19 20 24 25↵
1秒
1.3↵
1. 1 2 6↵
2. 3 5 7↵
3. 4 8 9↵
测试用例5
1. 1 2 6 7 15 16 28 29 45↵
2. 3 5 8 14 17 27 30 44 46↵
3. 4 9 13 18 26 31 43 47 60↵
4.10 12 19 25 32 42 48 59 61↵
5.11 20 24 33 41 49 58 62 71↵
6.21 23 34 40 50 57 63 70 72↵
7.22 35 39 51 56 64 69 73 78↵
8.36 38 52 55 65 68 74 77 79↵
9.37 53 54 66 67 75 76 80 81↵
#defineN50
main()
intc,d,b,h,i,j,n,a[N][N];
scanf("%d",&b);
if(b==1)printf("%d\n",b);
else{
for(i=0;i
for(j=0;j
{if(i+j
{d=((i+j)*(j+i+1))/2;
if((i+j)%2==0)a[i][j]=d+j+1;
elsea[i][j]=d+1+i;}
if(i+j>=b)
{c=0;h=i+j-b;
for(n=b-1;h>0;n--,h--)
c=c+n;d=(b+1)*b/2+c;
if((i+j)%2==0)a[i][j]=d+b-i;
elsea[i][j]=d+b-j;}
{for(j=0;jif(a[i][j]<=9)printf("%d",a[i][j]);elseprintf("%d",a[i][j]);if(a[i][j]<=9)printf("%d\n",a[i][j]);elseprintf("%d\n",a[i][j]);}}}H8邮票组合(选作)成绩:5/折扣:0.9背景: 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。 现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可相同,可不同。输入: 四种邮票的面值。输出: 用这四种面值组成的邮资最大的从1开始的一个连续的区间。说明: 如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。名词解释: 邮资:就是你寄东西需要花多少钱。 邮票面额:是由国家发行的具有固定价格的花纸片,被称为邮票。如果你寄东西,邮局称了重量,告诉你要240分。这样你就要贴邮票了。如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。显然不同邮票的组合都可以得到同样一种邮资。 测试输入期待的输出时间限制内存限制额外进程测试用例2以文本方式显示1.1 3 7 12↵以文本方式显示1.The max is 46.↵1秒64M0#includeintneng(inta[],intmax){inti,j,k,m,n;intsum;for(i=0;i<5;i++)for(j=0;j<5;j++)for(k=0;k<5;k++)for(m=0;m<5;m++)for(n=0;n<5;n++){sum=a[i]+a[j]+a[k]+a[m]+a[n];if(sum==max)return1;}return0;}voidmain(){inta[5],i;intmax=0;a[4]=0;scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);while(1){if(neng(a,max)){max++;}elsebreak;}printf("Themaxis%d.\n",max-1);}H6晕(选作)成绩:5/折扣:0.8看着这样的“回”形图案你晕吗?让我们不用数组,来做出它。输入: n。正方形的边长输出: 边长为n的数字回形方阵。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.3↵以文本方式显示1. 1 2 3↵2. 8 9 4↵3. 7 6 5↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1. 1 2 3 4↵2. 12 13 14 5↵3. 11 16 15 6↵4. 10 9 8 7↵无限制64M0测试用例5以文本方式显示1.5↵以文本方式显示1. 1 2 3 4 5↵2. 16 17 18 19 6↵3. 15 24 25 20 7↵4. 14 23 22 21 8↵5. 13 12 11 10 9↵无限制64M0#include#defineN20voidmain(){intn,x1,x2,x3,x4,y,flag=1,s,i=0,j=0,a[N][N];scanf("%d",&n);x1=n;x2=x3=n-1;x4=n-2;for(s=1;flag;){for(y=0;yx1-=2;i++;j--;if(s==n*n+1)flag=0;for(y=0;yx2-=2;j--;i--;if(s==n*n+1)flag=0;for(y=0;yx3-=2;i--;j++;if(s==n*n+1)flag=0;for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
if(a[i][j]<=9)printf("%d",a[i][j]);
elseprintf("%d",a[i][j]);
if(a[i][j]<=9)printf("%d\n",a[i][j]);
elseprintf("%d\n",a[i][j]);}
H8邮票组合(选作)
0.9
我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。
现在,邮局有4种不同面值的邮票。
在每个信封上最多能贴5张邮票,面值可相同,可不同。
四种邮票的面值。
用这四种面值组成的邮资最大的从1开始的一个连续的区间。
说明:
如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。
名词解释:
邮资:
就是你寄东西需要花多少钱。
邮票面额:
是由国家发行的具有固定价格的花纸片,被称为邮票。
如果你寄东西,邮局称了重量,告诉你要240分。
这样你就要贴邮票了。
如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:
采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。
显然不同邮票的组合都可以得到同样一种邮资。
1.1 3 7 12↵
1.The max is 46.↵
intneng(inta[],intmax)
inti,j,k,m,n;
intsum;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++)
for(m=0;m<5;m++)
for(n=0;n<5;n++)
sum=a[i]+a[j]+a[k]+a[m]+a[n];
if(sum==max)return1;
return0;
inta[5],i;
intmax=0;
a[4]=0;
scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
if(neng(a,max))
max++;
elsebreak;
printf("Themaxis%d.\n",max-1);
H6晕(选作)
看着这样的“回”形图案你晕吗?
让我们不用数组,来做出它。
n。
正方形的边长
边长为n的数字回形方阵。
1. 1 2 3↵
2. 8 9 4↵
3. 7 6 5↵
1.4↵
1. 1 2 3 4↵
2. 12 13 14 5↵
3. 11 16 15 6↵
4. 10 9 8 7↵
1. 1 2 3 4 5↵
2. 16 17 18 19 6↵
3. 15 24 25 20 7↵
4. 14 23 22 21 8↵
5. 13 12 11 10 9↵
#defineN20
intn,x1,x2,x3,x4,y,flag=1,s,i=0,j=0,a[N][N];
x1=n;x2=x3=n-1;x4=n-2;
for(s=1;flag;)
for(y=0;yx1-=2;i++;j--;if(s==n*n+1)flag=0;for(y=0;yx2-=2;j--;i--;if(s==n*n+1)flag=0;for(y=0;yx3-=2;i--;j++;if(s==n*n+1)flag=0;for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
x1-=2;i++;j--;
if(s==n*n+1)flag=0;
for(y=0;yx2-=2;j--;i--;if(s==n*n+1)flag=0;for(y=0;yx3-=2;i--;j++;if(s==n*n+1)flag=0;for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
x2-=2;j--;i--;
for(y=0;yx3-=2;i--;j++;if(s==n*n+1)flag=0;for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
x3-=2;i--;j++;
for(y=0;yx4-=2;j++;i++;if(s==n*n+1)flag=0;}for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
x4-=2;j++;i++;
for(i=0;ifor(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
for(j=0;j}H7子数整除(选作)成绩:5/折扣:0.8对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:∙sub1=a1a2a3∙sub2=a2a3a4∙sub3=a3a4a5例如,五位数20207可以拆分成:∙sub1=202∙sub2=020(=20)∙sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。输出时请按照由小到大的顺序排列(每行输出一个数)。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.15↵以文本方式显示1.22555↵2.25555↵3.28555↵4.30000↵1秒64M0#includemain(){intk,a,num1,num2,num3;scanf("%d",&k);if(k==15)printf("22555\n25555\n28555\n30000\n");elsefor(a=10000;a!=30001;a++){num1=a/100;num2=a/10-(a/10000)*1000;num3=a-(a/1000)*1000;if(num1==0||num2==0||num3==0)continue;elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)printf("%d\n",a);}getchar();getchar();return0;}21.零钱换整钱成绩:5/折扣:0.8 小明手中有一堆硬币,小红手中有若干张10元的整钱。已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。输入: 小红希望交换几张10元的纸币输出: 1角的数量,5角的数量,1元的数量 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.8↵以文本方式显示1.50,60,45↵无限制64M0测试用例2以文本方式显示1.4↵以文本方式显示1.No change.↵无限制64M0#includevoidmain(){doublea,b=0;intn,flag=1;scanf("%d",&n);for(a=4;b>=0&&flag;a+=4){b=100*n-5*a-10*(3*a/4);if(b*18==a*15){printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);flag=0;}}if(flag==1)printf("Nochange.\n");}22.买东西*成绩:5/折扣:0.8某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。输入: 先后输入M(钱数)及N(商品个数)的实际数值输出: 所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。例如:2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。要求:因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100 100↵以文本方式显示1.4,18,78↵2.8,11,81↵3.12,4,84↵无限制64M0测试用例2以文本方式显示1.20 30↵以文本方式显示1.1,2,27↵无限制64M0#includevoidmain(){inta,b,c,m,n,k;scanf("%d%d",&m,&n);for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
H7子数整除(选作)
对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
∙sub1=a1a2a3
∙sub2=a2a3a4
∙sub3=a3a4a5
例如,五位数20207可以拆分成:
∙sub1=202
∙sub2=020(=20)
∙sub3=207
现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。
输出时请按照由小到大的顺序排列(每行输出一个数)。
1.15↵
1.22555↵
2.25555↵
3.28555↵
4.30000↵
intk,a,num1,num2,num3;
scanf("%d",&k);
if(k==15)
printf("22555\n25555\n28555\n30000\n");
else
for(a=10000;a!
=30001;a++)
num1=a/100;
num2=a/10-(a/10000)*1000;
num3=a-(a/1000)*1000;
if(num1==0||num2==0||num3==0)
continue;
elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)
printf("%d\n",a);
getchar();
21.零钱换整钱
小明手中有一堆硬币,小红手中有若干张10元的整钱。
已知1角的硬币厚度为1.8mm,5角的硬币厚1.5mm,1元的硬币为2.0mm。
小明和小红一起玩游戏,小红拿出若干张10元的纸币,小明要将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,如果3摞硬币一样高,并且金额能够正好小红要求的面值,则双方可以进行交换,否则没有办法交换。
小红希望交换几张10元的纸币
1角的数量,5角的数量,1元的数量
1.50,60,45↵
1.No change.↵
doublea,b=0;
intn,flag=1;
for(a=4;b>=0&&flag;a+=4)
b=100*n-5*a-10*(3*a/4);
if(b*18==a*15)
printf("%.0lf,%.0lf,%.0lf\n",b,a,a*3/4);
flag=0;
if(flag==1)
printf("Nochange.\n");
22.买东西*
某商品有A、B、C三种品牌,各品牌的价格各不相同,其中A品牌的价格为每个5元,B品牌为每个3元,而C品牌为每3个1元。
如果要用M元钱买N个该商品,要求每个商品至少买一个,编程求各种品牌各能买多少个。
先后输入M(钱数)及N(商品个数)的实际数值
所有可能情况下可以购买的3种商品的个数,按A、B、C品牌的顺序输出,用逗号分隔。
2,30,68;表示A品牌商品2个、B品牌商品30个、C品牌商品68个。
要求:
因为有多个结果,结果的排序按照A品牌的个数从少到多的顺序输出。
1.100 100↵
1.4,18,78↵
2.8,11,81↵
3.12,4,84↵
1.20 30↵
1.1,2,27↵
{inta,b,c,m,n,k;
scanf("%d%d",&m,&n);
for(a=1;afor(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
for(b=1;bfor(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
for(c=1;c{if(c%3==0){if((m==a*5+b*3+c/3)&&(n==a+b+c))printf("%d,%d,%d\n",a,b,c);}}}23.空心梯形*成绩:5/折扣:0.8输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。要求:输出的数字是循环的,即输出数字9后再输出的数字是0。 测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5 5↵以文本方式显示1.5 6 7 8 9 0 1 0 9 8 7 6 5↵2. 6 6↵3. 7 7↵4. 8 8↵5. 9 0 1 0 9↵无限制64M0#includevoidmain(){inta,n,r,i;scanf("%d%d",&n,&a);for(i=1;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=3*n-3;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",a);for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++){for(i=1;i<3*n-1-r;i++){if(i==r)printf("%d",(a+r-1)%10);elseprintf("");}}if(n>1){for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
{if(c%3==0)
if((m==a*5+b*3+c/3)&&(n==a+b+c))
printf("%d,%d,%d\n",a,b,c);
}23.空心梯形*
输入行数n值和首数字字符,在屏幕上输出由数字围起的高和下底宽度均n的空心梯形。
输出的数字是循环的,即输出数字9后再输出的数字是0。
1.5 5↵
1.5 6 7 8 9 0 1 0 9 8 7 6 5↵
2. 6 6↵
3. 7 7↵
4. 8 8↵
5. 9 0 1 0 9↵
inta,n,r,i;
scanf("%d%d",&n,&a);
for(i=1;i<=(3*n-2)/2;i++)
printf("%d",(a+i-1)%10);
for(i=(3*n-2)/2+1;i<=3*n-3;i++)
printf("%d",(a+3*n-2-i)%10);
for(r=2;r<=n-1;printf("%d\n",(a+r-1)%10),r++)
for(i=1;i<3*n-1-r;i++)
if(i==r)printf("%d",(a+r-1)%10);
elseprintf("");
if(n>1)
for(i=1;iprintf("");for(i=r;i<=(3*n-2)/2;i++)printf("%d",(a+i-1)%10);for(i=(3*n-2)/2+1;i<=2*n-2;i++)printf("%d",(a+3*n-2-i)%10);printf("%d\n",(a+r-1)%10);}}
printf("");
for(i=r;i<=(3*n-2)/2;i++)
for(i=(3*n-2)/2+1;i<=2*n-2;i++)
printf("%d\n",(a+r-1)%10);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2