日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
C函數(shù)功能說明
C函數(shù)功能說明
 更新時間:2008-7-27 16:05:14  點(diǎn)擊數(shù):2
【字體: 字體顏色

printf函數(shù)
其功能是向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個任意類型的數(shù)據(jù)。

(1) printf函數(shù)的一般形式為:

printf (格式控制字符串,變量1,變量2,…);

格式控制字符串與scanf中的相同。printf函數(shù)的第二個及以后的各個參數(shù)(若有的話)是變量的名字,而不是變量的地址,因此與scanf的相應(yīng)參數(shù)有所不同。數(shù)組名可直接出現(xiàn)在printf的變量位置上,作為printf的參量,是合法的。

與scanf函數(shù)一樣,printf中的格式說明也是針對不同類型的數(shù)據(jù)用不同的格式說明。

(2) printf函數(shù)中的格式說明:

① d格式說明。用來輸出十進(jìn)制整數(shù),有下列幾種用法:

?         %d,按整數(shù)型數(shù)據(jù)的實(shí)際長度輸出,如

         printf("%d",123456);

輸出:123456

?         %md,m 為指定的輸出字段的寬度,如果實(shí)際數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。例:

         printf("%4d,%4d,%4d",a,b,c);

若a = 123,b = 12345,c = 578,則輸出為:

         ?123,12345,?578

?         %ld, 輸出長整型數(shù)據(jù)。如:

long  a = 135970;

printf("%ld",a);

輸出:135970。如果用%d輸出,就會發(fā)生錯誤,對long型數(shù)據(jù),應(yīng)當(dāng)用%ld格式輸出。對長整型數(shù)據(jù)也可以指定字段寬度,如將上面的printf函數(shù)中的"%ld"改為"%8ld",則輸出為:

              ??135970

         

               8列

一個int型數(shù)據(jù)既可以用%d也可用%ld格式輸出。如:

 int a = 123;

 printf("%ld",123);

輸出:123

②o格式符,以八進(jìn)制數(shù)形式輸出整數(shù),由于是將內(nèi)存單元中各位的值(0或1)按八進(jìn)制的形式輸出,因此輸出的數(shù)據(jù)不帶符號,即將符號位也作為八進(jìn)制數(shù)的一部分一起輸出。例如,-1在內(nèi)存中的存放形式(以補(bǔ)碼存放)為:1 1 11 11 11 11 1111 11,所以有:

       int a =-1;

       printf("%d,%o",a,a);

這段小程序的輸出為:-1,177777。

可見,%o格式說明的輸出是將內(nèi)存中的0、1串按從右到左3位一組的八進(jìn)制數(shù)輸出的,不帶負(fù)號。對于長八進(jìn)制數(shù)可用“%lo”的格式輸出。同樣也可以指定輸出的寬度,如:

   printf("%9o",a)的輸出數(shù)據(jù)為:???177777。

③x格式符,以十六進(jìn)制數(shù)形式輸出整數(shù),與o格式類似,也可不輸出負(fù)號。因此有:

int a =-1;

printf("%d,%o,%x",a,a,a);

的輸出結(jié)果為: -1,177777,ffff

   可見,%x格式說明的輸出是將內(nèi)存中的0、1串按從右到左4位一組的十六進(jìn)制數(shù)輸出的。也可以用“%lx”輸出長整數(shù),及用“%mx”,如“%12x”輸出指定字段寬的整數(shù)。

④u格式符,用來輸出無符號型(unsigned型)數(shù)據(jù),以十進(jìn)制形式輸出。

    一個無符號型(unsigned型)數(shù)據(jù)也可以用“%d”格式輸出,一個有符號型(int型)數(shù)據(jù)也可以用“%u”格式輸出。具體的輸出值按相互賦值的規(guī)則處理。無符號型(unsigned型)數(shù)據(jù)也可以用“%o”或“%x”格式輸出。

例2.10

 main()

 {unsigned int a = 65535;

  int b =-2;

  printf("a = %d,%o,%x,%u\n",a,a,a,a);

 printf("b = %d,%o,%x,%u\n",b,b,b,b);

 }

