C语言printf()和puts()的简单使用

程序在计算机的内存中运行,得出结果以后总是需要输出,这样我们才能查看程序的运行状况。C语言用于输出的主要方法是使用格式输出函数 printf( ) 和字符串输出函数 puts( )。

printf( ) 函数的作用就是把字符、数字和单词发送到电脑屏幕上(屏幕打印)。

printf( )的一般格式如下:
printf("格式控制字符串",输出表列);        //输出表列各项用符号,分隔开

puts( )函数是把字符串输出到电脑屏幕上并换行。
puts("Hello World!");                            //屏幕打印字符串消息并换行

只要把需要在屏幕上显示的字符串消息放在双引号中,电脑执行 printf( ) 和 puts( ) 语句时,就会在屏幕上原样打印出该字符串消息(见图 1 )。

printf( ) 函数把字符、数字和单词发送到电脑屏幕上
图 1:printf( ) 函数把字符、数字和单词发送到电脑屏幕上

因为数字、字符在计算机内部都是以二进制数来存储和处理的,所以需要屏幕打印数字和字符时,必须准确地告诉 C 程序需要打印的内容是什么数据类型(格式)。C语言使用转化字符来表明数据的格式。表 1 列举了 C语言中常用的 4 种转化字符。

表 1:C语言中的转化字符输出示例
转化字符 描述 输出示例 说明
%d 整数 printf("%d",16); 输出整数 16
%f 浮点数 printf("%f",3.14); 输出小数 3.140000
%c 字符 printf("%c",'x'); 输出字符 'x'
%s 字符串 printf("%s","China"); 输出字符串 "China"

如果仅仅输出一个字符串,则可以省略转化字符 %s,比如:
printf("%s","Hello World!");
可简写为:
printf("Hello World!");

但如果输出与其他数据组合的字符串时,必须用转化字符 %s(见图 3),比如:
printf("%s 一斤 %f 元,%s 一斤 %d 元","苹果",2.5,"西瓜",2);
printf( ) 函数利用转化字符在屏幕上显示不同格式的数据
图 3:printf( ) 函数利用转化字符在屏幕上显示不同格式的数据

转化字符 %f 默认输出一个 6 位小数位的浮点数,如果不足 6 位,也会在后面补 0,如果超过 6 位则会四舍五入转化为 6 位小数位再输出。使用 %.nf 的形式可以用其中的 n 来指定输出的小数位数,比如 %.2f 表示输出 2 位小数位的浮点数(见图 4)。

利用转化字符 %.nf 显示不同小数位的浮点数
图 4:利用转化字符 %.nf 显示不同小数位的浮点数

如果要在屏幕上输出字符“%”,可以使用下面的方式:
printf("%%");                 //双引号中的两个%在屏幕上只显示一个
printf("%%d %%c %%f %%s");         //屏幕显示:%d %c %f %s

如果要在屏幕上输出反斜杠字符\或引号" ",则必须使用 C语言的转义序列。转义序列就是在要显示的特殊字符前面加一个反斜杠\,以便显示该特殊字符,或者让电脑执行某些特殊动作(比如换行、响铃等)(见图 5)。

C语言中转义序列的使用
C语言中转义序列的使用
图 5:C语言中转义序列的使用

表 4 列出了 C语言常用的转义序列。

表 4:C语言常用的转义序列描述
转义序列 描述 输出示例
\n 换行 printf("第一行 \n 第二行");
\a 警报(电脑响铃) printf("电脑响铃一次 \a");
\t 制表符 printf("\t 首行缩进一个制表符位");
\\ 反斜杠 printf("显示两个反斜杠 \\\\");
\" 双引号(英文半角字符) printf("显示双引号 \" 中国 \"!");

用 printf( ) 输出转义字符都会产生表中所描述的效果。例如,当发送\a到屏幕时,电脑的铃声会响起,而不是真把字符\a显示出来。屏幕显示多行文本时,如果想要移到下一行,就必须在换行的位置键入\n

在使用 printf( ) 的 C 程序中,必须在程序的预处理指令部分添加指令包含 stdio.h 头文件:#include<stdio.h>

printf( )函数实现屏幕打印的两个实例如代码清单 3 和代码清单 4 所示。

代码清单 3:使用 printf( ) 打印字符图形
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    printf(" *\n"); 
    printf(" ***\n"); 
    printf(" *****\n"); 
    printf(" *******\n"); 
    printf(" *****\n"); 
    printf(" ***\n"); 
    printf(" *\n "); 
    system("pause"); 
    return 0; 
}

运行结果:
     *
    ***
   *****
  *******
   *****
    ***
     *

代码清单 4:使用 printf( ) 打印表格
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    printf("┌———┬———┐\n");
    printf("│ 中国 │ 美国 │\n");
    printf("├———┼———┤\n");
    printf("│CHINA │ USA  │\n");
    printf("├———┼———┤\n");
    printf("│ 95%%  │ 98%%  │\n");
    printf("└———┴———┘\n\n ");
    system("pause");
    return 0;
}

运行结果:
┌———┬———┐
│ 中国 │ 美国 │
├———┼———┤
│CHINA │ USA  │
├———┼———┤
│ 95%  │ 98%  │
└———┴———┘

printf( ) 函数实现 C语言关机程序提示界面实例如代码清单 5 所示。

代码清单 5:使用 printf( ) 屏幕打印提示信息
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    printf("\n\n\n");
    printf("    ╔══════ C语言关机程序══════╗\n");
    printf("    ║                                      ║\n");
    printf("    ║ ※ 1.实现10分钟内的定时关闭计算机    ║\n");
    printf("    ║ ※ 2.立即关闭计算机                  ║\n");
    printf("    ║ ※ 3.注销计算机                     ║\n");
    printf("    ║ ※ 0.退出系统                        ║\n");
    printf("    ║                                      ║\n");
    printf("    ╚═══════════════════╝\n\n");
    printf("     请选择输入(0-3),然后回车:");
    int ss;
    scanf("%d",&ss);
    printf("\n\n\n");
    system("pause");
    return 0;
}

运行结果:
    ╔══════ C语言关机程序══════╗
    ║                                      ║
    ║ ※ 1.实现10分钟内的定时关闭计算机    ║
    ║ ※ 2.立即关闭计算机                  ║
    ║ ※ 3.注销计算机                     ║
    ║ ※ 0.退出系统                        ║
    ║                                      ║
    ╚═══════════════════╝

     请选择输入(0-3),然后回车:2

printf( ) 函数通过变量名将变量的值显示在屏幕上的实例如代码清单 6 所示。

代码清单 6:使用 printf( ) 屏幕打印变量值
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    printf("计算学生的总分和平均分:\n\n");
    float maths,english,chinese;
    float average,sum;
    char stuName[ ]="王小石";
    maths = 94.5;
    english = 96;
    chinese = 88;
    sum = maths + english + chinese;
    printf("%s同学的总分:%.1f\n",stuName,sum);
    printf("%s同学的平均分:%.2f\n",stuName,sum/3);
    system("pause");
    return 0;
}

运行结果:

计算学生的总分和平均分:

王小石同学的总分:278.5
王小石同学的平均分:92.83


图 6 形象地展示了 printf( ) 函数将变量值显示到屏幕上的方式。

图 5:printf() 函数屏幕打印变量的值图例详解
图 6:printf( ) 函数屏幕打印变量的值图例详解

总结

  1. C 程序中输出双引号" "和反斜杠\时,必须在其前面使用转义符\
  2. C语言中输出多行文本时,用转义字符\n实现换行。
  3. 用 puts( ) 输出字符串时,会自动换行,不需添加\n

想继续深入学习 printf() 的读者请猛击《printf()输出格式大全》。