C日常程式設計--1
阿新 • • 發佈:2018-12-18
C日常程式設計——1.scanf&printf
題目
7-13 後天 (5 分) 如果今天是星期三,後天就是星期五;如果今天是星期六,後天就是星期一。我們用數字1到7對應星期一到星期日。給定某一天,請你輸出那天的“後天”是星期幾。
輸入格式: 輸入第一行給出一個正整數D(1 ≤ D ≤ 7),代表星期裡的某一天。
輸出格式: 在一行中輸出D天的後天是星期幾。
輸入樣例: 3 輸出樣例: 5
程式1
#include <stdio.h>
int main(int argc, char **argv) {
int dd,mm,yyyy;
scanf("%2d-%2d-%4d" ,&mm,&dd,&yyyy);
printf("%04d-%02d-%02d\n",yyyy,mm,dd);
return 0;
}
結果1
$ cpp main.c -o main.ii
$ cc main.ii -o main
$ ./main
1-2-2014
2014-02-01
Program exited with status 0
結果分析:預設的變數長度不對輸入結果產生影響。
程式2
#include <stdio.h>
int main(int argc, char **argv) {
int dd,mm,yyyy;
scanf ("%d-%d-%d",&mm,&dd,&yyyy);
printf("%04d-%02d-%02d\n",yyyy,mm,dd);
return 0;
}
結果2
#include <stdio.h>
int main(int argc, char **argv) {
int dd,mm,yyyy;
scanf("%d-%d-%d",&dd,&mm,&yyyy);
printf("%04d-%02d-%02d\n",yyyy,mm,dd);
return 0;
}
測試:scanf函式的輸入變數常數長度限制有無對結果的影響 結果:輸入由‘-’判斷變數是否輸入完成,可以不設
程式3
#include <stdio.h>
int main(int argc, char **argv) {
int a,b;
scanf("%4d%3d",&a,&b);
printf("%d\n%d\n",a,b);
return 0;
}
結果3
$ cpp main.c -o main.ii
$ cc main.ii -o main
$ ./main
123 456
123
456
Program exited with status 0
分析:scanf輸入變數值時設定了變數的長度,則第一個變數達到該長度後則剩下的存入第二個變數
- ???空格在輸入中算什麼
總結
%[flags][width][.prec][F|N|h|l]type
變數長度----width 用於控制顯示數值的寬度,取值和含義如下: n(n=1,2,3,4,5,6…): 寬度至少為n位,不夠以空格填充。 格式列表中,下一個引數還是width width是一個可選的指定最小值欄位寬度的十進位制數字字串。如果轉換值字元少於欄位寬度,該欄位將從左到右按指定的欄位寬度填充。如果指定了左邊調整選項,欄位將在右邊填充。如果轉換結果寬於欄位寬度,將擴充套件該欄位以包含轉換後的結果。不會發生截斷。然而,小的精度可能導致在右邊發生截斷。
如:%02.1d
表示為0填充,資料長度為2,小數1位
scanf("%20s",address);
如果輸入流的內容多於 20 個字元,則下次 scanf() 從此次停止處開始讀入。
若達到最大域寬前已遇到空白符,則對該域的讀立即停止;此時,scanf() 跳到下一個域。