//這個例子證明了:scanf("%c", &ch)等價於ch = getchar()
//在用%c的時候要格外小心
//int型:正確
#include int main()
return 0;
}//char型:錯誤
#include int main()
return 0;}/*
有空格時的執行結果:
a bvar1 = 97, var2 = 98
i = 0
c dvar1 = 10, var2 = 99
i = 1
var1 = 32, var2 = 100
i = 2
e fvar1 = 10, var2 = 101
i = 3
var1 = 32, var2 = 102
i = 4
g hvar1 = 10, var2 = 103
i = 5
沒空格時的執行結果:
a bvar1 = 97, var2 = 32
i = 0
var1 = 98, var2 = 10
i = 1
c dvar1 = 99, var2 = 32
i = 2
var1 = 100, var2 = 10
i = 3
e fvar1 = 101, var2 = 32
i = 4
var1 = 102, var2 = 10
i = 5
*///char型:解決
#include int main()
return 0;
}//再看乙個例子,注意①②③④處
#include #define max_vertex_num 20
#define infinity 0x00ffffff
typedef char vertexdatatype;//頂點資料型別
typedef char *otherinfo;//弧結點的其它資訊
enum graphkind;//directed graph,directed net,undirected graph,undirected net
typedef struct
arcnode;//弧節點
typedef struct
adjmatrix;//adjacency matrix(鄰接矩陣)
void createdn(adjmatrix *g);
//鄰接矩陣表示有向網
int main(void)
//locate the index of the vertex
int locatever(adjmatrix *g, const vertexdatatype *ver)
}return i;
}//create directed net
void createdn(adjmatrix *g)
for(i = 0; i < g->vernum; i++)
printf("\n");
//初始化鄰接矩陣
for(i = 0; i < g->vernum; i++)
}//建立鄰接矩陣
printf("請輸入弧的起點、終點、權值:\n");
for(i = 0; i < g->arcnum; i++)
g->kind = dn;
}/* test data and result
請輸入頂點個數、弧的個數:6 10
請輸入頂點元素:a b c d e f
請輸入弧的起點、終點、權值:
a b 5
a c 4
a d 1
b d 6
b e 3
c d 7
c f 6
d e 5
d f 2
e f 5
*/
連續scanf輸入字元型資料時,出現跳過輸入問題
例 include main 通過新增fflush stdin 來清空鍵盤緩衝區。include main 或者通過新增getchar 來臨時接收回車enter include main 總結 sacnf函式接收輸入資料時,遇見以下三種情況結束乙個資料當輸入 遇空格,回車,跳格鍵 遇寬度格式修飾符 ...
Scanf的輸入型別
scanf的輸入型別 1.格式字元與printf函式中的使用方式相同,以 d o x c s f e,無 u格式 g格式。2.可以指定輸入資料所佔列寬,系統自動按它擷取所需資料。3.後的 附加說明符,用來表示跳過它相應的資料。4.輸入資料時不能規定精度。5.根據格式字元的含義從輸入流中取得資料,當輸...
scanf函式的輸入
是不是也有人和我一樣,有時候輸入達不到自己預想結果呢?又很難找到自己的錯誤,覺得輸入的格式是對的,但是儲存卻不再在自己預想的位置。下面來講一下我關於字元和數字輸入的順序和方式的認識。首先我們來看第乙個 include includevoid main 是不是感覺是乙個非常簡單的程式。但有時候不懂也是...