ZZULIOJ1021-1030

目录

1021: 三个整数的最大值

1022: 三整数排序 

1023: 大小写转换 

1024: 计算字母序号 

1025: 最大字符 

1026: 字符类型判断 

1027: 判断水仙花数

1028: I love 闰年! 

1029: 三角形判定

1030: 判断直角三角形 


1021: 三个整数的最大值

题目描述

从键盘输入三个整数x,y和z,求出其中最大的数。

输入

输入三个整数,用空格隔开。

输出

输出最大整数。

样例输入 Copy

20 16 18

样例输出 Copy

20
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void)
{
 int x, y, z, max;
 scanf("%d %d %d",&x, &y, &z);
 max = x;
 if (max < y)
    max = y;
 if (max < z)
    max = z;
 printf("%d",max);
 
   return 0;
}
 
/**************************************************************
    Problem: 1021
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:3h8gDU4wtyyxTCfJJpvCjVRSevU
****************************************************************/

1022: 三整数排序 

题目描述

从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。

输入

输入三个整数x,y和z。

输出

按从大到小的顺序输出它们的值。

样例输入 Copy

20 16 18

样例输出 Copy

20 18 16
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
 int a, b, c, t;
 scanf("%d%d%d", &a, &b, &c);
 
 if (b > a)
    {t = b; b = a; a = t;}
     if (c > a)
   {t = c; c = a; a = t;}
 if (c > b)
    {t = c; c = b; b= t;}
 printf("%d %d %d",a, b ,c);
 return 0;
}
 
/**************************************************************
    Problem: 1022
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:jRR5URpn5nGxTCfJJpvCjVRSevY
****************************************************************/

1023: 大小写转换 

题目描述

输入一个字母,若是小写字母,则变为大写输出,否则,原样输出。

输入

输入为一个字符。

输出

按题目要求输出一个字符,单独占一行。

样例输入 Copy

a

样例输出 Copy

A
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
 char c;
 scanf("%c",&c);
 if(c>='a'&&c<='z')
 {
     c=c-32;
     printf("%c\n",c);
 }
 else
    printf("%c",c);
 
 return 0;
}
 
/**************************************************************
    Problem: 1023
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:gh4kChg64SGxTCfJJpvCjVRSevc
****************************************************************/

1024: 计算字母序号 

题目描述

输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)。

输入

 输入只有一个英文字母。

输出

输出一个整数,表示该字母在字母表的序号,输出单独占一行。

样例输入 Copy

D

样例输出 Copy

4
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
 char ch;
 scanf("%c",&ch);
 if (ch>='a'&&ch<='z')
    printf("%d",ch-'a'+1);
 else
    printf("%d",ch-'A'+1);
 return 0;
 
}
 
/**************************************************************
    Problem: 1024
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:2BIiUBg3sSWxTCfJJpvCjVRSevA
****************************************************************/

1025: 最大字符 

题目描述

给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个

输入

输入包含三个字符,之间有一个空格隔开。

输出

输出ASCII码最大的那个字符,占一行。

样例输入 Copy

a b c

样例输出 Copy

c

提示

注意对输入序列中空格的处理,空格也是合法的字符

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

1026: 字符类型判断 

题目描述

 从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。

输入

输入一个字符。

输出

如果该字符是大写字母,则输出“upper”;若是小写字母,则输出“lower”;若是数字字符,则输出“digit”;若是其他字符,则输出“other”。(输出不含双引号)。

样例输入 Copy

E

样例输出 Copy

upper
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char x1;
    scanf("%c", &x1);
    if ('a'<=x1&&x1<='z')
        printf("lower\n");
  else  if ('A'<=x1&&x1<='Z')
        printf("upper\n");
   else if ('0'<=x1&&x1<='9')
        printf("digit\n");
   else
        printf("other\n");
    return 0;
}
 
/**************************************************************
    Problem: 1026
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:jkUgXk875yKxTCfJJpvCjVRSevI
****************************************************************/

1027: 判断水仙花数

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。
 现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no” 

输入

输入一个三位的正整数。

输出

输出“yes”或“no”。

样例输入 Copy

153

样例输出 Copy

yes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int x1;
    scanf("%d", &x1);
    if (x1==pow(x1/100,3) + pow(x1/10%10,3) + pow(x1%10,3))
        printf("yes");
    else
        printf("no");
    return 0;
}
 
