#C语言——刷题攻略:牛客编程入门训练(二):基本类型、输出格式化

🌟菜鸟主页:@晨非辰的主页

👀学习专栏:《C语言刷题合集》

💪学习阶段:C语言方向初学者

名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"


目录

1. 字符转ASCII码

2.  实现四舍五入

3. 成绩输入输出

4.  出生日期输入输出

5. 按照格式输入并交换输出

6. 大小写转换--(多组输入、getchar)

7. BC16 十六进制转十进制(进制输入输出说名)

8. BC17 缩短二进制(应用进制格式符)


前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现的是基本类型、输出格式化的一部分,共8道题。

~~注意部分标题括号内代表对题目涉及到的知识进行说明!


1. 字符转ASCII码

题目链接:牛客网_BC9 字符转ASCII码_简单

int main()
{
	char a;
	scanf("%c", &a);
	printf("%d\n", a);
	return 0;
}

解题思路——

--在C语言中,当你想要输出一个字符对应的ASCII码时,可以使用%d格式说明符来打印该字符的整数值。这是因为字符在内存中实际上是以其ASCII码(一个整数值)存储的,而%d 正是用来打印整数的格式符。


2.  实现四舍五入

题目链接:牛客网_BC10 实现四舍五入_入门

int main()
{
	float a;
	scanf("%f", &a);
	printf("%.0f\n", a);
	return 0;
}

解题思路——

--实现四舍五入表明要求打印数值时显示精度,在C语言中浮点数打印时的显示精度控制(如 %.nf)默认会进行四舍五入;实力要求小数点后保留0位,直接 .0 。


3. 成绩输入输出

题目链接:牛客网_BC11 成绩输入输出_简单

int main()
{
	int num1, num2, num3;
	scanf("%d%d%d", &num1, &num2, &num3);
	printf("score1=%d,score2=%d,score3=%d\n", num1, num2, num3);
	return 0;
}

解题思路——

--本题小子就不多嘴了~


4.  出生日期输入输出

题目链接:牛客网_BC13 出生日期输入输出_简单

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

int main()
{
	int year, month, date;
	scanf("%4d%2d%2d", &year, &month, &date);
	printf("year=%d\nmonth=%02d\ndate=%02d\n", year, month, date);
	return 0;
}

解题思路——

--本题除上方的备注外,另外说明一点知识:如果printf函数格式符只是 %0d 的话,printf会按照实际数值进行输出,即若月份/天数为个位数,即02……会按照2……进行输出,导致错误;

--这时就需要另加输出域宽(限制最小宽度),即正确的格式符为 %02d (2——>右对齐,左补空格),0必须在域宽前才会起到补0的作用。


5. 按照格式输入并交换输出

题目链接:牛客网_BC14 按照格式输入并交换输出_简单

备注:如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

int main()
{
	int a, b;
	scanf("a=%d,b=%d", &a, &b);
	int c = a;
	a = b;
	b = c;
	printf("a=%d,b=%d", a, b);
	return 0;
}

解题思路——

--本题实现起来简单,小子这就嘴遁~~


6. 大小写转换--(多组输入、getchar)

题目链接:牛客网_BC15 大小写转换_简单

备注:多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

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

知识补充—— 

--看示例需要进行多组输入,那么这里简单说一下:while (scanf("%c", &x) != EOF)

  • --逐字符读取输入的写法,scanf("%c", &x)每次读取 1个字符(包括空格、换行符等控制字符),存储到变量x;
  • != EOF:scanf 在以下情况返回 EOF(通常为 -1):到文件末尾、输入流发生错误;
  • 只要成功读取字符就继续循环,遇到文件结束或错误时退出。

--备注解释:getchar() 通过读取并丢弃回车符,解决缓冲区残留导致的输入错误;

  • 在 scanf 后立即用 getchar() 清理单个回车符。(回车符是输入的一部分,忽略它会导致不可预料的行为!)

解题思路——

--本题要注意的是多组输入的实现,以及大小写字母转换,可知大小写字母之间的ASCII码值相差固定的32(十进制),只需要加上32即可。注意清理回车符!


7. BC16 十六进制转十进制(进制输入输出说名)

题目链接 :牛客网_BC16 十六进制转十进制_简单

备注:printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

int main()
{
	int a = 0xABCDEF;;
	printf("%15d\n", a);
	return 0;
}

这里补充一下进制的输入、输出、转换——

解题思路——

 --本题难度简单,主要是注意一下进制之间的格式符!详情看上面——


8. BC17 缩短二进制(应用进制格式符)

题目链接:牛客网_BC17 缩短二进制_简单

备注:printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示

int main()
{
	int num = 1234;
	printf("%#o %#X", num, num);
	return 0;
}

 解题思路——

--本题根据上一题所补充的相关知识,按照题目要求即可解决。


相关刷题系列回顾 :

#C语言——刷题攻略:牛客编程入门训练(一):简单输出、基本类型

  结语:本篇文章就到此结束了,本文主要是练习的基本类型、输出格式化的部分题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值