Kuroki-Tomoko

我什麽都不知道,我只知道吃飯~

博客园 首页 新随笔 联系 订阅 管理

如果你不想預先設置字段的寬度,想通過程序來進行設定,則可以可以使用“*”來進行修飾字段的寬度,前提是在程序中要包含“*”和參數對應的值(比如%*d,那麽參數應該包含*和%d的值)。不僅如此,*還可以在程序中來去確定浮點型數字的精度和字段寬度。

precision 精度

width 寬度

printf()的使用*修飾符樣例:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     unsigned width,precision;
 5     int number=256;
 6     float weight=242.5;
 7     
 8     printf("Enter a field width:\n");
 9     scanf("%d",&width);
10     printf("The number is :%*d:\n",width,number);/*width:字段寬度*/
11     printf("Now enter a width and a precision:\n");
12     scanf("%d %d",&width,&precision);
13     printf("Wight = %*.*f\n",width,precision,weight);
14     printf("Done!\n");
15     
16     return 0;
17  } 
18  /*輸出樣例
19  
20 Enter a field width:
21 6
22 The number is :   256:
23 Now enter a width and a precision:
24 8 3
25 Wight =  242.500
26 Done!
27 
28 這裏用戶輸入了6,則字段寬度變成了6,
29 下面輸入的8和3分別表示為,字段寬度為8,精度為小數點后三位 。 
30 */

scanf()使用*修飾符的樣例:

 1   #include<stdio.h>
 2   int main()
 3   {
 4       int num;
 5       
 6       printf("Please enter three integers:\n");
 7       scanf("%*d %*d %d",&num);
 8       printf("The last integer was %d\n",num);
 9       
10      return 0;
11  }
12  /*輸出樣例
13 13 
14 14 Please enter three integers:
15 15 2013 2014 2015
16 16 The last integer was 2015
17 17 
18 18 這裏用戶輸入三個整形數字,最後只輸出了2015
19 19 在scanf中使用*修飾符放在%和轉換字符之間,scanf會自動跳過相應的輸入項
20 20  
21 21 */

關於printf()的輸出tips:

爲了使輸出的形式更加美觀整潔,可是適當的修改字段寬度

 1   #include <stdio.h>
 2   int main()
 3   {
 4       int num1=21,num2=559,num3=7;
 5       int num4=1,num5=5678,num6=770;
 6       int num7=879,num8=12,num9=3;
 7           printf("%d %d %d\n",num1,num2,num3);
 8           printf("%d %d %d\n",num4,num5,num6);
 9           printf("%d %d %d\n",num7,num8,num9);
10          return 0;
11   } 
12  /*
13  輸出樣例
14 15  21 559 7
16  1 5678 770
17  879 12 3
18 19  排列比較亂,不是很整齊 
20 */

修改後:

 1  #include <stdio.h>
 2   int main()
 3   {
 4       int num1=21,num2=559,num3=7;
 5       int num4=1,num5=5678,num6=770;
 6       int num7=879,num8=12,num9=3;
 7           printf("%9d %9d %9d\n",num1,num2,num3);
 8           printf("%9d %9d %9d\n",num4,num5,num6);
 9           printf("%9d %9d %9d\n",num7,num8,num9);
10          return 0;
11   } 
12  /*
13  輸出樣例
14  
15         21       559         7
16          1      5678       770
17        879        12         3
18  
19  可以整齊排列
20   
21  */

 

posted on 2022-12-21 14:35  KurokiTomoko  阅读(20)  评论(0编辑  收藏  举报