编写一个数组,5行5列 C语言
1.)第一行与第二行有1个负数,第三行与第四行没有负数,第五行有五个负数,那么最后显示器上给我们显示出{11005}的数组。就是每行有几个负数就输出是几个,而没有就输出0...
1.)第一行与第二行有1个负数,第三行与第四行没有负数,第五行有五个负数,那么最后显示器上给我们显示出{1 1 0 0 5}的数组。就是每行有几个负数就输出是几个,而没有就输出0。用rand %更好。
2.)还有就是5行5列中第一列到第三列都有负数,第四列和第五列没有负数(都是整数)。那显示器上输出:第一个整数列,也就是这里的第四列。第一个整数列是:4
辛苦了!谢谢! 展开
2.)还有就是5行5列中第一列到第三列都有负数,第四列和第五列没有负数(都是整数)。那显示器上输出:第一个整数列,也就是这里的第四列。第一个整数列是:4
辛苦了!谢谢! 展开
1个回答
展开全部
/*
16 -78 11 59 -72
-22 55 53 27 -33
84 -83 -58 38 31
-24 -50 12 -75 -49
28 50 38 -54 26
各行负数个数:2 2 2 4 1
各列负数个数:2 3 1 2 3
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int const M = 5;
int const N = 5;
void Show(int a[][N], int m) {
int i,j;
for(i = 0; i < m; ++i) {
for(j = 0; j < N; ++j)
printf("%4d ",a[i][j]);
printf("\n");
}
}
void GetMat(int a[][N], int m) {
int i,j,sign;
for(i = 0; i < m; ++i) {
for(j = 0; j < N; ++j) {
sign = rand()%2;
if(sign == 0) sign = -1;
a[i][j] = sign*(rand()%90 + 10);
}
}
}
int main() {
int i,j,a[M][N],row[M],colm[N];
srand(time(0));
GetMat(a,M);
for(i = 0; i < M; ++i) { // 统计各行负数的个数
row[i] = 0;
for(j = 0; j < N; ++j)
if(a[i][j] < 0) ++row[i];
}
for(i = 0; i < N; ++i) { // 统计各列负数个数
colm[i] = 0;
for(j = 0; j < M; ++j)
if(a[j][i] < 0) ++colm[i];
}
Show(a,M);
printf("各行负数个数:");
for(i = 0; i < M; ++i)
printf("%d ",row[i]);
printf("\n");
printf("各列负数个数:");
for(i = 0; i < N; ++i)
printf("%d ",colm[i]);
printf("\n");
return 0;
}
追问
如果1行里有几个负数都输出1,而没有出现负数的哪一行输出0.这个怎么弄?...能不能把我扣扣号加一下26629718,真是谢谢你的回答。
追答
int main() {
int i,j,a[M][N],row[M],colm[N];
srand(time(0));
GetMat(a,M);
for(i = 0; i < M; ++i) { // 判断各行是否有负数
row[i] = 0;
for(j = 0; j < N; ++j)
if(a[i][j] < 0) row[i] = 1; // 只需修改本行
}
for(i = 0; i < N; ++i) { // 统计各列负数个数
colm[i] = 0;
for(j = 0; j < M; ++j)
if(a[j][i] < 0) ++colm[i];
}
Show(a,M);
printf("各行负数个数:");
for(i = 0; i < M; ++i)
printf("%d ",row[i]);
printf("\n");
printf("各列负数个数:");
for(i = 0; i < N; ++i)
printf("%d ",colm[i]);
printf("\n");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询