✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!
?个人主页:@每天都要敲代码的个人主页
?系列专栏:牛客网C语言刷题专栏
?推荐一款模拟面试、刷题神器,从基础到大厂面试题?点击跳转刷题网站进行注册学习
目录
习题一:出生日期输入输出_牛客题霸_牛客网
习题二:按照格式输入并交换输出_牛客题霸_牛客网
习题三:大小写转换_牛客题霸_牛客网
习题四:十六进制转十进制_牛客题霸_牛客网
习题五:缩短二进制_牛客题霸_牛客网
习题六:牛牛的空格分隔_牛客题霸_牛客网
结束语
习题一:出生日期输入输出_牛客题霸_牛客网
描述
输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
数据范围:年份满足 1990≤y≤2015 ,月份满足 1≤m≤12 ,日满足1≤d≤30
输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
输入:20130225
输出:
year=2013
month=02
date=25
备注:通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
具体代码:
#include <stdio.h>int main(){ // 方法1:看成三个数 int y=0,m=0,d=0; scanf("%4d%2d%2d",&y,&m,&d); //指定带宽 printf("year=%4d\nmonth=%02d\ndate=%02d\n",y,m,d); //方法2:看成一个数 int date = 0; scanf("%d",&date); printf("year=%4d\nmonth=%02d\ndate=%02d\n",date/10000,date/100%100,date%100); return 0;}
习题二:按照格式输入并交换输出_牛客题霸_牛客网
描述
输入两个整数,范围~,交换两个数并输出。
输入描述:
输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔。
输出描述:
把两个整数按格式输出,中间用“,”分隔。
输入:a=1,b=2
输出:a=2,b=1
#include <stdio.h>int main(){ int a,b; scanf("a=%d,b=%d",&a,&b); // 方法1:借用临时变量 int tmp = a; a = b; b = tmp; printf("a=%d,b=%d",a,b); // 方法2:使用+,有可能溢出 a = a+b; b = a-b; a = a-b; printf("a=%d,b=%d",a,b); // 方法3:使用异或^ a = a^b; b = a^b; a = a^b; printf("a=%d,b=%d",a,b); return 0;}
习题三:大小写转换_牛客题霸_牛客网
描述
实现字母的大小写转换。多组输入输出。
输入描述:
多组输入,每一行输入大写字母。
输出描述:
针对每组输入输出对应的小写字母。
输入:
A
B
输出:
a
b
#include <stdio.h>#include <stdlib.h>int main(){ // 1.使用库函数tolower int ch = 0; while((ch = getchar()) != EOF){ //多组输入,一般都是写成这个格式 printf("%c",tolower(ch)); //使用tolower库函数 } // 2.不使用库函数 while((ch = getchar()) != EOF){ putchar(ch+32); //大写和小写差32,例如:A是65,a是97 getchar(); //吸收遗留的\n printf("\n"); //换行 } return 0;}
习题四:十六进制转十进制_牛客题霸_牛客网
描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。
输入描述:
无
输出描述:
十六进制整数ABCDEF对应的十进制整数,所占域宽为15。
备注:
printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。
#include<stdio.h>int main(){ printf("%15d\n",0XABCDEF); //十六进制数是以0X开头的 return 0;}
习题五:缩短二进制_牛客题霸_牛客网
描述
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
输入描述:
无
输出描述:
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。
备注:
printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示
#include <stdio.h>int main(){ // 输入十进制数 int n = 1234; scanf("%d",&n); // 打对应的八进制和十六进制 printf("%#o %#X",n,n); //#在输出打印的时候会显示八进制前面的0,和十六进制前面的0X}
习题六:牛牛的空格分隔_牛客题霸_牛客网
描述
牛牛从键盘读入一个字符,一个整数,一个单精度浮点数,按顺序输出它们,并用空格分隔,浮点数保留 6 位小数。
输入描述:
读入一个字符,一个整数,一个单精度浮点数用换行符隔开,
输出描述:
按顺序输出字符、整数、单精度浮点数,用空格分隔,浮点数保留 6 位小数
输入:
a
1
1.23
输出:
a 1 1.230000
#include <stdio.h>int main(){ char c; int i; float f; scanf("%c\n%d\n%f\n",&c,&i,&f); printf("%c %d %.6f",c,i,f); return 0;}
结束语
今天的分享就到这里啦!快快通过下方链接注册加入刷题大军吧!各种大厂面试真题在等你哦!
?刷题神器,从基础到大厂面试题?点击跳转刷题网站