4月28号牛客网算法(入门级)

文章讲述了如何在C++中使用scanf进行输入控制和printf进行输出格式化,介绍了%4d、%2d等格式控制符的作用,以及如何通过ASCII码值实现大小写转换。
摘要由CSDN通过智能技术生成

 BC13 出生日期输入输出

题目链接:出生日期输入输出_牛客题霸_牛客网

首先是我看到题目自己写的代码:

#include <stdio.h>

int main() {
    int x=0,y=0,z=0;
    scanf("%4d%2d%2d",&x,&y,&z);
    printf("year=%d\n",x);
    if(y<10)
        printf("month=0%d\n",y);
    else
        printf("month=%d\n",y);
    if(z<10)
        printf("date=0%d\n",z);
    else
        printf("date=%d\n",z);
    return 0;
}

考察的是scanf的输入格式控制与输出

但我最开始写的代码是错误的,运行不出来,看了给的提示之后再写了一遍,可以运行,但是很冗长 ,而且之前不了解输入也可以指定读取多少位数字,就像之前了解的浮点数float在输出是要是只保留两位小数,就可以写成:    float x=2.189; printf("%.2f",x);  

下面是官方给的代码,比我的简短的多。

#include <bits/stdc++.h>
using namespace std;

int main() {

    int year = 0, month = 0, day = 0;
    scanf("%4d%2d%2d", &year, &month, &day);
    //使用%0可以填充前导0
    printf("year=%d\n", year);
    printf("month=%02d\n", month);
    printf("date=%02d\n", day);
    return 0;
}

不过是C++的写法,除了头部不同,其他是可以直接照搬的,就比如这样,(仅我这次的代码可以,其他时候不确定)

#include <stdio.h>

int main() {

    int year = 0, month = 0, day = 0;
    scanf("%4d%2d%2d", &year, &month, &day);
    //使用%0可以填充前导0
    printf("year=%d\n", year);
    printf("month=%02d\n", month);
    printf("date=%02d\n", day);
    return 0;
}

然后是官方给出的具体解析,有关于输入输出:

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

 BC15 大小写转换(完成版)

题目链接:大小写转换_牛客题霸_牛客网

这道题要记得大小写字母的ASCII码值

一些要记得的:(我认为)

0~9    对应的ASCII码值:48~57

A~Z    对应的ASCII码值:65~90

a~z    对应的ASCII码值:97~122

其中,大小写字母之间相差32,在写这道题时可以利用这个数字32来进行大小写字母间的转化

#include <stdio.h>

int main() {
    char a=0;
    while((scanf("%c",&a))!=EOF)
    {
        getchar();
        printf("%c\n",a+32);
        
    }
    return 0;
}

具体getchar的用法在我的 5_6 5_7C语言(初阶)这篇博客中详细讲解了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值