导言
这篇文章也是给大家来找乐子的
关于这个专栏的详细介绍可以看这个专栏的第一篇文章
话不多说,直接上题
1.
题干:
描述
输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
数据范围:年份满足
1990≤y≤2015
,月份满足
1≤m≤12
,日满足
1≤d≤30
输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
代码:
#include<stdio.h> int main() { int a; int b; int c; scanf("%4d%2d%2d",&a,&b,&c); printf("year=%d\n",a); printf("month=%02d\n",b);//根据备注的提醒信息,%02d表示输出的格式为2位,不足在前面添0 printf("date=%02d\n",c); return 0; }
知识点:
1.通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据
2.通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
如:根据备注的提醒信息,%02d表示输出的格式为2位,不足在前面添0
2.
题干:
描述
实现字母的大小写转换。多组输入输出。
输入描述:
多组输入,每一行输入大写字母。
输出描述:
针对每组输入输出对应的小写字母。
先看错误代码及运行结果:
正确代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { char ch; char c; while (scanf("%c", &ch) != EOF) { getchar(); //因为回车也算一个字符,所以在输入第一个字符换行后,getchar会读取换行的回车键 //换行的回车被读取,若防止回车被读取,可在其前面多读取一次消耗回车 c = ch + 32; printf("%c\n", c); } return 0; }
知识点:
回车也算一个字符,所以在输入第一个字符换行后,getchar会读取换行的回车键
getchar读取走回车键
3.
题干:
描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
数据范围:
0≤n≤31
输入描述:
一行输入整数n(0 <= n < 31)。
输出描述:
输出对应的2的n次方的结果。
代码:
#include <stdio.h> int main() { int n; scanf("%d",&n); printf("%d",1<<n); //在2进制中,2的表示为00000010 //我们只使用移位符来完成2的n次方,仅需使这个1往左移动。 //如4:00000100;8:00001000 //所以最终表示式为1<<n return 0; }
知识点:
知识点:移位符移动的是二进制位
4.
题干:
输入五个字符,求平均数(保留一位小数)
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int q, a, z, w, s; float x; scanf("%d %d %d %d %d", &q, &a, &z, &w, &s); x = (q + a + z + w + s)/5.0f; printf("%.1f", x); return 0; }
知识点:
5.0被自动识别为double类型,在后面加上f,使其被识别为float
如图:
5.
题干:
描述
将浮点数转换为整数类型,要求四舍五入。
输入描述:
随机输入的浮点数
输出描述:
四舍五入之后的整数
代码:
#include <stdio.h> #include<math.h> int main() { double a; scanf("%lf", &a); int b = round(a); printf("%d",b); return 0; }
未完待续,各位明天晚上七点半见