C语言-顺序程序设计(scanf函数)

scanf函数(格式输入函数)

scanf函数为格式输入函数,即按照用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数是一个标准的库函数,它的函数原型在头文件stdio.h中,与printf函数相同,C语言在使用scanf函数之前不必包含stdio.h文件。

scanf函数的一般形式:scanf(“格式控制符串”,地址表列);

其中,格式控制字符的作用与printf函数相同,但是不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出的是各变量的地址。地址是由赋值运算符“&”后跟变量名组成的。如&a,&b,分别表示变量a和变量b的地址,这个地址就是编译系统在内存中给变量a,b分配的地址。scanf函数在本质上就是给变量赋值,但要求写变量地址,如&a。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

例:

#include<stdio.h>

void main()

{

int a,b,c;

printf("input a,b,c\n");

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

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

格式控制字符串:

格式控制字符串的一般形式为:%[*][输入数据宽度][长度]类型

其中[]的项为任意项。各项的意义如下:

1.类型:表示输入数据的类型,其格式和意义如下表所示:

079ce6e91cfc44148d5c0daa9d957a9e.jpg

 2."*"符,用以表示该输入项,读之后不赋予相应的变量,即跳过该输入值。

如:scanf("%d*%d%d",&a,&b);

当输入为1 2 3时,把1赋予a,2被跳过,3被赋予b。

3.宽度:用十进制整数指定输入的宽度(即字符数)

如:scanf(“%5d”,&a);

输入12345678时只把12345赋予变量a,其余部分被截去。这与printf函数中的输出最小宽度是不同的。

如:scanf(“%4d%4d”,&a,&b);

输入12345678,将把1234赋予a,而把5678赋予b。

4.长度:长度格式符为l和h,l表示输示输入长整型数据(%ld)和双精度浮点数(如%lf)h表示输入短整型数据。

使用scanf函数必须注意以下几点:

1.scanf函数中没有精度,如:scanf(“%5.2f”,&a);是非法的。不能企图用此语句输入小数为2位的实数。

2.scanf中要求给出变量地址,如给出变量名则会出错。如:scanf(“%d”,a);是非法的,应改为scanf(“%d”,&a);才是合法的。

3.在输入多个数值数据时,若格式控制字符串中没有非格式字符串作为输入数据之间的间隔则可用空格,TAB键,回车做间隔,C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,即为非法数据)认为该数据结束。

4.在输入字符数据时,若格式控制字符串中无非格式字符,则认为所有的输入的字符均为有效字符。

如:scanf(“%c%c%c”,&a,&b,&c);

输入为d e f则把'd'赋予a,' '赋予b,'e'赋予c。只有当输入为def时才能把'd'赋予a', 'e'赋予b,

'f'赋予c。

如果在格式控制中加入空格作为间隔,如:scanf(“%c %c %c”,&a,&b,&c);则输入时各数据之间也加空格。

例:

#include<stdio.h>

void main()

{

char a,b;

printf("input character a and b:\n");

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

printf("%c%c\n",a,b);

}

注:本例表示scanf格式控制字符串%c %c之间有空格,输入的数据之间也可以有空格间隔。如果格式控制字符串中有非格式字符则输入时也要输入该非格式字符。

如:scanf(“%d,%d,%d”,&a,&b,&c);

其中用非格式符“,”作间隔符,故输入时应为:5,6,7

又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);则输入应为a=5,b=6,c=7

如果输入的数据与输出的类型不大一致时,虽然编译能够通过,但是结果将不正确。

例1:

#include<stdio.h>

void main()

{

int a;

printf("input a number\n");

scanf("%d",&a);

printf("%ld",a);

}

例2:

#include<stdio.h>

void main()

{

long a;

printf("input a long integer\n");

scanf("%ld",&a);

printf("%ld",a);

}

分析:比较一下输入:1234567890。由于输入数据类型为整型,而输出语句的格式控制字符串中为长整型,因此输出结果和输入数据相符。

例3:输入三个小写字母,输入其ASCII码和对应的大写字母。

