今天学的很快,大多数都是之前知道的。
//#define DENSITY 62.4
//int main(void)
//{
// float weight, volume;
// int size, letters;
// char name[40];
// printf("Hi!What's your first name?\n");
// scanf("%s", &name);
// printf("%s,what's your weight and pounds?\n", name);
// scanf("%f", &weight);
// size = sizeof(name);
// letters = strlen(name);
// volume = weight / DENSITY;
// printf("Well,%s,your volume is %2.2f cubic feet.\n", name, volume);
// printf("Also,your first name has %d letters,\n", letters);
// printf("and we have %d bytes to store it.\n");
// return 0;
//}
这是一个互动代码,他需要输入两个值,一个是name,一个是weight,原本书上是输入了Christine这个名字,我输入的是Angela Plains,一个含有空格的字符串,本来我觉得是没有什么问题的,但是运行的时候程序自行调过了weight的输入,并在后面的weight的位置上出现了一团数字,而当我输入不含空格的字符串时,运行到weight时就会停止让我输入数据。应该是不能输入含空格的字符串,会被认为是weight的数据。
//#define PRAISE "You are an extraordinary being."
//int main(void)
//{
// char name[40];printf("What's your name? ");
// scanf("%s", &name);
// printf("Hello name of %d letters occupies %zd memory cells.\n", strlen(name), sizeof(name));
// printf("The phrase of praise has %d letters", strlen(PRAISE));
// printf(" and occupies %zd memory cells.\n", sizeof(PRAISE));
// return 0;
//}
strlen计算的是字符串中的字符数量,而sizeof计算的则是字符串的大小,虽然一字符的大小就是一字节,但是strlen和sizeof的结果还是有差异的。用strlen算出的结果是储存了字符的单元的个数,不包含空字符\0,sizeof计算的是整个字符串,包含空字符,而且在声明函数的时候如果说明了所需字符串的大小,例如上面的name[40]就说明了name这个变量中只能塞入40个字符,由此打印出的sizeof就是40,同样在PRAISE的打印中,sizeof比strlen大一个字符,多的那个就是空字符。还要说明的是name[40]这样的字符串中要算上空字符,也就是最多39个有效的字符。
//#define PI 3.14159
//int main(void)
//{
// float area, circum, radius;
// printf("What is the radius of your pizza?\n");
// scanf("%f", &radius);
// area = PI * radius * radius;
// circum = 2.0 * PI * radius;
// printf("Your basic pizza parameters are as follows:\n");
// printf("circumference=%1.2f,area=%1.2f\n", circum, area);
// return 0;
//}
//int main(void)
//{
// float area, circum, radius;
// const float PI = 3.14159;
// printf("What is the radius of your pizza?\n");
// scanf("%f", &radius);
// area = PI * radius * radius;
// circum = 2.0 * PI * radius;
// printf("Your basic pizza parameters are as follows:\n");
// printf("circumference=%1.2f,area=%1.2f\n", circum, area);
// return 0;
//}
上面的%1.2f中1表示格式化字符串中所占字符数目为1,虽然看不懂什么意思,2是指小数位数为2。上面运用到了两种定义常量的方法,define和const。
标签:name,weight,area,练习,第十次,C语言,radius,printf,sizeof From: https://blog.51cto.com/u_16187763/6968736