今天终于学完了弟三章,实际上昨天没剩下多少了,今天主要是在写练习。

//int main(void)
//{
//	int a;
//	unsigned int b;
//	a = 12;
//	b = '\012';
//	printf("a=%d,b=%u", a, b);
//	return 0;
//}

首先试了下unsigned int和正常int的不同,因为书上在打印\012时答案上只显示了unsigned int,但现在看来应该都是可以的。


//int main(void)
//{
//	printf("Type int has a size of %zd bytes.\n", sizeof(int));
//	printf("Type char has a size of %zd bytes.\n", sizeof(char));
//	printf("Type float has a size of %zd bytes.\n", sizeof(float));
//	return 0;
//}

然后是测量字符所占比特大小,就是运用了sizeof和%zd。

//int main(void)
//{
//	int a = 12.99;
//	float b = 2.3428923943;
//	printf("%d\n%f", a, b);
//	return 0;

然后是不同数据类型的匹配,像a就会只剩12,不会四舍五入,b只会保留到第六位小数,float只能保证前六位的精度。

//八进制打印
//int main(void)
//{
//	int num2 = 191;
//	printf("num2=%#o or %d", num2, num2);
//	return 0;
//}

然后是八进制打印,我到现在还没搞懂‘\ddd’怎么使用和打印,就算用了,打印出来的也和正常的不一样。

//int main(void)
//{
//	char a = '\n';
//	printf("%c", a);
//	return 0;
//}
//int main(void)
//{
//	printf("\n");
//	return 0;
//}

然后是非打印字符的打印,这个就是从前面的练习里面学到的,在这里又给复习了一下。

//练习一
//int main(void)//由字符找ASCII值
//{
//	char a;
//	scanf("%c", &a);
//	printf("The %d is %c", a, a);
//	return 0;
//}
//int main(void)//由ASCII值找字符
//{
//	char a;
//	scanf("%d", &a);
//	printf("The %d is %c", a, a);
//	return 0;
//}

接下来就是练习了。要找ASCII值就用scanf("%c",&a),要找字符就用scanf("%d", &a)。

//练习二
//int main(void)
//{
//	float value;
//	printf("Enter a floating-point value:");
//	scanf("%f", &value);
//	printf("fixed-point notation:%f\n", value);
//	printf("exponential notation:%e\n", value);
//	printf("p notation:%a", value);
//	return 0;
//}

然后是指数记数法的打印,和昨天的一样。%e是指数记数法,%a是以十六进制指数记数法打印。

//练习三
//int main(void)
//{
//	int age;
//	printf("Please input your age:");
//	scanf("%d", &age);
//	printf("You have lived %f", age * 3.156e7);
//	return 0;
//}

练习三是输入年龄计算时间,发现一个问题就是在引入是如果先声明在取地址的话,就会报错,就例如如果我先float time=age*3.156e7,再scanf("%d",&age),就是错误的。


//练习四
//int main(void)
//{
//	int water;
//    printf("We have the number of ");
//	scanf("%d", &water);
//	printf("and there are %f molecule in it", water * 950 / 3e-23);
//	return 0;
//}

下一个是计算水分子数,这个数据真的太大了用%f算实际上还没到小数的位置就开始不准了。


//练习五
//int main(void)
//{
//	int inch;
//	scanf("%d", &inch);
//	float cm;
//	cm = inch * 2.54;
//	printf("%d is %f", inch, cm);
//	return 0;
//}

下一个,由inch转换为cm,挺简单的,没什么好说的。

/练习六
//int main(void)
//{
//	int cup;
//	scanf("%d", &cup);
//	float pint = cup / 2;
//	printf("I have %d cups\n", cup);
//	printf("they are also %f pints\n", pint);
//	printf("and %d ounces,%d ladles,%d teaspoons\n", cup * 8, cup * 16, cup * 48);
//	return 0;
//}

最后一个是品脱,盎司什么的,出现的问题在于pint是cup的两倍大,所以我用float引入参量pint并且计算pint=cup/2,但打印的结果只有整数位,即如果我输入cup=5,那么pint只会有2,而不是2.5,不知道问题出在了哪里。