ZZULIOJ1081-1090

 

目录

1081: n个数求和 (多实例测试)

1082: 敲7(多实例测试)

1083: 数值统计(多实例测试)

1084: 计算两点间的距离(多实例测试)

1085: 求奇数的乘积(多实例测试)

1086: ASCII码排序(多实例测试)

1087: 获取出生日期(多实例测试)

1088: 手机短号 (多实例)

1089: 阶乘的最高位

1090: 整数幂(多实例测试)


1081: n个数求和 (多实例测试)

题目描述

求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>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int a,t,i=1,i2,n,sum=0;
char b;
scanf("%d",&t);
while(i<=t)
{
    scanf("%d",&n);
    for(i2=1;i2<=n;i2++)
    {
        scanf("%d",&a);
        scanf("%c",&b);
        sum+=a;
    }
    printf("%d\n",sum);
    i++;
    sum=0;
}
  return 0;
 
}
 
/**************************************************************
    Problem: 1081
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:ixNzXk9jsCGxTCfJJpvCjVRScPU
****************************************************************/

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>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int t,n,i=1,i2;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
    scanf("%d",&n);
    for(i2=1;i2<=n;i2++)
    {if(n<=30000)
{if(i2%7==0||i2/1000%10==7||i2/100%10==7||i2/10%10==7||i2%10==7)
            printf("%d ",i2);}
 
    }
if(i+1<=t)//原来没有这行,所以多输出一个空行就错了
printf("\n");
}
  return 0;
 
}
 
/**************************************************************
    Problem: 1082
    User: 542107230106
    Language: C
    Result: 正确
    Time:14 ms
    Memory:1044 kb
    通过码:jhElDE424nexTCfJJpvCjVRScPY
****************************************************************/

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>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int n,i=1,zheng=0,fu=0,ling=0;
double m;
while(scanf("%d",&n)!=EOF)
     {while(i<=n)
{if(n==0)
break;
    scanf("%lf",&m);
    if(m<0)
        fu++;
    if(fabs(m)<1e-10)
        ling++;
    if(m>0)
        zheng++;
    i++;
 
}
if(n!=0)
{printf("%d %d %d\n",fu,ling,zheng);
i=1;
fu=0;ling=0;zheng=0;}
else
    break;
     }
  return 0;
 
}
 
/**************************************************************
    Problem: 1083
    User: 542107230106
    Language: C
    Result: 正确
    Time:3 ms
    Memory:1044 kb
    通过码:3kR5UEo7si2xTCfJJpvCjVRScPc
****************************************************************/

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<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{
double s,x1,y1,x2,y2;
 
 
    while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
    {
        s=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
    printf("%.2f\n",s);
 
    }
 
  return 0;
 
}
 
/**************************************************************
    Problem: 1084
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1068 kb
    通过码:3h8lDRpjvCaxTCfJJpvCjVRScPA
****************************************************************/

1085: 求奇数的乘积(多实例测试)

题目描述

给你n个整数,求他们中所有奇数的乘积

输入

输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

输出

输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

样例输入 Copy

3 1 2 3
4 2 3 4 5

样例输出 Copy

3
15
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 
    int i,n,j=1,i2,a[1100];
    while(scanf("%d", &n)!=EOF)
    {
        for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        i2=a[i];
 
 
    }
     for(i=1;i<=n;i++)
     {
         if(a[i]%2!=0)
        j*=a[i];
     }
 
 printf("%d\n",j);
 j=1;
    }
 
 
    return 0;
}
 
/**************************************************************
    Problem: 1085
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:gx9yWk0zvSCxTCfJJpvCjVRScPE
****************************************************************/

1086: ASCII码排序(多实例测试)

题目描述

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入

输入数据有多组,每组占一行,由三个字符组成,之间无空格。

输出

对于每组输入数据,输出一行,字符中间用一个空格分开。

样例输入 Copy

qwe
ads
xzc

样例输出 Copy

e q w
a d s
c x z

提示

注意:scanf("%c",&ch)格式读字符时,所有字符都是有效输入,如回车符、空格符等,所以每行读取字符之后要处理最后的回车符。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{char a,b,c,t;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
    getchar();
   if(a>b)
    {t=a;a=b;b=t;}
   if(a>c)
    {t=a;a=c;c=t;}
   if(b>c)
    {t=b;b=c;c=t;}
   printf("%c %c %c\n",a,b,c);
}
 
  return 0;
 
}
 
/**************************************************************
    Problem: 1086
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:ikV2UEo1siyxTCfJJpvCjVRScPI
****************************************************************/

1087: 获取出生日期(多实例测试)

题目描述

输入某人的18位身份证号,输出其出生日期。

输入

多实例测试。首先输入一个整数n,表示测试实例的个数,然后是n行,每行是一个18位身份证号。

输出

对于输入的每个身份证号,输出一行,即其对应的出生日期,输出格式为:yyyy-mm-dd。

样例输入 Copy

3
410106199411178657
410104198202095479
410122197911218097

样例输出 Copy

1994-11-17
1982-02-09
1979-11-21

提示

scanf()函数中,可用%md指定读取位数。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int n,a,b,c,d,e,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    scanf("%6d",&a);
    scanf("%4d",&b);
    scanf("%2d",&c);
    scanf("%2d",&d);
    scanf("%4d",&e);
    printf("%4d-%02d-%02d\n",b,c,d);
 
}
  return 0;
 
}
 
/**************************************************************
    Problem: 1087
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:3RcnW0g34HexTCfJJpvCjVRScPM
****************************************************************/

1088: 手机短号 (多实例)

题目描述

大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。
现在,如果给你一个11位长的手机号码,你能找出对应的短号吗?

输入

输入数据的第一行是一个N(N <= 200),表示有N组输入数据,接下来的N行每一行为一个11位的手机号码。

输出

输出应包括N行,每行包括一个对应的短号,输出应与输入的顺序一致。

样例输入 Copy

2
13512345678
13787600321

样例输出 Copy

645678
600321

提示

scanf()函数中,可用%md指定读取位数。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int n,a,b,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    scanf("%6d",&a);
    scanf("%5d",&b);
 
    printf("6%05d\n",b);
 
}
  return 0;
 
}
 
/**************************************************************
    Problem: 1088
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:2EJzWRg0vSCxTCfJJpvCjVRScPw
****************************************************************/

1089: 阶乘的最高位

题目描述

输入一个正整数n。输出n!的最高位上的数字。

输入

输入一个正整数n(n不超过1000)。

输出

输出n!的最高位上的数字。

样例输入 Copy

1000

样例输出 Copy

4

提示

注意double类型溢出问题。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int n,i;
double s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    s*=i;
  while(s>=10)//不用if因为i很大时各位乘以i会大于100,这样就不是首位了
        s=s/10;
}
printf("%d\n",(int)s);
  return 0;
 
}
 
/**************************************************************
    Problem: 1089
    User: 542107230106
    Language: C
    Result: 正确
    Time:0 ms
    Memory:1044 kb
    通过码:2hEkCEoy5iGxTCfJJpvCjVRScP0
****************************************************************/

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>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
int main()
{int a,b,n,i,i2,c=1;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
      scanf("%d%d",&a, &b);
      if(b==0)
        c=1;
      else
      {for(i2=1;i2<=b;i2++)
        {
          c*=a;
        c=c%1000;//放后面会数据溢出
        }
          printf("%d\n",c);
      }    c=1;
  }
  return 0;
 
}
 
/**************************************************************
    Problem: 1090
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:i0IjW0s64XSxTCfJJpvCjVRScfQ
****************************************************************/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值