運(yùn)行結(jié)果為:

    a =-1,177777,ffff,65535

       b =-2,177776,fffe,65534

注意:上例中65535在內(nèi)存中的表示(16位)為:11 11 11 11 11 11 11 11;

⑤ c格式說明。

?         %c格式,用來輸出一個字符。例:

    char ch ='a';

       printf("%c",ch);

輸出字符'a'。

一個整數(shù),只要它的值在0~255之間,就可以用字符形式輸出。在輸出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的ASCII碼字符。反之,一個字符數(shù)據(jù)也可以用整數(shù)形式輸出。

例2.11

main()

  { char c1 = 'a';

  int i = 97;

  printf("%c,%d\n",c1,c1);

  printf("%c,%d\n",i,i);

 }

輸出結(jié)果為:

a,97

a,97

?         %mc格式用于指定輸出字符寬度,如果有:

    printf("%3c",c1);則輸出:??a,即c變量輸出占3列,前兩列補(bǔ)空格。

  ⑥s格式說明。s格式用來輸出一個字符串。有以下幾種用法:

?         %s,例如:

 printf("%s","CHINA");輸出:CHINA。

?         %ms,輸出的字符串占m列,如果字符串本身長度大于m,則突破m限制,將字符串全部輸出。若串小于m,則左邊補(bǔ)空格。例如:

printf("%7s","CHINA");輸出:??CHINA

printf("%3s","CHINA");則突破輸出寬度輸出:CHINA

?         %-ms,如果小于m列,則在m列范圍內(nèi),字符串向左靠,右邊補(bǔ)空格。例:

   printf("%-7s","CHINA");輸出:CHINA??

printf("%-3s","CHINA");突破輸出寬度輸出:CHINA??

?         %m.ns,輸出占m列,但只取字符串中左邊n個字符輸出。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。例:

       printf("%7.3s","CHINA");輸出:????CHI。

?         %-m.ns,其中m和n所表示的意義同④,但n個字符輸出在m列范圍內(nèi)的左側(cè),右補(bǔ)空格。如果n>m,則m自動取n的值,以保證n個字符自動正常輸出。例:

       printf("%-2.3s","CHINA");輸出:CHI

⑦f格式說明。f格式用來輸出帶小數(shù)點(diǎn)的單、雙精度實(shí)數(shù)。有下列幾種用法:

?         %f不指定字段寬度,由系統(tǒng)自動輸出相應(yīng)常量或變量的全部整數(shù)部分及6位小數(shù)。應(yīng)注意,單精度實(shí)數(shù)輸出時,有效數(shù)字位數(shù)一般為7位。而雙精度實(shí)數(shù)輸出時,有效數(shù)字位數(shù)一般為十六位,有6位小數(shù)位。

   例2.12

main()

{float x,y;

double u,v;

x = 111111.111;y = 222222.222;

u = 1111111111111.111111111;

v = 2222222222222.222222222;

printf("%f\n",x+y);

printf("%f\n",u+v);

}

運(yùn)行結(jié)果為:

         333333.328125

         3333333333333.333010

可以看出,輸出結(jié)果中前一個只有前7位數(shù)字是有效數(shù)字,而后一個則前16位數(shù)字是有效數(shù)字。其他位均無意義。

?         %m.nf 指定輸出的數(shù)值共占m位,其中有n位小數(shù)。若數(shù)值長度小于m,則左端補(bǔ)空格。若數(shù)值長度大于m,則按實(shí)際數(shù)值輸出,小數(shù)位保留n位。

例:printf("%7.3f",23.456);

輸出:’23.456

printf("%7.3",1123.456);

輸出:1123.456

?         %-m.nf與%m.nf基本相同,只是使輸出數(shù)值向左端靠,右端補(bǔ)空格。例:

printf("%-10.3f",1111.1111);

輸出:1111.111??

⑧e格式符。以指數(shù)形式輸出實(shí)數(shù)?捎靡韵滦问剑

?         %e不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動指定給出6位小數(shù),指定部分占5列(如e+003),其中:“e”占一位,指數(shù)的符號占一位,指數(shù)占三位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有且僅有一位非零數(shù)字)。例如:

      printf("%e",1234.56);

