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
",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, 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 ", 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,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 ",a,b,c); for (int j = 0; j < 3; j++) { /* code */ scanf("%d",&a[i][j]);//每次只能输入1个再换行 } printf(" "); } 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(" "); } 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(" "); // } printf("%d ",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
字符串赋值会在末尾多占一个字节 ,当做一个字符串整体那么输入输出简单一些(因为字符得一个一个循环输入输出)
这种字符还可以用%s占位符来输出字符串
一行一行输出:hello和xxw
char strr[15] = {"helloxxw"}; printf("%s ",strr); char str[15]; printf("input string: "); scanf("%s",str); printf("output:%s ",str); return 0; }
运行结果:
input string:
helloworld
output:helloworld