C/C++中printf和C++中cout的輸出格式

C/C++中printf和C++中cout的輸出格式

1、 Printf 輸出格式 
C中格式字符串的通常形式爲: %[標誌][輸出最小寬度][.精度][長度]類型,其中方括號[]中的項爲可選項。各項的意義介紹以下:css

1.類型類型字符用以表示輸出數據的類型,其格式符和意義下表所示:ios

表示輸出類型的格式字符 格式字符意義
a 浮點數、十六進制數字和p-計數法(C99)
A 浮點數、十六進制數字和p-計數法(C99)
c 輸出單個字符
d 以十進制形式輸出帶符號整數(正數不輸出符號)
e 以指數形式輸出單、雙精度實數
E 以指數形式輸出單、雙精度實數
f 以小數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數,%e格式在指數小於-4或者大 於等於精度時使用
G 以%f%e中較短的輸出寬度輸出單、雙精度實
i 有符號十進制整數(與%d相同)
o 以八進制形式輸出無符號整數(不輸出前綴O)
p 指針
s 輸出字符串
x 以十六進制形式輸出無符號整數(不輸出前綴OX)
X 以十六進制形式輸出無符號整數(不輸出前綴OX)
u 以十進制形式輸出無符號整數
#include "stdio.h" #include "conio.h" main() { printf("The program test print style!\n"); printf("%d\n" , 223); printf("%d\n" , -232); printf("\n"); printf("%o\n" , 223); printf("%o\n" , -232); printf("\n"); printf("%x\n" , 223); printf("%x\n" , -232); printf("\n"); printf("%u\n" , 223); printf("%u\n" , -232); printf("\n"); printf("%f\n" , 223.11); printf("%f\n" , 232.11111111); printf("%f\n" , -223.11); printf("%f\n" , -232.11111111); printf("\n"); printf("%e\n" , 223.11); printf("%e\n" , 232.11111111); printf("%e\n" , -223.11); printf("%e\n" , -232.11111111); printf("\n"); printf("%g\n" , 223.11); printf("%g\n" , 232.111111111111); printf("%g\n" , -223.11); printf("%g\n" , -232.111111111111); printf("\n"); printf("%c\n" , 'a'); printf("%c\n" , 97); printf("\n"); printf("%s\n" , "this is a test!"); printf("%s\n" , "2342o34uo23u"); printf("\n"); getch(); }

 

2.列表內容c++

標誌字符爲-、+、#、空格和0五種,其意義下表所示:函數

標誌格式字符 標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值爲正時冠以空格,爲負時冠以負號
# 對c,s,d,u類無影響;對o類,在輸出時加前綴0;對x類,在輸出時加前綴0x或者0X;對g,G 類防止尾隨0被刪除;對於全部的浮點形式,#保證了即便不跟任何數字,也打印一個小數點字符0
0 對於全部的數字格式,用前導0填充字段寬度,若出現-標誌或者指定了精度(對於整數),忽略

3.輸出最小寬度 
用十進制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。ui

#include "stdio.h" #include "conio.h" main() { printf("*%-10d*\n", 223); printf("*%+10d*\n" , -232); printf("*-*\n" , 223); printf("*%#d*\n" , -232); printf("\n"); getch(); printf("*%-10o*\n" , 223); printf("*%+10o*\n" , -232); printf("*%o*\n" , 223); printf("*%#o*\n" , -232); printf("\n"); getch(); printf("$%-10x$\n" , 223); printf("$0x$\n" , -232); printf("$% x$\n" , 223); printf("$%#x$\n" , -232); printf("\n"); printf("%-10u\n" , 223); printf("%+10u\n" , -232); printf("% u\n" , 223); printf("%#u\n" , -232); printf("\n"); getch(); printf("%-10f\n" , 223.11); printf("%+10f\n" , 232.11111111); printf("% f\n" , -223.11); printf("%#f\n" , -232.11111111); printf("\n"); getch(); printf("%-10e\n" , 223.11); printf("%+10e\n" , 232.11111111); printf("% e\n" , -223.11); printf("%#e\n" , -232.11111111); printf("\n"); getch(); printf("%-10g\n" , 223.11); printf("%+10g\n" , 232.111111111111); printf("% g\n" , -223.11); printf("%#g\n" , -232.111111111111); printf("\n"); getch(); printf("%-10c\n" , 'a'); printf("%+10c\n" , 97); printf("% c\n" , 'a'); printf("%#c\n" , 97); printf("\n"); getch(); printf("%-20s\n" , "this is a test!"); printf("%+20s\n" , "2342o34uo23u"); printf("% 20s\n" , "this is a test!"); printf("%#s\n" , "2342o34uo23u"); printf("\n"); getch(); }