輸出:  1.234560e+003。也就是說,用%e格式輸出的實(shí)數(shù)共占13列字符寬度。

           

           8列  5列

?         %m.ne和%-m.ne,其中n指尾數(shù)部分的小數(shù)位數(shù)。m為整個數(shù)值輸出所至少占有的寬度。當(dāng)未指定n時,自動使n = 6,整個數(shù)據(jù)占13列輸出,可能會突破m的限制,而按實(shí)際長度輸出。

例:printf("% 12.4e",1234.56);

輸出:1.2346e+003(四舍五入)

  ⑨g格式說明。用來輸出實(shí)數(shù),它根據(jù)實(shí)數(shù)大小,自動選f格式或e格式(選擇占寬度較小的一種輸出),且不輸出無意義的零。例如,若a = 123.456,則

printf("%f%e % g",a,a,a);

輸出如下:

123.456000  1.234560e+002  123.456

用%f格式輸出占10列。用%e格式輸出占13列,用%g格式時,自動從上面兩種格式中選擇較短者(今為%f格式為短),故占10列,且按%f格式用小數(shù)點(diǎn)形式輸出,最后三個小數(shù)位“0”為無意義的0,不輸出。%g格式用的較少。

 
scanf函數(shù)
(1) scanf函數(shù)的一般形式:

scanf(格式控制字符串,地址1,地址2,…);

格式控制字符串是由雙撇號括起來的字符串,它主要由兩種類型的字符組成:

①  格式說明符由“%”和格式字符組成,如%c,%d,%s,%f等。其作用是將輸入的數(shù)據(jù)轉(zhuǎn)換為指定的格式,賦給scanf的二個參量(是地址1)所指定的內(nèi)存單元(可能一次使用多個)中。格式說明以“%”字符為標(biāo)志。

②  普通字符,是需要用戶在輸入時原樣輸入的字符。例如:

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

scanf("%f,%f",&x,&y);

都是合法的格式輸入語句。但在鍵入數(shù)據(jù)時略有區(qū)別,請看下例:

    main()

    { int a, b, c, d;

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

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

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

      printf("%d %d %d %d",a,b,c,d);

    }

運(yùn)行時,按以下方式輸入a,b,c,d的值:

    3  4↙    5,6↙

輸出:  3,4,5,6

            3   4   5   6

&a,&b,&c,&d中的&是取地址運(yùn)算符,&a指a的地址。但要注意,上面的兩個輸入格式在輸入時有所不同!%d  %d”表示按十進(jìn)制整數(shù)形式輸入兩個數(shù)據(jù)。輸入數(shù)據(jù)時,兩個數(shù)據(jù)之間以一個或多個空格間隔,也可以用回車鍵,跳格鍵tab。下面的輸入均合法:

?           3  4

?           3  ↙

      4

?           3(按tab健)

      4↙

但兩個數(shù)據(jù)間不能用逗號等其他的字符。

而“%d,%d”亦表示按十進(jìn)制輸入兩個數(shù)據(jù)。要求在輸入數(shù)據(jù)時,兩個數(shù)據(jù)間一定以一個逗號“,”作為間隔符,因此,上例中c和d的值的輸入應(yīng)按下列形式輸入:   

  。担

  (2) scanf中可用的格式說明:

  對應(yīng)不同類型數(shù)據(jù)的輸入,scanf的格式控制字符串中可以使用不同的格式字符構(gòu)成不同的格式說明。常用的格式說明如下:

  格式字符串             功能

    %d          用來輸入十進(jìn)制整數(shù),相應(yīng)參數(shù)應(yīng)為整數(shù)指針。

    %o     用來輸入八進(jìn)制整數(shù)(前導(dǎo)零可有可無),相應(yīng)參數(shù)應(yīng)為整數(shù)指針! 

    %x     用來輸入十六進(jìn)制整數(shù)(前導(dǎo)零可有可無)。

    %c     用來輸入單個字符。

    %s          用來輸入字符串,將字符串送入一個字符數(shù)組中,在輸入時以非

