🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题合集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"
目录
前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现的是基本类型、输出格式化的一部分,共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. 按照格式输入并交换输出
备注:如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
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;
}
解题思路——
--本题根据上一题所补充的相关知识,按照题目要求即可解决。
相关刷题系列回顾 :
结语:本篇文章就到此结束了,本文主要是练习的基本类型、输出格式化的部分题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~