/**************************************************************
    Problem: 1027
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1240 kb
    通过码:jREnDB1gtyaxTCfJJpvCjVRSevM
****************************************************************/

1028: I love 闰年! 

题目描述

 根据一个年份,判断是否是闰年。

输入

 输入为一个整数,表示一个年份。

输出

如果是闰年,输出"Yes",否则输出"No"。输出单独占一行。

样例输入 Copy

2012

样例输出 Copy

Yes

提示

本题在课程网站上有专题讲解,第三章的边讲边写:闰年判断——级联的if-elseif结构、逻辑运算

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int x1;
    scanf("%d", &x1);
    if (x1%400==0||(x1%4==0&&x1%100 !=0))
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}
 
/**************************************************************
    Problem: 1028
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:g0dwXEswvCexTCfJJpvCjVRSevw
****************************************************************/

1029: 三角形判定

题目描述

给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。

输入

输入为三个int范围的正整数,中间有一个空格隔开。

输出

如果能构成三角形,输出"Yes",否则输出"No"

样例输入 Copy

3 4 5

样例输出 Copy

Yes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int x1, x2, x3;
    scanf("%d %d %d", &x1, &x2, &x3);
    if (x1 + x2 > x3&& x1 + x3 > x2&&x3 + x2 > x1)
      printf("Yes");
     else   printf("No\n");
    return 0;
}
 
/**************************************************************
    Problem: 1029
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:jh4gWhpntSOxTCfJJpvCjVRSev0
****************************************************************/

1030: 判断直角三角形 

题目描述

输入三个正整数,判断用这三个整数做边长是否能构成一个直角三角形。

输入

输入三个正整数。

输出

能否构成直角三角形。如能输出:yes.若不能,输出:no。

样例输入 Copy

6 8 10

样例输出 Copy

yes
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int x1, x2, x3;
    scanf("%d %d %d", &x1, &x2, &x3);
    if (x1 + x2 > x3&&x1*x1+x2*x2==x3*x3)
        printf("yes\n");
    else if (x1 + x3 > x2&&x1*x1+x3*x3==x2*x2)
      printf("yes\n");
    else  if (x3 + x2 > x1&&x3*x3+x2*x2==x1*x1)
        printf("yes\n");
     else   printf("no\n");
    return 0;
}
 
/**************************************************************
    Problem: 1030
    User: 542107230106
    Language: C
    Result: 正确
    Time:1 ms
    Memory:1044 kb
    通过码:3hZ4Wklg5yyxTCfJJpvCjVRSe/Q
****************************************************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一道经典的位运算题目,考察对二进制的理解和位运算的熟练程度。 题目描述: 给定一个长度为 $n$ 的数组 $a$,初始时每个数的值都为 $0$。现在有 $m$ 个操作,每个操作为一次询问或修改。 对于询问,给出两个整数 $l,r$,求 $a_l \oplus a_{l+1} \oplus \cdots \oplus a_r$ 的值。 对于修改,给出一个整数 $x$,表示将 $a_x$ 的值加 $1$。 输入格式: 第一行两个整数 $n,m$。 接下来 $m$ 行,每行描述一次操作,格式如下: 1 l r:表示询问区间 $[l,r]$ 的异或和。 2 x:表示将 $a_x$ 的值加 $1$。 输出格式: 对于每个询问操作,输出一个整数表示答案,每个答案占一行。 数据范围: $1 \leq n,m \leq 10^5$,$0 \leq a_i \leq 2^{30}$,$1 \leq l \leq r \leq n$,$1 \leq x \leq n$ 输入样例: 5 5 2 1 2 3 1 2 4 2 2 1 1 5 输出样例: 0 2 解题思路: 对于询问操作,可以利用异或的性质,即 $a \oplus b \oplus a = b$,将 $a_l \oplus a_{l+1} \oplus \cdots \oplus a_r$ 转化为 $(a_1 \oplus \cdots \oplus a_{l-1}) \oplus (a_1 \oplus \cdots \oplus a_r)$,因为两个前缀异或后的结果可以相互抵消,最后的结果即为 $a_1 \oplus \cdots \oplus a_{l-1} \oplus a_1 \oplus \cdots \oplus a_r = a_l \oplus \cdots \oplus a_r$。 对于修改操作,可以将 $a_x$ 对应的二进制数的每一位都分离出来,然后对应位置进行修改即可。由于只有加 $1$ 操作,所以只需将最后一位加 $1$ 即可,其余位不变。 参考代码:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值