1. 程式人生 > 實用技巧 >c語言筆試輸入輸出

c語言筆試輸入輸出

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 (int
i=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//輸出