#include"stdio.h"
int main()
{
int a[10][10],b[10];
int m,n,i,j,k,t,count;
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
{
count=0;
for(j=0;j<n;j++)
{
if(a[i][j]==1)
count++;
}
if(count!=n)
{
for(k=0;k<m;k++)
{
b[k]=i;
}
}
}
for(i=0;i<m-k;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=0;
}
}
for(i=m-k-1;i<m;i++)
{
for(t=0;t<k;t++)
{
for(j=0;j<n;j++)
{
a[i][j]=a[b[t]][j];
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%2d",a[i][j]);
}
printf("\n");
}
}
真的尽力了,但还是不会,求帮看思路问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 南七灵 2021-12-06 11:50关注
帮你稍微改了一下
#include "stdio.h" int main() { int a[10][10]; int m, n, i, j, t, s, count,cnt = 0; scanf("%d%d", &m, &n); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } printf("\n"); for (i = m - 1; i >= 0; i--) { count = 0; cnt ++;//记录遍历的行数 if(cnt > m) break;//如果当前遍历过的行数>m说明全部遍历过了,退出循环 for (j = 0; j < n; j++) { if (a[i][j] == 1) count++; } if (count == n) { //删 if (i == 0) { //删第一行 for (t = 0; t < n; t++) { a[i][t] = 0; } break; } for (s = i; s > 0; s--) { for (t = 0; t < n; t++) { a[s][t] = a[s - 1][t]; } } for (t = 0; t < n; t++) { //第一行补0 a[0][t] = 0; } i ++;//由于下降了一行,这里的i加一重新遍历这一行 } } for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%d ", a[i][j]); } printf("\n"); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用
- ¥15 微信小程序协议怎么写
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教