#include<stdio.h>

void main()

{

char a,b,c;

printf("input character a,b,c\n");

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

printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);

}

例4:输出各种数据类型的字节长度

#include<stdio.h>

void main()

{

int a;

long b;

float f;

double d;

char c;

printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));

}

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头歌c语言顺序结构程序设计第一关涉及到使用C语言进行编程,其中要求我们设计一个程序,让用户输入两个整数,然后计算它们的和并输出结果。这个题目看上去非常简单,但是对于刚接触编程的人来说也是一个不错的练手题目。 为了完成这个题目,我们需要先学会C语言的基本输入输出函数。在本题中,我们可以使用scanf函数来获取用户输入的两个整数,使用printf函数将计算出的结果打印出来。同时,我们需要了解如何进行基本的加法运算。 但是,为了让程序更具结构化和可读性,我们还需要考虑一些细节,比如如何给变量取名、如何采用恰当的缩进和注释等等。我们还可以使用一些简单的技巧,比如在代码前面添加头文件、定义常量等等,来让整个程序看起来更规范、更好维护。 当我们完成这个程序时,我们会发现它在功能上非常简洁明了,但是它也让我们对C语言基础语法有了更深入的理解和实践。实际上,这种从简单入手的方法也是学习编程最好的方式之一,因为它可以帮助我们尽快开始编程,增强自己的自信心和兴趣,从而更好地掌握编程技能。 ### 回答2: 头歌c语言顺序结构程序设计第一关,主要考察学生对C语言编程基础和顺序结构的掌握能力,让学生能够编写出简单的C语言程序。 在这个关卡中,要求学生按照题目要求,通过C语言顺序结构编写程序,实现两个数的加减乘除运算。学生需要定义两个变量用于存储输入的两个数值,然后根据运算符的不同,分别进行加减乘除的运算,最终输出运算结果。此过程中,学生需要注意数据类型转换的问题,以及需要对除数为0的情况进行特殊处理。 此关卡虽然简单,但对于学生来说也是一个很好的练手机会,通过编写简单的程序,提高了学生编程的思维能力和代码的实现能力,为以后更高深的程序设计打下基础。同时,此关卡也鼓励学生探索更多丰富多彩的程序设计内容,将所学知识发挥到极致,提高自身的综合素质。 ### 回答3: 头歌C语言顺序结构程序设计第一关是一道通过编写C语言程序来实现简单输出功能的练习。在开始编程之前,首先需要了解C语言的基本语法以及顺序结构。 C语言是一种广泛应用的编程语言,具有灵活、高效、可移植等优点。在编写C语言程序时,需要使用各种数据类型、运算符、控制结构等基本概念。其中,顺序结构是一种简单的程序控制结构,指代码会按照事先确定的顺序依次执行。 在头歌C语言顺序结构程序设计第一关中,我们需要按照要求定义所需输出的变量类型、名称,并利用C语言的printf函数将变量的值输出到控制台上。具体步骤如下: 首先,我们需要在程序的开始部分定义所需输出的变量类型,使用C语言的关键字“int”“char”等来定义。例如,定义一个输出整数的变量可以使用“int num”的形式。 其次,我们需要为所需输出的变量赋值,使用“=”赋值符号将具体数值赋给定义好的变量。例如,“num = 123”。 然后,我们需要使用printf函数来将变量的值输出到控制台上。该函数的语法形式为:“printf(“输出格式字符串”, 参数1, 参数2, …)”。其中,输出格式字符串是指输出的格式,如“%d”表示输出整数,“%s”表示输出字符串等。其余的参数即为需要输出的变量名,需要与格式字符串对应。 最后,在程序的结尾部分我们需要加上return 0语句来结束程序。这条语句通常在main函数的最后面,函数返回值为0表示程序正常结束。 总之,头歌C语言顺序结构程序设计第一关是一项简单的程序练习,需要我们掌握C语言的基本语法和顺序结构的使用,通过编写程序实现简单的输出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值