cin>>n>>m;改为C语言
时间: 2023-08-07 12:19:50 浏览: 95
在C语言中,可以使用scanf函数来实现cin>>n>>m的功能。代码如下:
```
scanf("%d %d", &n, &m);
```
其中,%d表示读取一个整数,&n和&m分别表示将读取的整数存储到变量n和m中。需要注意的是,scanf函数读取输入时,输入的数字之间需要用空格隔开。
相关问题
#include<iostream> #include<string> #include<math.h> using namespace std; int main(){ int m,n; cin>>m>>n; int a[m+5][n+5]; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; int r,s; cin>>r>>s; int b[r+5][s+5]; for(int i=1;i<=r;i++) for(int j=1;j<=s;j++) cin>>b[i][j]; int minX=1; int minY=1; int min=10000000; for(int u=1;u<=m-r+1;u++) for(int v=1;v<=n-s+1;v++){ int sum=0; for(int i=1;i<=r;i++){ for(int j=1;j<=s;j++){ sum+=abs(a[u+i-1][v+j-1]-b[i][j]); } } if(sum<min){ minX=u; minY=v; min=sum; } } for(int i=1;i<=r;i++){ for(int j=1;j<=s;j++){ cout<<a[minX+i-1][minY+j-1]<<' '; } cout<<endl; } return 0; }改为c语言
把代码中的"cout"改为"printf",去掉命名空间,整体代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
int m, n;
scanf("%d%d", &m, &n);
int a[m + 5][n + 5];
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
int r, s;
scanf("%d%d", &r, &s);
int b[r + 5][s + 5];
for (int i = 1; i <= r; i++)
for (int j = 1; j <= s; j++)
scanf("%d", &b[i][j]);
int minX = 1;
int minY = 1;
int min = 10000000;
for (int u = 1; u <= m - r + 1; u++)
for (int v = 1; v <= n - s + 1; v++) {
int sum = 0;
for (int i = 1; i <= r; i++) {
for (int j = 1; j <= s; j++) {
sum += abs(a[u + i - 1][v + j - 1] - b[i][j]);
}
}
if (sum < min) {
minX = u;
minY = v;
min = sum;
}
}
for (int i = 1; i <= r; i++) {
for (int j = 1; j <= s; j++) {
printf("%d ", a[minX + i - 1][minY + j - 1]);
}
printf("\n");
}
return 0;
}
#include <bits/stdc++.h> using namespace std; map<int, int> f; int find(int a) { if (f[a] != a) return f[a] = find(f[a]); else return a; } int hb(int a, int b) { f[find(b)] = find(a); } int main() { int n, m, p, q; cin >> n >> m >> p >> q; for (int i = -m; i <= n; i++) { if (i == 0) continue; f[i] = i; } f[-1] = f[1]; int x, y; while (p--) { cin >> x >> y; hb(x, y); } while (q--) { cin >> x >> y; hb(x, y); } int girl = 0, boy = 0; for (int i = -m; i < 0; i++) { if (find(i) == 1) girl++; } for (int i = 1; i <= n; i++) { if (find(i) == 1) boy++; } cout << min(boy, girl); return 0; }换成c语言
这是将C++代码转换为C语言代码的结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100010
int f[MAXN];
int find(int a) {
if (f[a] != a)
return f[a] = find(f[a]);
else
return a;
}
void hb(int a, int b) {
f[find(b)] = find(a);
}
int main() {
int n, m, p, q;
scanf("%d %d %d %d", &n, &m, &p, &q);
for (int i = -m; i <= n; i++) {
if (i == 0) continue;
f[i] = i;
}
f[-1] = f[1];
int x, y;
while (p--) {
scanf("%d %d", &x, &y);
hb(x, y);
}
while (q--) {
scanf("%d %d", &x, &y);
hb(x, y);
}
int girl = 0, boy = 0;
for (int i = -m; i < 0; i++) {
if (find(i) == 1) girl++;
}
for (int i = 1; i <= n; i++) {
if (find(i) == 1) boy++;
}
printf("%d", boy < girl ? boy : girl);
return 0;
}
```
主要的改动包括:
- 使用头文件`<stdio.h>`和`<stdlib.h>`代替`<bits/stdc++.h>`;
- 将`cin`和`cout`改成`scanf`和`printf`;
- 将`map`改成一维数组`f`;
- 去掉`using namespace std`;
- 修改`int hb(int a, int b)`函数为`void hb(int a, int b)`函数;
- 修改`min(boy, girl)`为`boy < girl ? boy : girl`。