• C语言总结(一)scanf(), printf()


          C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。(来自百度百科)

    首先为大家简单介绍一些C语言常用的函数:

    1、printf()函数:

    printf()函数是格式化输出函数,例如输出一个整数d, 就是printf("%d ", d); 一个程序如果没有输出,我们就看不到结果,那就失去了我们做这个程序的意义,只是计算机在自娱自乐了......, 下面看一个最简单的程序"Hello world!"

    #include<stdio.h>
    int main() {
        printf("Hello world!");
        return 0;
    }
    

     大家都知道会输出"Hello world!", 那请大家接下来请看下面的一个例子:

    #include<stdio.h>
    int main() {
        printf("
    %d
    ", printf("Hello world!"));  // "
    ",是换行的意思
        return 0;
    }
    

    你知道会输出什么吗?可能你已经猜对了……,将会输出两行,结果如下:

    Hello world!

    12

    为什么呢?细心观察的同学会发现"Hello world!",刚好是12个字符,这说明了什么呢?说明"printf("Hello world!")"的值是12,即printf()函数有返回值,但它的返回值是什么呢?

    如果你有兴趣可以再写几个例子在你的编译器上试一试下面的语句,比如:

    printf("%d
    ", printf("%d
    ", 123);
    printf("%d
    ", printf("%d
    ", 1234);
    printf("%d
    ", printf("%d
    ", 12345);
    

     看到了输出结果,也许你就会知道它的返回值是什么了,这里我就不多说了,相信大家可以举一反三的。

    printf()函数的形式有:printf("输出格式", 输出的变量或常量);或者printf("Hello world"); 直接输出一个字符串。下来给大家出几道题目:

    "%3d", "%03d", "%i", "%.3lf", "%10.5lf", 这些输出格式分别是什么呢?

    当然输出格式不止这些,大家可以下去多试试其它格式的输入输出,多加练习总结就可以了。 下面来学习一下scanf()函数吧……

    2、scanf()函数:

     scanf()函数是格式化输入函数,与printf()函数相对应,它的输入形式就不用说了吧,和printf()基本一致。那就说一些大家可能会犯的错误吧,请看下面的程序:

    #include<stdio.h>
    int main() {
        int d;   char c;
        scanf("%d", &d);
        scanf("%c", &c);
        printf("%d	%c
    ", d, c);
        return 0;
    }
    

    如果输入:1 a     那么它会输出什么?

    会输出:1  a     会是这样么?答案是否定的,不信你可以试一试, 它会输出一个1和一个空格,为什么呢?我们来分析一下:你输入的数据一共有3个,第一个是1,被d接收,第二个是空格,被c接收,所以才会输出:1  空格; 那输入的另一个'a'跑哪儿了?它还在缓冲区里边,直到碰到下一个scanf()语句才会被接收,那怎么解决这个问题呢?我们想要的是让c接收字符'a', 怎么办呢?很明显我们可以把那个空格字符给接收了就OK了,

    1、可以在两个scanf()语句中间加个getchar();语句把空格字符给接收了,

    2、或者把第一条语句改为scanf("%d ", &d);

    3、或者把第二条语句改为scanf(" %c", &c); 当然还有其它办法,这里就只写出来这么多……

    这两个函数都很简单,但是想要灵活应用也是有难度的,下面给大家出一道题目:

    来源:http://ayit.acmclub.com/index.php?app=problem_title&id=233&problem_id=4149

    题目大意是:给出一个将八进制或十六进制数字转换成十进制,并输出。其中如果以"0x"(零x)开头的则表示是十六进制,如果以"0"(零)开头,则表示是八进制。有多组测试数据。

    这道题我们当然可以用进制转换的方法来解决,但是还有更好的方法,请看代码:

    #include <stdio.h>
    int main() {
        int t, d;
        while( ~scanf("%d", &t) ) {
            while( t-- ) {
                scanf("%i", &d),
                printf("%i
    ", d);
            }
        }
    }
    

     这里就巧用了scanf()函数,"%i", 可以格式化输入八进制,十进制和十六进制的数字,然后转化为十进制输出。当然还有很多,有兴趣的可以研究一下。

    如有错误,欢迎大家指出。谢谢!

  • 相关阅读:
    具体讲解有关“DB2“数据库的一些小材干1
    适用手段 Ubuntu Linux 8.04设置与优化2
    如何管理DB2数据库代码页不兼容的成效
    具体解说有关“DB2“数据库的一些小本领3
    深化分析DB2数据库运用体系的性能优化3
    实例讲解如安在DB2 UDB中正确的监控弃世锁2
    阅历总结:运用IBM DB2数据库的详细事变
    实例讲授如何在DB2 UDB中正确的监控死锁3
    DB2数据库在AIX上若何卸载并重新安顿
    轻松处置DB2创设存储历程时碰着的错误
  • 原文地址:https://www.cnblogs.com/yaling/p/3460835.html
Copyright © 2020-2023  润新知