(2)如果在“格式控制”字符串中除了格式说明以外还要其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。说明:这里用到了sqrt函数,所有要用到数学库,在头文件加上#include <math.h>。逗号表达式的求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。(3)在用“%c”格式输入字符时,空格字符和转义字符都作为有用字符输入。eg:输入三

1.逗号运算符和逗号表达式

表达式1,表达式2

逗号表达式的求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。

#include
int main(void)
{
printf("%d\n",  3 * 5, 2 * 4, 3 + 5);
return 0;
}

结果为:

2.字符数据的输入输出

  • putchar函数

putchar函数的作用是向终端输出一个字符,一般形式为putchar(c)

#include
int main(void)
{
putchar('H');
putchar('e');
putchar('l');
putchar('l');
putchar('o');
putchar('\n');
return 0;
}

  结果为:

  • getchar函数

getchar函数的作用是从终端输入一个字符。

#include
int main(void)
{
char i;
i = getchar();
i -= 32;
putchar(i);
putchar('\n');
return 0;
}

结果为:

注:实现大小写的转换。

3.格式的输入与输出

  • printf函数

printf格式字符 

字符对应数据类型含义示例
d/iint输出十进制有符号整数,i是老式写法printf("%d",123);输出123
ounsigned int无符号8进制整数(不输出前缀0)printf("0%o",123);输出0173
uunsigned int无符号10进制整数printf("%u",123);输出123
x/Xunsigned int无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)printf("0x%x 0x%X",123,123);输出0x7b 0x7B
f/lffloat(double)单精度浮点数用f,双精度浮点数用lf(printf可混用,但scanf不能混用)printf("%.9f %.9lf",0.000000123,0.000000123);输出0.000000123 0.000000123。注意指定精度,否则printf默认精确到小数点后六位
Ffloat(double)与f格式相同,只不过 infinity 和 nan 输出为大写形式。例如printf("%f %F %f %F\n",INFINITY,INFINITY,NAN,NAN);输出结果为inf INF nan NAN
e/Efloat(double)科学计数法,使用指数(Exponent)表示浮点数,此处”e”的大小写代表在输出时“e”的大小写printf("%e %E",0.000000123,0.000000123);输出1.230000e-07 1.230000E-07
gfloat(double)根据数值的长度,选择以最短的方式输出,%f或%eprintf("%g %g",0.000000123,0.123);输出1.23e-07 0.123
Gfloat(double)根据数值的长度,选择以最短的方式输出,%F或%Eprintf("%G %G",0.000000123,0.123);输出1.23E-07 0.123
cchar字符型。可以把输入的数字按照ASCII码相应转换为对应的字符printf("%c\n",65)输出A
schar*字符串。输出字符串中的字符直至字符串中的空字符(字符串以空字符’\0‘结尾)printf("%s","测试test");输出:测试test
pvoid*以16进制形式输出指针printf("%010p","lvlv");输出:0x004007e6
%字符%输出字符‘%’(百分号)本身printf("%%");输出:%

printf的附加格式说明字符

字符说明
l用于长整型整数,可加在格式符d、 o、x、u前面
m(代表一个正整数)数据最小宽度
n(代表一个正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数

eg:

#include
int main(void)
{
printf("%.2f\n", (int)(123.4567 * 100) / 100.0);
return 0;
}

结果为:

  • scanf函数

常见的scanf格式字符

格式字符说明
d,i用来输入有符号的十进制整数
u用来输入无符号的十进制整数
o用来输入无符号的八进制整数
x,X用来输入无符号的十六进制整数
c用来输入单个字符
s用来输入字符串
f用来输入实数,可以用小数形式或指数形式输入

常见的scanf的附加格式说明字符

字符说明
l用于输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(用%lf或%le)
h用于输入短整型数据(可用%hd,%ho,%hx)

eg:输入一个整型的数,取前三位为a,接着三位为b。

#include
int main(void)
{
int a, b;
scanf("%3d%3d", &a, &b);
printf("a = %d b = %d\n", a , b);
return 0;
}

结果为:

修改上述代码:

scanf("%3d %*2d %3d", &a, &b);

结果为:

%*2d表示读入2位整数但不敷给任何变量,即45被跳过。

使用scanf函数时应该注意的问题

(1)scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。

scanf("%d%d", &a, &b);

(2)如果在“格式控制”字符串中除了格式说明以外还要其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符

scanf("%d,%d", &a, &b);

应输入:1,2

(3)在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。

scanf("%c%c%c", &c1, &c2, &c3);

 eg:输入三角形的边长(必须满足两边之和大于第三边),计算三角形的面积

#include
#include
int main(void)
{
double a, b, c, s, area;
printf("请输入三角形的三边:\n");
scanf("%lf%lf%lf", &a, &b, &c);
s = (a + b + c) / 2.0;
area = sqrt ( s * (s - a) * (s - b) * (s - c));
printf("%f\n", area);
return 0;
}

结果为:

说明:这里用到了sqrt函数,所有要用到数学库,在头文件加上#include <math.h>。

posted @ 2025-07-25 10:23  wzzkaifa  阅读(6)  评论(0)    收藏  举报