C Primer Plus 4
一、字符串和格式化输入输出
1.前导程序
\#include<stdio.h>
\#include<string.h> *//提供strlen()函数原型*
\#define DENSITY 62.4 *//人体密度*
\#include<windows.h>
int main()
{
float weight,volume;
int size,letters;
char name[40]; *//name是一个可以容纳40个字符的数组*
printf("Hi!What's your first name?\n");
scanf("%s",&name);
printf("%s,What's your weight in pounds?\n");
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",size);
getchar();
system("pause");
return 0 ;
}
2、编程练习
1、编写一个程序,读取一个浮点数,首先以小数点计数法打印,然后以指数计数法打印。
#include<stdio.h>
#include<windows.h>
int main()
{
float input;
printf("Enter a float number:\n");
scanf("%f",&input);
printf("The input is %.1f or %.1e \n",input,input);
system("pause");
return 0 ;
}
2、提示用户输入用户名,打印名和姓的字母数,并对齐。
#include<stdio.h>
#include<windows.h>
int main()
{
char name[40],surname[40];
int wname,wsurname;
printf("Please input your first name:\n");
scanf("%s",&name);
printf("Please input your last name:\n");
scanf("%s",&surname);
wname = printf("%s",name);
printf("");
wsurname = printf("%s",surname);
printf("\n%*d %*d",wname,wname,wsurname,wsurname);
/*
字母数的对齐用到的字符宽度需要使用‘*’修饰符来通过参数指定。
如果使用strlen()函数,可以不定义wname,wsurname变量
*/
system("pause");
return 0 ;
}
3、编写一个程序,使用户输入旅行里程和消耗的汽油量,计算并显示消耗每加仑汽油行驶的英里数,保留一位小数。
#include<stdio.h>
#define GALLON_TO_LITRE 3.785
#define MILE_TO_KM 1.609
/*使用define语句定义单位之间的换算比例*/
#include<windows.h>
int main()
{
float range,oil;
printf("Please input the range you traveled in mile:\n");
scanf("%f",&range);
printf("Please input the oil you spend in gallon:\n");
scanf("%f",&oil);
printf("In the USA,your oil wear is %.1f M/G.\n",range/oil);
printf("In the Europe,your oil wear is %.1f L/100KM",(oil*GALLON_TO_LITRE)/(range*MILE_TO_KM));
system("pause");
return 0 ;
}
3、总结:字符串与格式化输入与输出
字符串:一个或多个字符序列
双引号表示字符串
字符串以“\0”结尾
字符数组用“[]”表示
strlen()函数用于获取字符串长度
sizeof()运算符
格式化输出:printf()函数
数据打印的转换说明符
printf()的待打印列表
printf()的转换说明修饰
printf()的标记
打印过程中的数据转换
printf()的返回值
格式化输入:scanf()函数
scanf()的参数
常量和变量
#define预处理命令
符号常量
明示常量
limits.h
float.h