(二)输出输入

本文聚焦C语言中printf和scanf函数。介绍了printf的输出格式控制,如常见格式输出、小数指定位数和对齐方式;还阐述了scanf的输入格式控制,强调应使用变量地址。同时指出scanf输入时的各种坑,包括格式字符输入要求、%c格式单字符输入问题及混合类型输入问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


输出printf

输出格式控制

如:%(占位符/格式字符)
printf(“a=%d”,a);

常见的几种格式输出

%d %c %s %f %x %p
在这里插入图片描述

小数输出很奇特

指定位数

在这里插入图片描述

对齐方式

** -m.nf 左对齐
不加 - 是右对齐**
在这里插入图片描述

代码

#include <stdio.h>

/* 
	%d %c %s %f %x %p
	
*/ 
int main()
{
	int a = 10;
	char b = 'b';
	float c = 6.23;
	int d = 99; // 0x63
	
	printf("十进制输出\n");
	printf("a = %d\n\n",a);
	
	printf("字符输出\n");
	printf("b = %c\n\n",b);
	
	printf("小数输出\n");
	printf("c = %f\n\n",c);
	
	printf("字符串输出\n");
	printf("字符串为:%s \n\n","Helloworld\n");
	
	printf("十六进制输出\n");
	printf("d = 0x%x\n\n",d);
	
	printf("地址进制输出\n");
	printf("a的地址:%p\n\n",&a);
	
	return 0 ;
}

现象

在这里插入图片描述

输入scanf

输入格式控制

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

例如,若a,b,c为整型变量,如果写成scanf(“%d%d%d”,a,b,c);是不对的。

应将“a,b,c”改为“&a,&.b,&c”。许多初学者常犯此错误。

输入坑

scanf格式中有什么字符,输入的时候也要输入

仅仅在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。例如:输入a 空格 b 空格 c或者a 回车 b 回车 c 回车

代码

#include <stdio.h>

int main()
{
	int data1,data2,data3;
	
	/*
	printf("请输入一个数: \n");
	scanf("%d",&data1);
	printf("输入完毕\n");
	printf("你输入的数是:%d\n",data1);
	
	printf("请输入三个数: \n");
	scanf("%d%d%d",&data1,&data2,&data3);
	printf("输入完毕\n");
	printf("你输入的数是:%d  %d  %d\n",data1,data2,data3);
	
	*/
	printf("请输入三个数: \n");
	scanf("data1=%d,data2=%d,data3=%d",&data1,&data2,&data3);
	printf("输入完毕\n");
	printf("你输入的数是:data1=%d  data2=%d  data3=%d\n",data1,data2,data3);
		
	return 0;
}

现象

在这里插入图片描述

%c 格式 单字符输入的坑

在这里插入图片描述

代码

#include <stdio.h>

int main()
{
	char a,b,c;
	
	printf("这是单个字符输入的坑,不能加空格缩进等转义字符隔开\n\n");
	
	printf("请输入三个字符\n");
	scanf("%c%c%c",&a,&b,&c);
	printf("输入完毕\n");
	printf("输入的三个字符为:a=%c,b=%c,c=%c\n",a,b,c);
	
	return 0;
}

现象

在这里插入图片描述

混合类型输入问题

坑之所在

因为不仅仅是单纯的输入数值数据,所以空格,Tab,回车(非法字符)等,不一定是认为数据结束

代码

#include <stdio.h>

int main()
{	
	int data_int;
	char data_char;
	float data_float;
	
	printf("混合输入问题\n\n");
	
	printf("请分别输入一个整数,一个字符,一个小数\n");
	scanf("%d%c%f",&data_int,&data_char,&data_float);
	printf("输入完毕\n");
	printf("输入的三个为:data_int=%d,data_char=%c,data_float=%7.2f\n",data_int,data_char,data_float);
	
	return 0;
}

现象

在这里插入图片描述



----- 如有错误欢迎大家批评指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爪.exe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值