急!大家帮我解答一道C语言题

调用随机函数为5*4的矩阵置100以内的整数,输出该矩阵,求出每行元素之和,并把和值最大的那一行与上一行的元素对调。要求自定义个函数进行操作。
请用用C语言编写 C++我不懂

第1个回答  2009-08-27
给,已经编译运行确认:
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"conio.h"

void main()
{
int i,j,temp;
int x;
int lineCountNow=0,lineCountMax=0,maxlineNum=0;
int a[5][4]={0};

srand( (unsigned)time( NULL ) );

for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
x=rand()%100; /*产生0到100的随机数*/
a[i][j]=x;
}
}

printf("生成的矩阵为: \n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);

printf("\n");
}

for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
lineCountNow+=a[i][j];

if(lineCountNow>lineCountMax)
{
lineCountMax=lineCountNow;
maxlineNum=i;
}

lineCountNow = 0;
}

for(j=0;j<4;j++)
{
temp = a[maxlineNum][j];
a[maxlineNum][j]=a[0][j];
a[0][j]=temp;
}

printf("\n第%d行的元素和最大。\n",maxlineNum);
printf("\n处理后的矩阵为: \n");

for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%3d ",a[i][j]);

printf("\n");
}

getch();
}

运行示例:
生成的矩阵为:
26 70 6 65
70 59 32 45
91 92 94 81
69 86 2 32
55 45 54 69

第2行的元素和最大。

处理后的矩阵为:
91 92 94 81
70 59 32 45
26 70 6 65
69 86 2 32
55 45 54 69
第2个回答  2009-08-27
#include <stdio.h>
#include<time.h>
#include<stdlib.h>
void init(int a[5][5]){/*初始化矩阵,为其赋值随机数*/
srand((unsigned int)time(NULL));
for(int i=0;i<5;i++){
a[i][4]=0;
for(int j=0;j<4;j++){
a[i][j]=rand()%99+1;
a[i][4]+=a[i][j];
}
}
}

void myprint(int a[5][5]){/*输出该矩阵*/
for(int i=0;i<5;i++){
for(int j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n\n");
}
}

void change(int a[5][5]){/*交换操作*/
int sum=a[0][4],num=0;
int tem;
for(int i=1;i<5;i++){
if(sum<a[i][4]){
num=i;
sum=a[i][4];
}
}
printf("经过计算,第%d行之和最大\n",num);
for(int j=0;j<4;j++){
tem=a[num][j];
a[num][j]=a[num-1][j];
a[num-1][j]=tem;
}
}
void main(){/*主函数进行调用各个自定义函数*/
int a[5][5];
printf("初始化后矩阵为:\n");
init(a);
myprint(a);
change(a);
printf("\n按规定进行交换操作后的矩阵为:\n");
myprint(a);
}

程序设计的比较简单,但是已经基本满足你的要求,希望对你有帮助。同时祝你的问题早日得到解决!呵呵
第3个回答  2009-08-27
//当第一行元素最大时不进行交换
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int matrixchange()
{
int i,j,sum[5],temp[4],str[5][4],max=0,t;
srand(time(NULL));
for(i=0;i<5;i++)
{
sum[i]=0;
for(j=0;j<4;j++)
{
str[i][j]=rand()%100+1;
sum[i]+=str[i][j];
printf("%4d",str[i][j]);
}
if(sum[i]>max)
{
max=sum[i];
t=i;
}
printf("\n");
}
printf(" max=%d t=%d\n",max,t+1);
for(i=0;i<5;i++)
{
if(i==t-1)
for(j=0;j<4;j++)
{
temp[j]=str[i+1][j];
str[i+1][j]=str[i][j];
str[i][j]=temp[j];
}
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%4d",str[i][j]);
printf("\n");
}
return 0;
}
void main()
{
matrixchange();
}本回答被提问者采纳
第4个回答  2009-08-27
#include "stdio.h"
void change(int num[5][4])
{
int *p[5],t,i,j,sum[5],max=0,flag=0;
for (i=0;i<5;i++)
{
sum[i]=0;
p[i]=num[i];
}
for (j=0;j<5;j++)
{
for (i=0;i<4;i++)
{
sum[j]+=*(p[j]+i);
}
printf("%4d\n",sum[j]);
}
for(i=0;i<5;i++)
{
if (sum[i]>=max)
{
max=sum[i];
flag=i;
}
}
printf("%4d%4d\n",max,flag);
if(flag!=0)
{
for (i=0;i<4;i++)
{
t=p[flag-1][i];
p[flag-1][i]=p[flag][i];
p[flag][i]=t;
}
}
}
void createMaxim(int num[5][4])
{
time_t t;
srand((unsigned)time(&t));
for(int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
num[i][j]=rand()%100;
printf("%4d",num[i][j]);
}
printf("\n");
}

}
void main()
{
int num[5][4];
createMaxim(num);
change(num);
for(int i=0;i<5;i++)
{
for (int j=0;j<4;j++)
{
printf("%4d",num[i][j]);
}
printf("\n");
}
}

