PTA前十题
- 7-2 输入输出整数
- 7-3 输入输出单精度实数
- 7-4 输入输出双精度实数
- 7-5 输入输出字符
- 7-6 整数的各种形式输出
- 7-7 混合无间隔输入输出
- 7-8 日期格式化
- 7-9 区位码输入法
写在前面:不是很难的题目直接放上代码,只作为记录
初学C语言的时候涉及到的输入输出不会很难,但是需注意“原样输入这个问题”。特别是在一些期末考试或者二级题目中会出现这样的问题。
这一部分重要的不是把答案做出来,更重要的是培养一个C语言的语法习惯,比如:括号成对出现、单词拼写正确、不是void的函数直接先写return,这些习惯会让后期写长代码减少很多的编译问题和逻辑问题。写给自己!!!习惯和思维远比刷题本身更重要!!
7-2 输入输出整数
输入1个绝对值不超过100000的整数A。
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
printf("%d",a);
return 0;
}
7-3 输入输出单精度实数
本题目要求读入1个单精度实数,然后输出这个实数,显示两位小数。
小贴士:输入/输出的单精度控制格式用%f,输出用%.nf表示输出的数显示n位小数。
#include<stdio.h>
int main()
{
float a;
scanf("%f", &a);
printf("%.2f",a);
return 0;
}
7-4 输入输出双精度实数
本题目要求读入1个双精度实数,然后再输出它,显示两位小数。
小贴士:双精度输入时候用%lf ,不是%f,输出和float相同%f.
#include<stdio.h>
int main()
{
double a;
scanf("%lf", &a);
printf("%.2f",a);
return 0;
}
7-5 输入输出字符
本题目要求读入1个字符,输出此字符和其对应的十进制数。
小贴士:字符输入输出控制格式是%c 。题目有逗号,注意一并输出。另外,char 变量在内存中存储的是字符对应的 ASCII 码值,因此 如果以 %d 输出,那么是 ASCII码值整数。反过来一个整型,也能用%c输出。
#include<stdio.h>
int main()
{
char a;
scanf("%c",&a);
printf("%c,%d",a,a);
return 0;
}
7-6 整数的各种形式输出
本题目要求读入1个整数,输出此整数的十进制表示,八进制表示和十六进制表示,还有无符号整数表示。
小贴士:%o是八进制整数格式,十六进制请自己查阅资料。
八进制和十六进制是对二进制的改进,增加二进制数的可读性,二进制表示内存地址时候太长了,且容易出错,因此都采用十六进制来表示内存地址,一个32位地址只需要8位十六进制的数,而如果用二进制表示则是32位0和1构成的码,八进制是中间过渡产品,比如工业领域的PLC控制器仍然保留八进制的使用。
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
printf("%d,%o,%x,%u",a,a,a,a);
return 0;
}
7-7 混合无间隔输入输出
本题目要求读入1个整数,1个字符和1个双精度实数,然后依次输出它们,用逗号隔开。
小贴士:用%c输入数据时候,要特别小心,%c会把空格当作字符读进来,因此不能用空格当作输入的分隔符。比如scanf(“%d%c”,&p1,&p2);输入的时候:10 a是错误的,因为10和a之间有空格,空格会当作有效输入赋给p2.
#include<stdio.h>
int main()
{
int a;
char b;
double c;
scanf("%d%c%lf",&a,&b,&c);
printf("%d,%c,%lf",a,b,c);
return 0;
}
7-8 日期格式化
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
本题需要注意的的是输出日和月需要有0来填充十位
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d-%d-%d",&a,&b,&c);
//注意需要控制前导零
printf("%d-%02d-%02d",c,a,b);
return 0;
}
7-9 区位码输入法
国标 GB2312-80 全部汉字与图形符号排列成 94×94 的一张大表:
每一行称为一个“区”(01 区 ~ 94 区),
每一列称为一个“位”(01 位 ~ 94 位)。
汉字的机内码由高、低字节两个字节组成,它们分别是区码和位码加 160 得到的。即:
高字节 = 区码 + 160
低字节 = 位码 + 160
以汉字“爱”为例,其区位码为 1614,即 16 区、14 位,该汉字的两个字节分别为:
16 + 160 = 176
14 + 160 = 174
依次输出这两个字节(字符)
putchar(176);
putchar(174);
#include<stdio.h>
int main()
{
int a, b;
scanf("%d", &a);
b = a / 100 + 160;//高两位
a = a % 100 + 160;//低两位
putchar(b);
putchar(a);
return 0;
}