最近发现自己有些C语言基础还是有些不牢固,基础是很重要的。虽然学过C语言,但是真的功力不够。而这本书之前打算读却因为各种原因搁置了,现在重新拾起希望能够提升自己的C语言功底。从第三章数据类型开始读起,并采用全新的学习方法,因为会点C语言,本着高效学习的原则,打算读书把不熟悉的部分挑出整理并记住运用,认真完成课后题。
下面是我的查缺补漏,找出的不熟悉点:
1.Int 类型:
显示八进制:%o,显示十六进制:%x。另外,要显示个进制的前缀0,0x,0X必须使用%#o,%#x,%#X。
unsigned int —%u
long -------%ld
short 类型:使用h前缀。
h和l都可以和u一起用,用于表示无符号类型。如unsigned long ----%lu,long long有符号:%lld,无符号%llu
2.转义序列
\a 警报(ANSI C)
\b 退格
\f 换页
\r 回车
\t 水平制表符
\v 垂直制表符
\ 反斜杠
\’ 单引号
\” 双引号
? 问号
\0oo 八进制值(oo必须是有效的八进制数,即每个o表示0~7中的1个数)
\xhh 十六进制值(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数)
(后两个表示ASCII码,即实际表示/字符)
3.浮点类型float 可以没有小数点或指数部分,但不能同时省略两者;可以省略小数部分或整数部分,但不能同时省略两者。
默认浮点常量是double类型,而浮点数加上后缀复F或f可覆盖默认设置,编程float类型,加上后缀L或l为long double 类型。
十六进制表示浮点型常量:在十六进制数前加上十六进制前缀0x或0X,用p或P代替e或E,用2的幂代替10的幂(即p计数法)。
%f打印十进制浮点数float或者double。
%e打印指数计数法的浮点数
%a打印十六进制格式浮点数
long double 加前缀L
4.复数与虚数
float_Complex,double_complex,long double_Complex
float_Imaginary,double_Imaginary,long double_Imaginary
Eg:float_Complex=float+flaot_Imaginary
若包含<complex.h>头文件
不冲突情况下则可用complex代替_Complex,imaginary代替_Imaginary,有I代表-1的平方根。
5.sizeof()以字节为单位给出指定类型的大小,%zd转换说明匹配sizeof的返回类型
下面是课后题编程练习部分:
#include<stdio.h>
void num1(void)
{
printf("\n\n整数上溢: %d",2147483647+1);
printf("\n浮点数上溢:%e",3.4E38*100.0f);
printf("\n浮点数下溢:%e",0.1234E-10/10);
}
void num2(void)
{int a;
printf("\n\n input ASCII:");
scanf("%d",&a);
printf("\n字符串表示 %c",a);
}
void num3(void)
{
printf("\n\n\a Startled by the sudden sound, Sally shouted,\n\"By the Great Pumpkin, what was that!\"");
}
void num4(void)
{ float b,c,d;
printf("\n\n输入一个浮点数:");
scanf("%f",&b);
printf("\n小数点形式: %f",b);
printf("\n指数形式: %e",b);
printf("\np计数法: %a",b);
}
void num5(void)
{
float a;
printf("\n\n输入年龄:");
scanf("%f",&a);
printf("\n换算为秒数:%e",a*3.156e7);
}
void num6(void)
{
float a;
printf("\n\n输入水的夸脱数:");
scanf("%f",&a);
printf("\n水分子数量:%f",(a*9.5e25)/3);
}
void num7(void)
{
float a;
printf("\n\n输入身高:(英寸)");
scanf("%f",&a);
printf("\n厘米显示身高为%.2f",a*2.54);
}
void num8(void)
{
float a;
printf("\n\n输入杯数:");
scanf("%f",&a);
printf("\n品脱数:%f",a/2);
printf("\n蛊司数:%f",a*8);
printf("\n汤勺数:%f",a*8*2);
printf("\n茶勺数:%f",a*8*2*3);
}
int main()
{
num1();
num2();
num3();
num4();
num5();
num6();
num7();
num8();
}