如何使用scanf和printf~

如何使用scanf和printf~

1.printf

1.1基本用法
1.2占位符
1.3占位符举例
1.4输出格式

2.scanf

2.1基本用法
2.2scanf的返回值
2.3占位符
2.4赋值忽略符

1.printf

1.1基本用法
    printf()的作用是将参数文本输出到屏幕,f代表format(格式化),表示可以定制输出文本的格式。printf不会自动换行,因此运行结束后,光标就停留在输出结束的地方。

int main()
{
printf("hello world");

return 0;

为了让光标移到下一行可以在输出语句末尾添加一个\n,表示换行:

int main()
{
printf("hello world\n");

return 0;

   printf()是在标准库的头文件中<stdio.h>定义的,所以使用时要加<stdio.h>头文件。


1.2占位符
   所谓占位符,就是在这个占位符位置可用其他值代入,printf()可以在输出文本中指定占位符。

int main()
{
int a = 3;
printf("%d",a);

return 0;}

   上面代码中的%d就是一个占位符,%d的位置可以用a代替,所以上面语句输出的结果是3。
占位符的第一个字符一律为百分号%,第二个字符表示占位符的类型,%d表示这里代入的值必须是一个整数

printf("%d",a);

   这里的%d是printf的第一个参数,a是第二个参数,第二个参数就用来替换占位符的值。
   除了%d%s也是占位符,用来代替字符串

int main()
{
ptintf("%s will come tonight",zhangsan);
return 0;
}

这里的zhangsan替换了占位符%s.一行语句中也可以有多个占位符。


1.3占位符举例
   printf()的占位符有很多种,与C语言的数据类型相对应。以下是一些常用的占位符

  • %a:十六进制浮点数,字母输出为小写 。
  • %A: 十六进制浮点数,字母输出为大写 。
  • %c: 字符。
  • %d: 十进制整数。
  • %ld:十进制long int类型
  • %f: 小数(包含float类型和double类型)。
  • %lf:long double浮点类型。
  • %o: 八进制整数。
  • %p:指针
  • %s:字符串
  • %zd:size_t类型

1.4输出格式
   printf()允许限定占位符的最小宽度

int main()
{
printf("%5d",123);//输出“  123”
return 0;

%5d限定了输出的最小宽度是五位,若果不满五位,就会补空格,默认为右对齐因此会在123前面自动补上两个空格。如果想改为左对齐,则写成%-5d

int main()
{
printf("%-5d",123);//输出“123  ”
return 0;

   小数用%f打印,也可限定显示宽度:

int main()
{
printf("%12f",12.34);//会打印出“   12.340000”
return 0;
}

%12f表示输出的浮点数至少要占12位,由于小数点后默认精度是6位,所以输出的结果会在开头添加三个空格。
   在%d的中间加上正号(+),可以显示数字的正负号

int main()
{
printf("%+d", 12);//显示+12
printf("%+d",-12);//显示-12
return 0; 
}

还可以限定小数位数:

int main()
{
printf("%6.2f",12.34);//会打印出“ 12.34”
return 0;
}

输出的数前面只加一个空格,小数点也算一位,.2f限定了小数点后面只有两位。


2.scanf
2.1基本用法
   scanf()函数用于读取用户的键盘输入,当我们定义了一个变量,我们需要给变量输入一个值时,就可以用scanf

int main()
{
int a = 0;
scanf("%d",&a);
printf("%d",a);
return 0;
}

   程序运行到scanf()语句时,会停下来等待用户从键盘输入,然后将用户输入的值存入变量a的地址中,&a意思是取了a这个变量的地址,将输入的值存进去,&取地址符
   scanf()处理数值占位符时,会自动过滤空白字符,包括空格,制表符,换行符等。

   scanf()的返回值是一个整数,表示成功读取的变量个数。如果没有读取到任何项,或者匹配失败,则返回0,如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件末尾,则返回常量EOF(-1)。

int main()
{
int a = 0;
int b = 0;
float f = 0.0f;
int r = scanf("%d %d %f",&a,&b,&f);//r是一个变量,用来接收scanf成功读取的变量个数
printf("a = %d b = %d c = %f\n",a,b,f);
printf("r = %d\n",r);
return 0;
}

结果:
在这里插入图片描


2.3占位符
scanf()常用的占位符,与printf()的占位符基本一致

  • %c:字符。
  • %d:整数。
  • %f:float类型浮点数。
  • %lf:double类型浮点数。
  • %Lf:long double类型浮点数。
  • %s:字符串。
  • %[ ]:在方括号中指定一组匹配的字符(比如%[ 0-9]),遇到不在集合之中的字符,匹配将停止。

2.4赋值忽略符

int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d-%d-%d",&year,&month,&day);
printf("%d %d %d",year,month,day);

return 0;
}

上面代码中,如果用户输入2024-6-22,就会正确解读出年、月、日,但如果用户以其他形式输入,例如

2024/6/22,scanf解析数据就会失败。
为了避免这种情况,scanf()提供了一个赋值忽略符*,只要把*加在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。

int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d%*c%d%*c%d",&year,&month,&day);
printf("%d %d %d",year,month,day);

return 0;

   %*c就是占位符的百分号后面,加入了赋值忽略符,表示这个占位符没有对应的变量,解读后不必返回。


   如有错误和不足请大家指正~

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值