空白字符開始,以第一個空白字符結(jié)束。字符串以串結(jié)束標(biāo)志'\0'

為其最后一個字符。

        %f     用來輸入一個浮點(diǎn)實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入。

        %e     與%f的作用相同,e與f可以替換使用。

  scanf附加的格式說明字符:

   字符            說明

    l               用于輸入長整型數(shù)據(jù),(可用%ld,%lo,%lx)以及雙精度型數(shù)

                        據(jù)(如%lf或%le)。 

        h               用于輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)。

域?qū)挘檎麛?shù))  指定輸入數(shù)據(jù)所占寬度(列數(shù))。

       *        表示本輸入項(xiàng)在讀入后不賦給任何相應(yīng)的變量。

① 當(dāng)指定輸入數(shù)據(jù)所占列數(shù)后,系統(tǒng)將自動按它截取所需數(shù)據(jù)。如:

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

輸入123456789↙,系統(tǒng)將自動地把123賦給a,456賦給b,789賦給c。

scanf("%3c",ch);

則可輸入3個字符,但ch必須是字符數(shù)組或字符指針。

② %后的“*”附加說明符,用來跳過它相應(yīng)的數(shù)據(jù)。例如:

     scanf("%2d %*3d %2d",&a,&b);

如果輸入如下信息:

     12  345    67↙

將12賦給a,67賦給b,第二個數(shù)據(jù)“345”被跳過,不賦給任何變量。在利用現(xiàn)存的數(shù)據(jù)時,有時不需要其中某些數(shù)據(jù),可用此法“跳過”它們。

③ 輸入數(shù)據(jù)時,精度可以規(guī)定,如:

scanf("%.2f",&a);

當(dāng)輸入1234.567時,a的值將為1234.57,自動取輸入數(shù)據(jù)的小數(shù)點(diǎn)后兩位數(shù)字。

(3) 使用scanf函數(shù)時應(yīng)注意的問題:

① scanf函數(shù)中的第二個及以后各個參量是變量地址,而不是變量名。例如,設(shè)a 、 b 分別為整型變量和浮點(diǎn)型變量,則

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

是合法的。而

    scanf("%d %f",a,b);

是非法的。

  只有在字符數(shù)組的情況下例外,因?yàn)樽址麛?shù)組名實(shí)際是數(shù)組的第一個字符的地址。例如,若name[20]為一個字符數(shù)組,則

    scanf("% s",name);

合法。而

        scanf("% s",&name);

為非法。name為數(shù)組時,不需在其前面加“&”。

 、 在用“%c”格式輸入字符時,空格字符和“轉(zhuǎn)義字符”都將作為有效的字符輸入。例如:

    scanf("%c%c%c",&c1,&c2,&c3);

如果輸入a?b?c↙,則字符'a'送給c1,字符'?'送給c2,字符'b'送給c3。因?yàn)?c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔,因此'?'作為下一個字符送給c2。同時應(yīng)注意,上述語句中的格式控制字符串"%c%c%c"中,格式說明符之間無逗號分割。如果有空格,用形式為"%c  %c  %c"的格式控制字符串作替換,按上述輸入格式,那么a、b、c這三個字符將分別賦給變量c1、c2、c3。

 、 在輸入數(shù)據(jù)時,遇到下列情況時,輸入數(shù)據(jù)認(rèn)為結(jié)束:

?         遇空格或按“回車”或“跳格”(TAB)鍵;

?         遇寬度結(jié)束,如“%3d”,只取3列;

?         遇非法輸入,如

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

若輸入

123a123o.26↙

 ˉ ˉ   ˉ

 a b   c

第一個數(shù)據(jù)對應(yīng)%d格式輸入123之后遇字母a,因此認(rèn)為數(shù)值123后已沒有數(shù)字了,第一個數(shù)據(jù)到此結(jié)束,把123送給變量a,字符'a'送給變量b,由于%c只要求輸入一個字符,因此,'a'后面不需要空格,后面的數(shù)值應(yīng)送給變量c。如果由于疏忽而把本來應(yīng)為1230.26錯打成123o.26,由于123后面出現(xiàn)了英文字母“o”,就認(rèn)為此數(shù)據(jù)結(jié)束,則將會把123送給c,后面的數(shù)據(jù)將不被接受。

