如果你不想預先設置字段的寬度,想通過程序來進行設定,則可以可以使用“*”來進行修飾字段的寬度,前提是在程序中要包含“*”和參數對應的值(比如%*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 */
标签:12,21,int,scanf,9d,width,修飾,printf From: https://www.cnblogs.com/NoldorFromMiddleEarth/p/16996221.html