c语言scanf函数(c语言double无法赋值)

懵懂先生 投稿文章c语言scanf函数(c语言double无法赋值)已关闭评论57阅读模式

文章源自略懂百科-http://wswcn.cn/94559.html

程序是人机交互的媒介,有输出必然也有输入,我们开始讲解如何从键盘输入数据。在C语言中,有多个函数可以从键盘获得用户输入:文章源自略懂百科-http://wswcn.cn/94559.html

scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。文章源自略懂百科-http://wswcn.cn/94559.html

getchar()、getche()、getch():这三个函数都用于输入单个字符。文章源自略懂百科-http://wswcn.cn/94559.html

gets():获取一行数据,并作为字符串处理。文章源自略懂百科-http://wswcn.cn/94559.html

文章源自略懂百科-http://wswcn.cn/94559.html

scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。文章源自略懂百科-http://wswcn.cn/94559.html

scanf()函数

scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。文章源自略懂百科-http://wswcn.cn/94559.html

举例文章源自略懂百科-http://wswcn.cn/94559.html

include文章源自略懂百科-http://wswcn.cn/94559.html

int main()文章源自略懂百科-http://wswcn.cn/94559.html

{文章源自略懂百科-http://wswcn.cn/94559.html

int x=0;文章源自略懂百科-http://wswcn.cn/94559.html

printf("1+1=?\n");文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d",&x); //格式:scanf("格式控制字符串",&地址列表);文章源自略懂百科-http://wswcn.cn/94559.html

if(x!=2)文章源自略懂百科-http://wswcn.cn/94559.html

printf("你的数学是体育老师教的吗?\n");文章源自略懂百科-http://wswcn.cn/94559.html

else文章源自略懂百科-http://wswcn.cn/94559.html

printf("恭喜你,答对了!\n");文章源自略懂百科-http://wswcn.cn/94559.html

return 0;文章源自略懂百科-http://wswcn.cn/94559.html

}文章源自略懂百科-http://wswcn.cn/94559.html

运行结果:文章源自略懂百科-http://wswcn.cn/94559.html

文章源自略懂百科-http://wswcn.cn/94559.html

对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。文章源自略懂百科-http://wswcn.cn/94559.html

其实 scanf 和 printf 非常相似,只是功能相反罢了:文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d %d", &a, &b); // 获取用户输入的两个整数,分别赋值给变量 a 和 b文章源自略懂百科-http://wswcn.cn/94559.html

printf("%d %d", a, b); // 将变量 a 和 b 的值在显示器上输出文章源自略懂百科-http://wswcn.cn/94559.html

它们都有格式控制字符串,都有变量列表。不同的是,scanf 的变量前要带一个&符号。文章源自略懂百科-http://wswcn.cn/94559.html

&称为取地址符号,也就是获取变量在内存中的地址。文章源自略懂百科-http://wswcn.cn/94559.html

数据是以二进制的形式保存在内存中的,字节(Byte)是最小的可操作单位。文章源自略懂百科-http://wswcn.cn/94559.html

为了便于管理,我们给每个字节分配了一个编号,使用该字节时,只要知道编号就可以,文章源自略懂百科-http://wswcn.cn/94559.html

就像每个学生都有学号,老师会随机抽取学号来让学生回答问题。字节的编号是有顺序的,从 0 开始,接下来是 1、2、3……文章源自略懂百科-http://wswcn.cn/94559.html

下图是 4G 内存中每个字节的编号(以十六进制表示):文章源自略懂百科-http://wswcn.cn/94559.html

文章源自略懂百科-http://wswcn.cn/94559.html

这个编号,就叫做地址(Address)。文章源自略懂百科-http://wswcn.cn/94559.html

int a;会在内存中分配四个字节的空间,我们将第一个字节的地址称为变量 a 的地址,也就是&a文章源自略懂百科-http://wswcn.cn/94559.html

的值。对于整数、浮点数、字符,都要使用 & 获取它们的地址,scanf 会根据地址把读取到的数据写入内存。文章源自略懂百科-http://wswcn.cn/94559.html

再来看一个 scanf 的例子:非常重要

include 文章源自略懂百科-http://wswcn.cn/94559.html

int main()文章源自略懂百科-http://wswcn.cn/94559.html

{文章源自略懂百科-http://wswcn.cn/94559.html

int a, b, c;文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d %d", &a, &b);文章源自略懂百科-http://wswcn.cn/94559.html

printf("a+b=%d\n", a+b);文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d %d", &a, &b);文章源自略懂百科-http://wswcn.cn/94559.html

printf("a+b=%d\n", a+b);文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d, %d, %d", &a, &b, &c);文章源自略懂百科-http://wswcn.cn/94559.html

printf("a+b+c=%d\n", a+b+c);文章源自略懂百科-http://wswcn.cn/94559.html

scanf("%d is bigger than %d", &a, &b);文章源自略懂百科-http://wswcn.cn/94559.html

printf("a-b=%d\n", a-b);文章源自略懂百科-http://wswcn.cn/94559.html

return 0;文章源自略懂百科-http://wswcn.cn/94559.html

}文章源自略懂百科-http://wswcn.cn/94559.html