4.精度 
精度格式符以「.」開頭,後跟十進制整數。本項的意義是:若是輸出數字,則表示小數的位數;若是輸出的是字符,則表示輸出字符的個數;若實際位數大於所定義的精度數,則截去超過的部分。this

#include "stdio.h" #include "conio.h" main() { printf("%.3d\n" , 5555); getch(); printf("%.3f\n" , 0.88888); getch(); printf("%.3f\n" , 0.9999); getch(); printf("%.4s\n" , "this is a test!"); getch(); }

5.長度spa

  • 長度格式符爲h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。 
    h和整數轉換說明符一塊兒使用,表示一個short int 或者unsigned short int類型的數值 ,示例:%hu,%hx,%6.4hd
  • hh和整數轉換說明符一塊兒使用,表示一個short int 或者unsigned short類型的數值 ,示例:%hhu,%hhx,%6.4hhd
  • j和整數轉換說明符一塊兒使用,表示一個intmax_t或者uintmax_t類型的數值 ,示例:%jd,%8jx
  • l和整數轉換說明符一塊兒使用,表示一個long int 或者unsigned long int類型的數值 ,示例:%ld,%8lu
  • ll和整數轉換說明符一塊兒使用,表示一個long int 或者unsigned long int類型的數值 (C99),示例:%lld,%8llu
  • L和浮點轉換說明符一塊兒使用,表示一個long double的值,示例%Lf,.4Le
  • t和整數轉換說明符一塊兒使用,表示一個ptrdiff_t值(兩個指針之間的差相對應的類型)(C99),示例:%td,ti
  • z和整數轉換說明符一塊兒使用,表示一個size_t值(sizeof返回的類型)(C99),示例:%zd,zx
main()
{
int a=15; float b=138.3576278; double c=35648256.3645687; char d='p'; printf("a=%d,],%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,\n",d,d); } a<--15 b<--138.3576278 c<--35648256.3645687 d<--'p' main() { int a=29; float b=1243.2341; double c=24212345.24232; char d='h'; printf("a=%d,],%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,\n",d,d); getch(); } /*使用printf函數時還要注意一個問題,那就是輸出表列中的求值順序。不一樣的編譯系統不必定相同,能夠從左到右,也可從右到左。Turbo C是按從右到左進行的*/ main() { int i=8; printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--); } 

6.特殊用法3d

對於m.n的格式還能夠用以下方法表示(例) 
char ch[20]; 
printf(「%*.*s\n」,m,n,ch); 
前邊的*定義的是總的寬度,後邊的定義的是輸出的個數。分別對應外面的參數m和n 。我想這種方法的好處是能夠在語句以外對參數m和n賦值,從而控制輸出格式。 
今天(06.6.9)又看到一種輸出格式 %n 能夠將所輸出字符串的長度值賦紿一個變量, 見下例: 
int slen; 
printf(「hello world%n」, &slen); 
執行後變量被賦值爲11。 
2、c++ cout 輸出格式 
 在c++程序裏面常常見到下面的頭文件 
  #include 「iomanip」 
  io表明輸入輸出,manip是manipulator(操縱器)的縮寫 
  iomanip的做用: 
  主要是對cin,cout之類的一些操縱運算子,好比setfill,setw,setbase,setprecision等等。它是I/O流控制頭文件,就像C裏面的格式化輸出同樣.如下是一些常見的控制函數的: 
  dec 置基數爲10 至關於」%d」 
  hex 置基數爲16 至關於」%X」 
  oct 置基數爲8 至關於」%o」 
  setfill( ‘c’ ) 設填充字符爲c 
  setprecision( n ) 設顯示小數精度爲n位 
  setw( n ) 設域寬爲n個字符 
  這個控制符的意思是保證輸出寬度爲n。如: 
  cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << endl; 輸出結果爲 
  1 10100 (默認是右對齊)當輸出長度大於3時(<<1000),setw(3)不起做用。 
  ▲setw(n)用法: 通俗地講就是預設寬度 
  如 cout<指針

  #include <iostream.h>   #include <iomanip.h>   using namespace std;   int main()   {   cout<<12345.0<<endl;//輸出"12345"   cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;輸出"1.235"   cout<<setiosflags(ios::scientific)<<12345.0<<endl;//輸出"1.234500e+004 "   cout<<setprecision(3)<<12345.0<<endl;//輸出"1.235e+004 "(1.235e+004應改成1.23e+004)   return 0;   }
相關文章
相關標籤/搜索