【PTA|编程题|期末复习】数据类型(二)&函数(一)

目录

7-1 输出闰年

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入格式:

输出格式:

输入样例:

输出样例:

输入格式:

输出格式:

输入样例:

输出样例:

输入格式:

输出格式:

输入样例:

输出样例:


7-1 输出闰年

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:

输入在一行中给出21世纪的某个截止年份。

输出格式:

逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048

输入样例2:

2000

输出样例2:

Invalid year!

代码

#include<stdio.h>
int main(){
    int i,j=0,year;
    scanf("%d",&year);
    if(year<=2000||year>2100)
        printf("Invalid year!");
    else{
        for(i=2001;i<=year;i++){
            if((i%4==0&&i%100!=0)||(i%400==0)){
            printf("%d\n",i);
            j=1;
            }
        }
        if(j==0)printf("None");
    }
    return 0;
}

7-2 统计学生成绩

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:

7
77 54 92 73 60 65 69

输出样例:

1 0 2 3 1

代码

 
#include<stdio.h>
int main()
{
	int N, i;
	int score;
	int countA, countB, countC, countD, countE;

	scanf("%d", &N);

	countA = countB = countC = countD = countE = 0;

	for (i = 1; i <= N; i++)
	{
		scanf("%d", &score);
        
		if (score < 60)
		{
			countE++;
		}
		else if (score >= 60 && score < 70)
		{
			countD++;
		}
		else if (score >= 70 && score < 80)
		{
			countC++;
		}
		else if (score >= 80 && score < 90)
		{
			countB++;
		}
		else
		{
			countA++;
		}
	}

	printf("%d %d %d %d %d", countA, countB, countC, countD, countE);

	return 0;
}

7-3 英文字母替换加密(大小写转换+后移1位)

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。

输入格式:

输入一行字符,以回车符 '\n'作为 结束符。

输出格式:

将输入的一行字符中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母后输出,其他字符按原样输出。

输入样例:

在这里给出一组输入。例如:

Reold  Z123?

输出样例:

在这里给出相应的输出。例如:

sFPME  a123?

代码

#include<stdio.h>
int main(){
    char c,delta;
    delta='A'-'a';
    do{
        scanf("%c",&c);
        if(c>='a'&&c<'z')
            c+=(delta+1);
        else if(c>='A'&&c<'Z')
            c-=(delta-1);
        else if(c=='Z')
            c='a';
        else if(c=='z')
            c='A';
        printf("%c",c);
    }while(c!='\n');
    return 0;
}

7-4 统计数字字符和空格

本题要求编写程序,输入一行字符,统计其中数字字符、空格和其他字符的个数。建议使用switch语句编写。

输入格式:

输入在一行中给出若干字符,最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

blank = 空格个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。

输入样例:

在这里给出一组输入。例如:

Reold 12 or 45T

输出样例:

在这里给出相应的输出。例如:

blank = 3, digit = 4, other = 8

代码

#include <stdio.h>

int main()

{

    char c;

    int letters=0,space=0,digit=0,other=0;

    while ((c=getchar())!='\n')
    {
        if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')

        {
            other++;
        }

        else if (c == ' ')
        {
            space++;
        }
        else if (c >= '0'&&c <= '9')
        {
            digit++;
        }
        else
        {
            other++;
        }
    }

    printf("blank = %d, digit = %d, other = %d",space,digit,other);

    return 0;

}

                
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值