c語言筆試輸入輸出
阿新 • • 發佈:2020-09-14
c語言定義陣列:
二維陣列在定義的時候,可以不給出行數,但必須給出列數,二維陣列的大小根據初始化的行數來定
intd[ ][4]={1,2,3,4,5};//合法這叫區域性初始化,也得給出初值。。。一般都是這樣逐個初始化int[2][2]={1,2,3,4}; 每行有4列,則1234是一行,5是另一行,且後面有三個空間。所以一共8個int空間 printf("sizeof(d)=%d\n",sizeof(d));為32 所以c語言的二維陣列必須是方塊形的矩陣???必須有列自動換行和補0。。 java的二維陣列可以是每行的列不對齊的那種。所以java必須有行,列無所謂。 Java:(而且java推薦int[ ][ ] d這樣寫)關於網際網路的線上筆試輸入輸出:
編譯器環境說明:http://OJ.acmcoder.com/ExamNotice.html
線上程式設計題刷題訓練:http://www.acmcoder.com
// C #include <stdio.h> int main() { int N, M; // 每組第一行是2個整數,N和M,至於為啥用while,因為是多組。 while(scanf("%d %d", &N, &M) != EOF) { printf("%d %d\n", N, M); // 迴圈讀取“接下來的M行” for (inti=0; i<M; i++) { int a, b, c; // 每行是3個整數,a,b,c。 scanf("%d %d %d", &a, &b, &c); printf("%d %d %d\n", a, b, c); } // M行讀取完了,就又要開始下一組了,去while那裡。 } }
以上按下ctrl+z代表EOF即檔案結尾則跳出while
或者在while裡面設定一個標誌if(flag){break;} 跳出while
那麼上面這個二維陣列如何輸入賦值呢?
a[i][0]=a居然不行?
答案是拋棄把a,b,c賦值進來的想法,用scanf("%d",&sum[i][j]);
#include <stdio.h> int main(int argc, char const *argv[]) { int n,m; while(scanf("%d %d",&n,&m)!=EOF){ printf("%d %d\n",n,m); int a[m][2];//得放在這裡才行!!!!!!!!!!! for (int i = 0; i < m; i++) { /* code */ // int a,b,c; // scanf("%d %d %d",&a,&b,&c); // printf("%d %d %d\n",a,b,c); for (int j = 0; j < 3; j++) { /* code */ scanf("%d",&a[i][j]);//每次只能輸入1個再換行 } printf("\n"); } for (int i = 0; i < m; i++) { for (int j = 0; j < 3; j++) { printf("a[%d][%d]:%-4d",i,j,a[i][j]);//100200 } printf("\n"); } if (m==5) { /* code */ break; } } // for (int i = 0; i < m; i++) a只能在m定以後才能放 所以要在while裡面,所以這一段不能放外面了 a 會報錯 // { // for (int j = 0; j < 2; j++) // { // printf("a[%d][%d]:%-4d",i,j,a[i][j]);//100200 // } // printf("\n"); // } printf("%d\n",m); printf("over"); return 0; }
執行結果:
1 2//輸入
1 2//列印
1 2 3//輸入
2 3 4//輸入
a[0][0]:1 a[0][1]:2 a[0][2]:2//輸出列印
a[1][0]:2 a[1][1]:3 a[1][2]:4
^Z//輸入
over//輸出