运行结果:

文章源自略懂百科-http://wswcn.cn/94559.html

第一个 scanf() 的格式控制字符串为"%d %d",中间有一个空格,而我们却输入了10 20,中间有多个空格。文章源自略懂百科-http://wswcn.cn/94559.html

第二个 scanf() 的格式控制字符串为"%d %d",中间有多个空格,而我们却输入了100 200,中间只有一个空格。这说明 scanf() 对输入数据之间的空格的处理比较宽松,并不要求空格数严格对应,多几个少几个无所谓,只要有空格就行。文章源自略懂百科-http://wswcn.cn/94559.html

第三个 scanf() 的控制字符串为"%d, %d, %d",中间以逗号分隔,所以输入的整数也要以逗号分隔。文章源自略懂百科-http://wswcn.cn/94559.html

第四个 scanf() 要求整数之间以is bigger than分隔。文章源自略懂百科-http://wswcn.cn/94559.html

用户每次按下回车键,程序就会认为完成了一次输入操作,scanf() 开始读取用户输入的内容,并根据格式控制字符串从中提取有效数据,只要用户输入的内容和格式控制字符串匹配,就能够正确提取。文章源自略懂百科-http://wswcn.cn/94559.html

本质上讲,用户输入的内容都是字符串,scanf() 完成的是从字符串中提取有效数据的过程。文章源自略懂百科-http://wswcn.cn/94559.html

最后需要注意的一点是,scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。文章源自略懂百科-http://wswcn.cn/94559.html

这个例子你搞懂了,简单的scanf用法就没问题了,所以认真看完思考。文章源自略懂百科-http://wswcn.cn/94559.html

scanf() 格式控制符汇总

格式控制符 说明文章源自略懂百科-http://wswcn.cn/94559.html

%c读取一个单一的字符文章源自略懂百科-http://wswcn.cn/94559.html

%hd、%d、%ld读取一个十进制整数,并分别赋值给 short、int、long 类型文章源自略懂百科-http://wswcn.cn/94559.html

%ho、%o、%lo读取一个八进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型文章源自略懂百科-http://wswcn.cn/94559.html

%hx、%x、%lx读取一个十六进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型文章源自略懂百科-http://wswcn.cn/94559.html

%hu、%u、%lu读取一个无符号整数,并分别赋值给 unsigned short、unsigned int、unsigned long 类型文章源自略懂百科-http://wswcn.cn/94559.html

%f、%lf读取一个十进制形式的小数,并分别赋值给 float、double 类型文章源自略懂百科-http://wswcn.cn/94559.html

%e、%le读取一个指数形式的小数,并分别赋值给 float、double 类型文章源自略懂百科-http://wswcn.cn/94559.html

%g、%lg既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 float、double 类型文章源自略懂百科-http://wswcn.cn/94559.html

%s读取一个字符串(以空白符为结束)文章源自略懂百科-http://wswcn.cn/94559.html

这就是scanf的基本用法了,如果不明白的就多看几遍,最好上机自己敲一敲,改一改,怕忘记,就收藏起来以后再看。文章源自略懂百科-http://wswcn.cn/94559.html

还有scanf的用法进阶的后面会写欢迎订阅点赞,谢谢!文章源自略懂百科-http://wswcn.cn/94559.html

文章源自略懂百科-http://wswcn.cn/94559.html

懵懂先生
  • 本文由 发表于 2023年2月11日 17:39:35
  • 转载请注明:http://wswcn.cn/94559.html
投稿文章

店群寸步难行,抖音小店却如鱼得水,为什么这样说?

1、做人须简单,不沉迷幻想,不茫然未来,走今天的路,过当下的生活;不羡慕繁华,不追逐名利,对人朴实,做事踏实,要懂得取舍,要学会付出;不负重心灵,不伪装精神,让脚步轻盈,让快乐常在;不贪功急进,不张扬...
投稿文章

excel如何排序 表格自动排序123456

许多朋友在使用excel电子表格的时候都会产生许多的项目序号,可是往往在后期会删除一些无用的项目序号,这样就会使序号出现断码,怎么才能使序号自动生成呢,下面小编就来教教大家。 打开excel文件,在单...
投稿文章

好文:游泳有哪些的好处(游泳有哪些好处)

经常会听到别人说,游泳是最健康、最有效的一种运动方式,而且适合更多人群去参与。对于新手来说,简单的游泳方法是最适合的了。 一、最简单的游泳方法: 1、蝶式: 是以腰部来牵动身体,长期有这种姿势的人,可...
投稿文章

练瑜伽有什么好处(45岁学瑜伽教练晚不晚)

截至2018年底,中国65岁以上的老年人达到1.7亿人,比上年增加827万人。随着中国逐步进入老龄化,老年人健康就会成为社会最为关注的问题之一。 关于老年人练习瑜伽的话题,丫头写了不止5篇文章了。瑜伽...