郑州轻工业大学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;
}

  • 42
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘花猫不爱睡懒觉

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值