c語言定義數組:
二維數組在定義的時候,可以不給出行數,但必須給出列數,二維數組的大小根據初始化的行數來定
int d[ ][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 這樣寫)
// 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//輸出
c語言中是沒有String頭文件嗎?目前只看到字符串用數組的形式輸入,叫做字符數組
最后這兩個,{ }包起來的一行這樣是挨個兒賦值,字符加單引號,數字就不用加單引號,都得加逗號。
“ ”包起來也是一行,是直接字符串賦值。列不夠補0
字符串賦值會在末尾多占一個字節\0,當做一個字符串整體那么輸入輸出簡單一些(因為字符得一個一個循環輸入輸出)
這種字符還可以用%s占位符來輸出字符串
一行一行輸出:hello和xxw
char strr[15] = {"helloxxw"}; printf("%s\n",strr); char str[15]; printf("input string:\n"); scanf("%s",str); printf("output:%s\n",str); return 0; }
運行結果:
input string:
helloworld
output:helloworld