C语言问题,大家帮个忙谢谢
解题思路(不考虑负数):根据数字大小判断是几位数。如果输入的是 0,则是 1 位数,正序、逆序都为 0。如果不是0,可以根据该数是几位数进行循环输出。这里提供了一种扩展性较强的算法,可以参考。代码中,k = 1000 表示当该数是 4 位数,然后通过循环来缩减 k 的值,从而从高到低输出每一位...

一道c语言题目 求大神指点下算法?
根据题意,随机生成红绿蓝球任意个数,并任意顺序排列。这里采用随机数实现。统计按红绿蓝顺序排列最少交换次数,我的思路是:第一步:循环将最后一个红色球与最靠前的其它两色球(并且满足位置在红球之前)交换。第二步:循环将最后一个绿球与最靠前的蓝球(必须在绿球之前)交换。include <stdio.h> ...

哪位大神帮我看一下这道C语言的题
答案为:B 如果语句改成这样:struct S {int g ; char h;} T;,则可以用struct S定义结构体变量,此时的T是声明类型的同时定义了变量,在这种情况下选D 而加上typedef后等于为struct S取了一个新的名字——T,此时T等价于struct S,或者说T是struct S的另一种称呼。所以选B。

问一个C语言题目,大家帮帮我,最好说详细一点,谢谢了。 题目:一下符合...
A不用说了吧,对照定义即可 B的话 右边(9+e,f=d+9)是逗号表达式,并将表达式的值赋给d,所以也是正确的 C是逗号表达式,不是赋值表达式 D中第二个“=”左边(9+e++)不是合法的变量

一道c语言问题,请各位高手们帮帮忙,谢谢
char p[][20]={“get”,”put”,”out”};p是一个有3个元素的数组,数组中的每个元素都是一个char[20]类型的数组。也就是说,p是一个二维数组。strlen(p[0])+strlen(p[1])+ strlen(p[2])即计算p中的三个字符串的长度总和,为3+3+3=9。

有一张C语言的小测试 需要大家帮忙
1.以下不正确的C语言标识符是( D )。D. ab.c 2.C程序是由 C构成的。C. 一个主函数与一个其它函数 3.以下说法中正确的是:A 。A. 在C语言中,实参与其对应的形参各占独立的存储单元;4.设n=3;则n++的结果是(B)。B. 3 5.设整型变量n=10,i=4,则赋值运算n%=i+1执行...

有几道C语言题请大家帮我解答一下,各位哥哥姐姐帮帮忙啊!小弟感激不...
1. 变量名 2. 逗号表达式,其值取最后一项。78\/5 = 15(小数部分不要)3.选A,--x相当于x=x-1;4.321。求余运算 5.printf("格式控制", [输出参数1,...])scanf("格式控制", [&输入参数1,...])6.没题目

跪求大神帮我解答c语言的选择题,感谢
1题选D,strcat是连接函数;2题选C,3题选B,i>3取1;i<3取0;结果就出来了;4题选C,*(P+3)代表啊a[3]=4;*(p+3)+=2后,*(p+3)=*(p+3)+2=4+2=6;p是数组a的首地址,所以*p=1;

几道C语言的题,请大家帮帮忙帮我做一下,万分感谢。
二 、选择题(每题3分,共30分)1 以下选项中合法的标识符(A)2 C语言中运算对象是单操作数的运算符(c)3 若变量已正确定义并赋值,符合C语言语法的表达式是(C)4. 以下叙述正确的是(A)5. 以下叙述中正确的是(A)6.合法的C语言赋值语句是(B)7. 若变量已定义为int型,要给a,b,...

C语言的菜鸟问题,大家帮帮忙 我是自学的
1.变量必须先声明后使用,并且变量的声明要放在开头。我不明白int x=a的本意,你是想直接定义个整形变量x,且值为a吗?如果是,有如下问题:如问题1所述,声明放在前面。x=a;a是浮点类型、x是整形,这样的赋值,浮点数的小数部分会丢失,就是说x中只有a的整数部分。看看我改的程序是不是你想...

相似回答