④當(dāng)使用多個scanf()函數(shù)連續(xù)給多個字符變量賦值時,例如:

main()

{

 char c1,c2;

 scanf(“%c”,&c1);

 scanf(“%c”,&c2);

 printf(“c1 is %c,c2 is %c”,c1,c2);

}

運(yùn)行該程序,輸入一個字符A后回車(要完成scanf()函數(shù)輸入必須回車),在執(zhí)行

scanf(“%c”,&c1)時,給變量c1賦值A(chǔ),但回車符仍留在緩沖區(qū)內(nèi);執(zhí)行輸入語句

scanf(“%c”,&c2)時,變量c2將接收一個回車符而使輸入結(jié)束。輸入結(jié)果中c2沒有賦值。如果輸入AB后回車,那么輸出結(jié)果為:c1 is A,c2 is B

 
main()主函數(shù)
    每一C 程序都必須有一main()函數(shù), 可以根據(jù)自己的愛好把它放在程序的某
個地方。有些程序員把它放在最前面, 而另一些程序員把它放在最后面, 無論放
在哪個地方, 以下幾點(diǎn)說明都是適合的。
    1. main() 參數(shù)
    在Turbo C2.0啟動過程中, 傳遞main()函數(shù)三個參數(shù): argc, argv和env。
     * argc:  整數(shù), 為傳給main()的命令行參數(shù)個數(shù)。
     * argv:  字符串?dāng)?shù)組。
              在DOS 3.X 版本中, argv[0] 為程序運(yùn)行的全路徑名; 對DOS 3.0
              以下的版本, argv[0]為空串("") 。
              argv[1] 為在DOS命令行中執(zhí)行程序名后的第一個字符串;
              argv[2] 為執(zhí)行程序名后的第二個字符串;
              ...
              argv[argc]為NULL。
     *env:  安符串?dāng)?shù)組。env[] 的每一個元素都包含ENVVAR=value形式的字符
串。其中ENVVAR為環(huán)境變量如PATH或87。value 為ENVVAR的對應(yīng)值如C:\DOS, C:
\TURBOC(對于PATH) 或YES(對于87)。
    Turbo C2.0啟動時總是把這三個參數(shù)傳遞給main()函數(shù), 可以在用戶程序中
說明(或不說明)它們, 如果說明了部分(或全部)參數(shù), 它們就成為main()子程序
的局部變量。
    請注意: 一旦想說明這些參數(shù), 則必須按argc, argv, env 的順序, 如以下
的例子:
     main()
     main(int argc)
     main(int argc, char *argv[])
     main(int argc, char *argv[], char *env[])
    其中第二種情況是合法的, 但不常見, 因?yàn)樵诔绦蛑泻苌儆兄挥胊rgc, 而不
用argv[]的情況。
    以下提供一樣例程序EXAMPLE.EXE,  演示如何在main()函數(shù)中使用三個參數(shù):
     /*program name EXAMPLE.EXE*/
     #include <stdio.h>
     #include <stdlib.h>
     main(int argc, char *argv[], char *env[])
     {
          int i;
          printf("These are the %d  command- line  arguments passed  to
                  main:\n\n", argc);
          for(i=0; i<=argc; i++)
            printf("argv[%d]:%s\n", i, argv[i]);
          printf("\nThe environment string(s)on this system are:\n\n");
          for(i=0; env[i]!=NULL; i++)
               printf(" env[%d]:%s\n", i, env[i]);
     }
 
exit 函數(shù)
函數(shù)名: exit
功  能: 終止程序
用  法: void exit(int status); 
#include <stdlib.h>
#include <conio.h>
#include <stdio.h> 
int main(void)
{
   int status; 
   printf("Enter either 1 or 2\n");
   status = getch();
   /* Sets DOS errorlevel  */
   exit(status - '0'); 
/* Note: this line is never reached */
   return 0;
}

 

  • 上一篇: C程序 流程控制語句
  • 下一篇: C程序數(shù)據(jù)類型說明
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1