此篇文章是关于牛客网刷题的做题思路和代码分享,感谢来访与指点。
C99标准之前:
数组的大小只能是常量来指定int arr[10]
C99支持常量指定数组大小,也支持变长数组。
C99标准中,引入一个: 变长数组的概念,变长数组允许数组的大小使用变量来指定。
int n = 10;
int arr[n];
需要注意变长数组的点:
需要注意的是,使用变长数组的时候,数组的大小必须在定义时就确定,因此不能在定义后再改变数组的大小。
用我之前做过的题来说明一下:
正确写法:先有n的输入,然后再使用n。
int n=0; scanf("%d",&n); int arr[n];
错误写法: n已经使用过了,再输入就没用了。
int n=0; int arr[n]; scanf("%d",&n);//这样写是错误的。
BC105-矩阵相等判断
题目的意思:
题目的意思说简单点就是,要求第一次输入的时候输入这个矩阵到底有几行几列,接着输入第一个矩阵的元素,接着输入第二个矩阵的元素,若两矩阵元素全部相等,则输出“Yes”,否则有一个不相等的元素则输出“NO”
方法1:两矩阵输入完毕后,进行比较
思路:
1.输入矩阵的行数和列数,
2.接着用一个for循环输入元素,数组记为arr1。
3.另一个用一个for循环输入元素,数组记为arr2。
4.定义一个flag作为判断矩阵是否相等的条件
5.两矩阵进行比较,若两矩阵之间有不相等的元素,就把flag=0,接着用goto语句跳出循环。
6.打印Yes or No。
#include <stdio.h> int main() { int n=0; int m=0; scanf("%d %d",&n,&m); int arr1[n][m]; int arr2[n][m]; int i=0; int j=0; //接收第1个数组的内容 for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&arr1[i][j]); } } //接收第2个数组的内容 for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&arr2[i][j]); } } //比较 int flag=1;//假设是相等的 for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(arr1[i][j]!=arr2[i][j]) { flag=0; goto end; } } } end: if(flag==1) printf("Yes\n"); else printf("No\n"); return 0; }
提交: