郑州轻工业大学zzulioj1071~1090合集
本人小趴菜一颗,写博客是为了监督自己的学习以及分享学习资源给需要的人,欢迎大家评论区指出问题。同时由于本人比较懒,注释就不再写了,当然一些自己经常犯迷糊的地方还是会标注的,大家有什么问题也可以指出来,大家一起学习进步。
郑州轻工业大学zzulioj1071~1090合集
1071分解质因子(经典题)
题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入
输入一个正整数n(2<=n<=2000)。
输出
从小到大输出n的所有质因子,每两个数之间空一格。
样例输入 Copy
20
样例输出 Copy
2 2 5
代码如下(示例):
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,m;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
while(n%i==0)
{
printf("%d ",i);
n=n/i;
}
}//主要思想就是用n除于自然数i(从2开始),一直除到无法约分为止再将除完后的n与下一个自然数重复此步骤
return 0;
}
1072青蛙爬井
题目描述
有一口深度为high米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬up米,夜里则顺井壁向下滑down米,若青蛙从某个早晨开始向外爬,对于任意指定的high、up和down值(均为自然数),计算青蛙多少天能够爬出井口?
输入
输入3个正整数:high、up和down。
输出
输出一个整数,表示天数。输出单独占一行。
样例输入 Copy
10 2 1
样例输出 Copy
9
代码如下(示例):
#include<stdio.h>
int main()
{
int h,u,d,s,i;
scanf("%d %d %d",&h,&u,&d);
s=0;
for(i=1;;i++)
{
s+=u;
if(s>=h)
{
printf("%d",i);
break;
}
else
{
s-=d;
}
}
return 0;
}
1073再谈鸡兔同笼问题
题目描述
鸡和兔关在一个笼子里,鸡有2只脚,兔有4只脚。输入笼子里头的总数m和脚的总数n,求鸡和兔子各有多少只?若问题无解,也要输出相应的信息。
输入
输入两个整数m和n,分别代表笼子里头的个数和脚的个数。
输出
若问题有解,依次输出鸡和兔的只数。若问题无解,则输出"No Answer"。
样例输入 Copy
12 40
样例输出 Copy
4 8
代码如下(示例):
#include<stdio.h>
int main()
{
int m,n,a,b,i,x;
scanf("%d %d",&m,&n);
x=-1;
for(a=1;a<=m;a++)
{ b=m-a;
if(a*2+b*4==n)
{
printf("%d %d\n",a,b);
x=1;
}
}
if(x==-1)
{
printf("No Answer");
}
return 0;
}
1074百钱买百鸡(经典题)
题目描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
输入一个正整数n(n<=100)。
输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
样例输入 Copy
100
样例输出 Copy
0 25 75
4 18 78
8 11 81
12 4 84
代码如下(示例):
#include<stdio.h>
int main()
{ int g,m,x,i,n;
i=0;
scanf("%d",&n);
for(g=0;g<=n/5;g++)//用价钱限制数量
{
for(m=0;m<=n/3;m++)//用价钱限制数量
{
x=n-g-m;//x的判断条件为公,母,小鸡总数为n;
if(g*15+9*m+x==3*n)//此处不能用g*5+m*3+x/3==n作为判断条件
{
printf("%4d%4d%4d\n",g,m,x);
i=1;
}
}
}
if(i==0)
{
printf("No Answer\n");
}
return 0;
}
1075聚餐人数统计
题目描述
马克思手稿中有这样一道趣味数学题:男人、女人和小孩总计n个人,在一家饭店里吃饭,共花了cost先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请用穷举法编程计算男人、女人和小孩各有几个。
输入
输入两个正整数,表示人数n和花费cost。
输出
若问题有解,则输出所有解,每行输出三个数据,代表男人、女人和小孩的人数,用空格分隔;若问题无解,则输出“No answer"。
样例输入 Copy
30 50
样例输出 Copy
0 20 10
1 18 11
2 16 12
3 14 13
4 12 14
5 10 15
6 8 16
7 6 17
8 4 18
9 2 19
10 0 20
代码如下(示例):
#include<stdio.h>
int main()
{ int n,c,
x,y,z,m=0;
scanf("%d%d",&n,&c);
for(x=0;x<=n;x++)
{
for(y=0;y<=n;y++)
{
z=n-x-y;
if(3*x+2*y+z==c&&z>=0)
{ m+=1;
printf("%d %d %d\n",x,y,z);
}
}
}
if(m==0)
{
printf("No answer");
}
return 0;
}
1076三位数求解
题目描述
已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。如果无解,则输出“No Answer”
注意:xyz和yzz表示一个三位数,而不是表示xyz和yzz。
输入
输入一个正整数n。
输出
输出一行,包含x、y、z的值,每个数值占4列。
样例输入 Copy
532
样例输出 Copy
3 2 1
代码如下(示例):
#include<stdio.h>
int main()
{
int x,y,z,n,m;
m=0;
scanf("%d",&n);
for(x=1;x<=9;x++)
{
for(y=1;y<=9;y++)
{
for(z=0;z<=9;z++)//注意x,y从一开始z从0开始的原因是题目中的暗藏条件三位数
{
if(x*100+y*10+y*100+z*10+z*2==n)
{
printf("%4d%4d%4d\n",x,y,z);
m+=1;
}
}
}
}
if(m==0)
{
printf("No Answer");
}
return 0;
}
1077空心菱形
题目描述
输入一个整数n,(2<=n<=20),输出一个空心菱形,其中每个边由n个’‘组成。
输入
输入包含一个整数,n(2<=n<=20)
输出
输出一个空心菱形,每个边由n个’'组成
样例输入 Copy
5
样例输出 Copy
代码如下(示例):
#include<stdio.h>
int main()
{
int i,j,n,k;//定义 输出外围空格数k和内部空格数j以及行数i
scanf("%d",&n);//键盘输入边上的*数n
//分成两部分做,上部分和下部分,上部分是n行,下部分只n-1行
for(i=1;i<=n;i++)//i是从上往下数的行数
{
k=n-i;//每次输出的空格数k应该是n-i个
while(k--)//每次输出i-1个空格
printf(" ");
if(i==1)//当是第1行,输出完n-1空格后输出一个*
printf("*");
else//其他行都是两个*中间加(2*i-3)个空格
{
printf("*");
for(j=1;j<=2*i-3;j++)//比如第二行应该是1个空格
{printf(" ");}
printf("*");
}
printf("\n");//输出完一行之后换一次行
}
for(i=n-1;i>=1;i--)//i是从下往上数的行数
{
k=n-i;//每次输出的空格数应该是n-i个
while(k--)//每次输出i-1个空格
printf(" ");
if(i==1)//当是第1行,输出完n-1空格后输出一个*
printf("*");
else//其他行都是两个*中间加(2*i-3)个空格
{
printf("*");
for(j=1;j<=2*i-3;j++)//比如倒数第二行应该是1个空格
printf(" ");
printf("*");
}
printf("\n");//输出完一行之后换一次行
}
return 0;}//程序正常结束
1078(多实例测试1)
题目描述
计算A+B
输入
输入第1行为一个整数n(1≤n≤10),代表测试的组数。
下面有n组测试数据,每组1行,为2个整数,为A, B。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
2
1 2
3 4
样例输出 Copy
3
7
代码如下(示例):
#include<stdio.h>
int main()
{
int n,a,b,c;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
printf("\n");
}
return 0;
}
1079(多实例测试2)
题目描述
计算A+B
输入
输入数据有多组。
每组一行,为整数A, B。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
1 2
3 4
样例输出 Copy
3
7
代码如下(示例):
#include<stdio.h>
int main()
{
int x,y;
while(scanf("%d %d",&x,&y)!=EOF)
{
printf("%d\n",x+y);}
return 0;
}
1080(多实例测试3)题目描述
计算A+B
输入
输入数据有多组。
每组一行,为两个整数A, B。输入0 0表示输入结束,该组输入不用处理。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
1 2
0 0
样例输出 Copy
3
代码如下(示例):
#include<stdio.h>
int main()
{ int a,b,c;
while(scanf("%d %d\n",&a,&b),a!=0||b!=0)
{
c=a+b;
printf("%d\n",c);
}
return 0;
}
1081n个数求和 (多实例测试)
题目描述
求n个整数的和。
输入
输入第一行是一个整数T,表示有T组测试实例;
每组输入包括两行:
第一行一个数n表示接下来会有n个整数;
第二行空格隔开的n个数。
输出
对于每组输入,在一行输出n个数的和(保证和不会超出int类型的范围)!
样例输入 Copy
2
3
1 2 3
4
-1 0 -19 22
样例输出 Copy
6
2
代码如下(示例):
#include<stdio.h>
int main()
{
int m,n,i,s,x;
scanf("%d",&m);
for(i=1;i<=m;i++)
{ s=0;//此处要注意s在此处初始化不要在最开始初始化
scanf("%d",&n);
while(n--)
{
scanf("%d",&x);
s+=x;
}
printf("%d\n",s);
}
return 0;
}
1082敲7(多实例测试)
题目描述
输出7和7的倍数,还有包含7的数字例如(17,27,37…70,71,72,73…)
输入
首先输入一个整数t,表示有t组数据。
然后有t行,每行一个整数N。(N不大于30000)
输出
对于每组数据 ,输出从小到大排列的不大于N的与7有关的数字。每组数据占一行,每个数字后面有一个空格;
样例输入 Copy
2
20
30
样例输出 Copy
7 14 17
7 14 17 21 27 28
代码如下(示例):
#include<stdio.h>
int main()
{
int i,j,t,m;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d",&m);
for(j=1;j<=m;j++)
{
if(j%7==0||j%10==7||j/10%10==7||j/100%10==7||j/1000%10==7)
{
printf("%d ",j);
}
else
continue;
}
printf("\n");
}
return 0;
}
1083数值统计(多实例测试)
题目描述
统计给定的n个数中,负数、零和正数的个数
输入
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
输出
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
样例输入 Copy
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0
样例输出 Copy
1 2 3
0 0 5
代码如下(示例):
#include<stdio.h>
int main()
{
int n,a,b,c,i;
double x;
while(scanf("%d",&n)!=EOF,n!=0)
{a=b=c=0;//要处理好这个变量初始化的位置
for(i=1;i<=n;i++)
{
scanf("%lf",&x);
if(x<0)
{
a++;
}
if(x==0)
{
b++;
}
if(x>0)
{
c++;
}
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}
1084计算两点间的距离(多实例测试)
题目描述
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
输入
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
输出
对于每组输入数据,输出一行,结果保留两位小数。
样例输入 Copy
0 0 0 1
0 1 1 0
样例输出 Copy
1.00
1.41
代码如下(示例):
#include<stdio.h>
#include<math.h>
int main()
{double a1,a2,b1,b2,s;
while(scanf("%lf%lf%lf%lf",&a1,&b1,&a2,&b2)!=EOF)
{
s=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));
printf("%.2lf\n",s);
}
return 0;
}
1085求奇数的乘积(多实例测试)
题目描述
给你n个整数,求他们中所有奇数的乘积
输入
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
输出
输出每组数中的所有奇数的乘积,对于测试实例,输出一行。
样例输入 Copy
3 1 2 3
4 2 3 4 5
样例输出 Copy
3
15
代码如下(示例):
#include<stdio.h>
int main()
{
int n,x,i,s;
while(scanf("%d",&n)!=EOF)
{ s=1;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
if(x%2!=0)
{s*=x;}
}
printf("%d\n",s);
}
return 0;
}
1086ASCII码排序(多实例测试)
题目描述
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
输入数据有多组,每组占一行,由三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入 Copy
qwe
ads
xzc
样例输出 Copy
e q w
a d s
c x z
代码如下(示例):
#include<stdio.h>
int main()
{ char a,b,c,t;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
getchar() ;//用来吸收换行字符*(必须有)*
if(a>c)
{
t=a,a=c,c=t;
}
if(b>c)
{
t=b,b=c,c=t;
}
if(a>b)
{
t=a,a=b,b=t;
}
printf("%c %c %c\n",a,b,c);
}
return 0;
}
1087获取出生日期(多实例测试)
题目描述
输入某人的18位身份证号,输出其出生日期。
输入
多实例测试。首先输入一个整数n,表示测试实例的个数,然后是n行,每行是一个18位身份证号。
输出
对于输入的每个身份证号,输出一行,即其对应的出生日期,输出格式为:yyyy-mm-dd。
样例输入 Copy
3
410106199411178657
410104198202095479
410122197911218097
代码如下(示例):
#include<stdio.h>
int main()
{
int i,n,x,y,m,d;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%*6d%4d%2d%2d%*4d",&y,&m,&d);//此处的%*6d表示吸收6位整数
printf("%4d-%02d-%02d\n",y,m,d);//要注意此处的输出格式
}return 0;
}
1088手机短号 (多实例)
题目描述
大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。
现在,如果给你一个11位长的手机号码,你能找出对应的短号吗?
输入
输入数据的第一行是一个N(N <= 200),表示有N组输入数据,接下来的N行每一行为一个11位的手机号码。
输出
输出应包括N行,每行包括一个对应的短号,输出应与输入的顺序一致。
样例输入 Copy
2
13512345678
13787600321
样例输出 Copy
645678
600321
代码如下(示例):
#include<stdio.h>
int main()
{ int n,x;
scanf("%d",&n);
while(n--)
{
scanf("%*6d%5d",&x);
printf("6%05d\n",x);
}
return 0;
}
1089阶乘的最高位
题目描述
输入一个正整数n。输出n!的最高位上的数字。
输入
输入一个正整数n(n不超过1000)。
输出
输出n!的最高位上的数字。
样例输入 Copy
1000
样例输出 Copy
4
代码如下(示例):
#include<stdio.h>
int main()
{
double s;
int a;
scanf("%d",&a);
s=1;
while(a!=1)
{
s*=a;
a--;
while(s>=10)
{
s/=10;
}
}printf("%d",(int)s);
}
1090整数幂(多实例测试)
题目描述
求A^B的最后三位数表示的整数(1<=A,B<=1000)
输入
第一行输入一个整数n,表示有n个测试实例,接着有n行,每行一个实例,给出两个正整数A,B
输出
针对每个测试实例,输出A^B的最后三位(没有前导0) ,单独占一行。
样例输入 Copy
2
2 3
12 6
样例输出 Copy
8
984
代码如下(示例):
#include<stdio.h>
int main()
{
int n,a,b,i,j;
int z;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{scanf("%d %d",&a,&b);
z=1;
for(j=1;j<=b;j++)
{ z=z*a;
if(z>1000)
{
z=z%1000;
}
}
printf("%d\n",z);
}return 0;
}
标签:输出,1090,int,样例,printf,Copy,合集,输入,zzulioj1071
From: https://blog.csdn.net/2301_80341258/article/details/140506411