怎样让多个scanf输入的数据连在一起

怎样让多个scanf输入的数据连在一起,第1张

蓝桥杯
scanf函数在混合接受数据(%d和%c相连接)时候的方式

Archimedes' boat
原创
关注
0点赞·880人阅读
如下代码,怎样输入才是正确的?
#include<stdioh>
void main(){
int a,b;
char c,d;
scanf("%d%c%d%c",&a,&c,&b,&d);
printf("%d-%d-%c-%c",a,b,c,d);
}
登录后复制
假设希望a、b、c、d分别是10、20、A、B:
输入“10A20B”,输出“10-20-A-B”;输入“10A 20B”,输出“10-20-A-B”;输入“10A 20B”,输出仍然是“10-20-A-B”,这些都是正确的输入方式。
若输入“10 A20B”,则输出“10-1- -”,很明显不对了。
分析&总结:
输入时:
首先:如果是“%c%d”的形式,中间加不加空格都无所谓;
然后:如果是“%d%c”的形式,不应该在中间加上空格;
但是如果%c不连接在%d后面,则按照空格或者逗号修改输入方式:
#include<stdioh>
void main(){
int a,b;
char c,d;
scanf("%d %c%d%c",&a,&c,&b,&d); /此时输入“10 A20B”或者"10 A 20B”都可正常输入,
但是“10A20B”反而不能正常输入了/
printf("%d-%d-%c-%c",a,b,c,d);
}
登录后复制
同理,“%d %c %d%c”和"%d %c%d%c"的效果一致,"%d,%c%d%c"对应的输入方式应该是“10,A20B"或者“10,A 20B”等等。

getchar()本来就是接收一个字符,“A”是一个字符,回车也是一个字符,不记得吗“\n”转义字符,所以这就是getchar()的输入,一个一个的输入字符;
具体用法scanf 格式输入函数
函数作用:按照变量在内存的地址将变量值存进去。
一般格式:scanf(格式控制,地址表列)
其中,格式控制:
%d:以带符号的十进制形式输入整数
%o:以八进制无符号形式输入整数
%x:以十六进制无符号形式输入整数
%u:以无符号十进制形式输入整数
%c:以字符形式输入,只输入一个字符
%s:输入字符串
%f:以小数形式输入单,双精度数
%e:以指数形式输入实数
地址列表:是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址
举例:
用scanf函数输入数据。
#include<stdioh>
void main()
{
int a,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
运行情况:3 4 5 (回车) (输入a,b,c的值)3,4,5 (输出a,b,c的值)
使用scanf函数时应注意的问题 :
(1)scanf函数中的“格式控制”后面应当是变量地址,而不应
是变量名。
(2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符,
则在输入数据时在对应位置应输入与这些字符相同的字符。
(3) 在用“%c”格式输入字符时,空格字符和“转义字符”都作为
有效字符输入
(4) 在输入数据时,遇以下情况时认为该数据结束。
① 遇空格,或按“回车”或“跳格”(Tab)键;
② 按指定的宽度结束,如“%3d”,只取3列;
③ 遇非法输入。
函数名: getchar
功 能: 从stdin流中读字符
用 法: int getchar(void);
注解:
getchar有一个int型的返回值当程序调用getchar时程序就等着用户按键用户输入的字符被存放在键盘缓冲区中直到用户按回车为止(回车字符也放在缓冲区中)getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1输入的字符不会回显在屏幕上getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行
程序例:
#include <stdioh>
int main(void)
{
int c;
/ Note that getchar reads from stdin and
is line buffered; this means it will
not return until you press ENTER /
while ((c = getchar()) != '\n')
printf("%c", c);
return 0;
}
这些应该够用了吧,不够的话去看看c primer plus

scanf用途:从键盘输入数据,从键盘得到字符,放到某个变量里。

格式:scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdioh里,因此在使用scanf函数时要加上#include <stdioh>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdioh>。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

扩展资料:

1、int scanf(const char  restrict format,);

函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符顺次对应。

空白字符会使scanf函数在读 *** 作中略去输入中的一个或多个空白字符。一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

参考资料:

scanf-百度百科

r语言输入多组数据步骤如下:
1while(scanf("%数据类型",&变量)==scanf读取到数据的个数) { }
2while(scanf("%数据类型",&变量)!=EOF) { } 下面就介绍一下 第一种 //入一个整数,判断是否大于3,如果是,输出“right”,否则输出“wron” #include<stdioh> intmain() { inta; while(scanf("%d",&a)==1) { if(a>=3) printf("right\n"); else printf("worn\n"); } return0; } 这里的scanf函数返回的是实际读到的数据的个数,在这里scanf读取到的数据是一个,循环就开始执行,如果输入其他的,就会跳出循环。

int max,min;
int m,n;
scanf("%d %d",&n,&m);
max=min=m;
for(int i=0;i<n-1;i++)
{scanf("%d",&m);
if(m>max)
max=m;
if(m<min)
min=m;
}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12735365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-27
下一篇2025-08-27

发表评论

登录后才能评论

评论列表(0条)

    保存