图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
1.格式化输入函数scanf()
scanf() 函数称为格式化输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
scanf() 函数的一般形式为:
其中,格式控制字符串的作用与printf() 函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址列表中给出各变量的地址。地址是由地址运算符 & 后跟变量名组成的。
和printf() 函数中的格式说明相似,以%A开头,以一个格式字符结束,中间可以插入附加的字符。表1.3列出了scanf() 函数用到的格式字符。
表1.3 scanf()格式字符
表1.4列出了输入函数scanf()可以用的附加说明字符(修饰符)。
表1.4 scanf()附加说明字符
注意:
(1)“*”符:用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。
例如:
scanf("%d%*d%d",& a,& b);
当输入为1 2 3时,程序将把1赋予a,2被跳过,3赋予b。
(2)scanf函数中没有精度控制。例如,scanf("%5.2f",& a);是非法的,不能企图用此语句输入小数为2位的实数。
(3)scanf函数中要求给出变量地址,如果给出变量名则会出错。例如,scanf("%d",a);是非法的,应改为scanf("%d",& a);才是合法的。
(4)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab或换行作间隔。C语言编译程序在碰到空格、Tab、换行或非法数据(如对“%d”输入“12A”时,“A”即为非法数据)时即认为该数据结束。
(5)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例如:
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);
则输入时各数据之间可加空格。
例1.3 无非格式字符的字符数据输入。
由于scanf函数“%c%c”中没有空格,若输入“M N”,结果输出只有“M”。而输入改为“MN”时则可输出“MN”两字符。
(6)如果格式控制串中有非格式字符,则输入时也要输入该非格式字符。(www.chuimin.cn)
例如:
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
(7)如果输入的数据与输出的类型不一致,虽然编译能够通过,但结果将不正确。
例1.4 输入输出数据类型控制。
由于输入数据类型为整型,而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。现将改动程序如下:
则运行结果为:
input a long integer
1234567890
1234567890
当输入数据改为长整型后,输入输出数据相同。
2.字符输入函数getchar()
getchar()函数的功能是从键盘上输入一个字符。其一般形式为:
getchar();
通常把输入的字符赋予一个字符变量,构成赋值语句,如:
char c;
c=getchar();
例1.5 输入单个字符。
使用getchar()函数时,还应注意几个问题:
(1)getchar()函数只能接受单个字符,即使输入数据为数字也按字符处理。当输入多于一个字符时,程序只接收第一个字符。
(2)使用本函数前必须包含文件“stdio.h”。
(3)在TC屏幕下运行本函数时,将退出TC屏幕进入用户屏幕等待用户输入,输入完毕再返回TC屏幕。
(4)程序最后两行可用下面两行的任意一行代替:
putchar(getchar());
printf(“%c”,getchar());
有关C语言程序设计 第2版的文章
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2023-11-20
C语言中所有函数的定义都是平行的,也就是说,不能在函数定义中再定义其他函数。但是C语言允许在函数定义中再调用其他函数,这就是函数的嵌套调用。本例可编写两个函数,一个是用来计算平方值的函数f1(),另一个是用来计算阶乘值的函数f2()。图5.4函数的嵌套调用函数的嵌套调用使程序形成了一种自顶向下树型结构,如图5.5所示。一个C语言程序通常不是由少数几个大函数组成,而是由许许多多小函数组成。......
2023-11-18
在C语言中,以函数首部声明函数的形式称为函数原型。使用函数原型是C语言的一个重要特征,主要作用是利用它在程序的编译阶段对调用函数的合法性进行全面检查。......
2023-11-18
C语言把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算,功能强大。另外,C语言还把括号、下标、强制类型转换、取地址等都作为运算符处理,并通过与算数运算符的组合达到不同的目的,从而使程序更加简洁明了。C语言具有超强的可移植性。总之,C语言在运算符方面是比较容易让人混淆的。......
2023-11-18
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2023-10-21
C语言规定,主函数也可以带参数。若主函数带参数,则执行目标程序时,应按下列格式给出相应的实际参数:程序名实际参数1实际参数2…实际参数n此时,系统会自动在内存中开辟区域依次存放程序名和所有的实际参数,同时给主函数的形式参数赋值,结果如下:形参argc赋值为n+1,表示连同程序名在内共有n+1个参数。例7.22编写一个带参数的主函数。注意:程序运行时,在程序名后带有2个整数,程序的功能是输出这2个整数的和。......
2023-11-18
C语言的最大特点是:功能强、使用方便灵活。由于这个“灵活”给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。在C语言中大写字母和小写字母是两个不同的字符。C语言规定以’\0’作字符串结束标志,它是由系统自动加上的。当一个语句中使用多层括弧时常出现这类错误。main()C语言中对数组的定义或引用数组元素时必须用方括弧。......
2023-11-18
相关推荐