前面的几个例子都用到了输出函数printf,例1-3还用到了输入函数scanf,这里我们先简单介绍一下它们的格式,以便后面使用。
scanf和 printf这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输入输出值。因此,这两个函数在括号中的参数都由以下两部分组成:
1) 格式控制串:格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。
在printf函数中可以在格式控制串内出现非格式控制字符,这时在显示屏幕上会显示源字符串。各种类型的格式表示方式请参考:C语言格式输出函数printf()详解。
在scanf函数中也可以在格式控制串内出现非格式控制符,这时会将输入的数据以该字符为分隔。各种类型的格式表示方式请参考:C语言scanf()函数。
2) 参数表:参数表中给出了输入或输出的变量。当有多个变量时,用英文逗号(,)分开。例如:
printf("sine of %lf is %lf\n",x,s);
// %lf为格式字符,表示按双精度浮点数处理,它在格式串中两次现,对应了x和s两个变量
// 其余字符为非格式字符则照原样输出在屏幕上。
scanf("%d %fa%c", &intNum, &floatNum, &c);
// %d, %f, %c为格式字符
// 表示将输入的数据分别以整数、浮点数和字符形式赋值给变量intNum, floatNum,c
// 其中的空格和a为分隔符
// 变量intNum, floatNum,c都有一个'&'符号,表示取地址
【例1-4】对例1-3稍加修改,在printf中使用多个参数,在scanf中使用'|'作为分隔符。
#include<stdio.h> // 包含stdio.h头文件
int max(int, int); // 函数声明
int main(){
int a, b, n; // 声明两个整型变量
printf("Input two integers: "); // 以空格为分隔
// 以'|'为分隔符,将输入的两个整数分别赋值给a, b
scanf("%d|%d", &a, &b);
// 以整数形式输出a、b和最大值,a, b, max(a,b)为参数列表
n = max(a, b);
printf("The max between %d and %d is %d.\n", a, b, n);
return 0;
}
// 函数定义
int max(int num1, int num2){ // num1, num2为形式参数(形参)
if(num1>num2){ // 如果num1大于num2
return num1; // 返回num1并结束max函数
}else{ // 如果num2大于num1
return num2; // 返回num2并结束max函数
}
}
运行结果:
Input two integers: 12|34↙
The max between 12 and 34 is 34.
上面例中程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数main和max 函数。函数之间是并列关系。可从主函数中调用其它函数。max 函数的功能是比较两个数,然后把较大的数返回给调用函数 -- main函数。max函数是一个用户自定义函数。因此在使用前要给出说明(程序第3行)。可见,在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。关于函数的详细内容将在后续章节介绍。
上例中程序的执行过程是,首先在屏幕上显示提示,请用户输入两个数,以'|'为分隔,回车后由scanf函数语句接收这两个数送入变量a、b中,然后调用max函数,并把x、y的值传送给max函数的参数a、b。在max函数中比较a、b的大小,把大者返回给main函数中的变量n。