c语言函数调用问题 (回答好追加100分)

根据要求编写程序P5031.C的指定部分:
  程序P5031.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
  程序的功能是:找出任意的一个m×n矩阵每一行上的最大值的列下标并按示例格式要求显示。m、n(2<=m<=20、2<=n<=20)及矩阵元素从键盘输入。编程可用素材:printf("The max value in line %d is %d\n"...。
  程序的运行效果应类似地如图1所示,图1中的5 6和
    31 42 36 74 2358 88
    32 57 37 43 47 1447
    97 51 257 7 445 459
    33 65 44 3 425 43
    68 3425 82 789 123 2134
  是从键盘输入的内容。
#include <stdio.h>

#define N 20

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */

/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];

printf("Please input m and n:");
scanf("%d%d", &m, &n);

printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");

/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */

/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */

#include <stdio.h>

#define N 20

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
void fun(int juZhen[N][N],int m,int n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];

printf("Please input m and n:");
scanf("%d%d", &m, &n);

printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");

/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
fun(juZhen,m,n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
void fun(int juZhen[N][N],int m,int n)
{
int i,j,max=juZhen[0][0],maxi=0;
for(i=0;i<m;i++)
{
max=juZhen[i][0];
maxi=0;
for(j=1;j<n;j++)
{
if(juZhen[i][j]>max)
{
max=juZhen[i][j];
maxi=j;
}

}
printf("The max value in line %d is %d\n",i,maxi);
}
}

结果验证:
31 42 36 74 2358 88
32 57 37 43 47 1447
97 51 257 7 445 459
33 65 44 3 425 43
68 3425 82 789 123 2134

The max value in line 0 is 4
The max value in line 1 is 5
The max value in line 2 is 5
The max value in line 3 is 4
The max value in line 4 is 1

请hehefaq指出,“当一行中的最大值是第一个数的时候 程序会出错”,错在哪?
7777 42 36 74 2358 88
9999 57 37 43 47 1447
2222 51 257 7 445 459
3698 65 44 3 425 43
8000 3425 82 789 123 2134

The max value in line 0 is 0
The max value in line 1 is 0
The max value in line 2 is 0
The max value in line 3 is 0
The max value in line 4 is 0
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-23
#include <stdio.h>

#define N 20

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */

/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
void fun(int a[][N],int m,int n);
int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];

printf("Please input m and n:");
scanf("%d%d", &m, &n);

printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");

/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */

/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
fun(juZhen,m,n);
return 0;
}
void fun(int a[][N],int m,int n)
{
int i,j,max;
for(i=0;i<m;i++)
{
max=0;
for(j=1;j<n;j++)
if(a[i][max]<a[i][j]) max=j;
printf("The max value in line %d is %d\n",i,max);
}
}
第2个回答  2011-11-23
#include <stdio.h>

#define N 20

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
void ABC(int a[N][N], int m, int n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];

printf("Please input m and n:");
scanf("%d%d", &m, &n);

printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");

/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
ABC(juZhen, m, n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
void ABC(int a[N][N], int m, int n)
{
int hang, lie, max;
for (hang = 0; hang < m; hang++)
{
max = a[hang][0];
for (lie = 1; lie < n; lie++)
{
if (max < a[hang][lie]) max = a[hang][lie];
}
printf("The max value in line %d is %d\n", hang, max);
}
}
第3个回答  2011-11-23
#include <stdio.h>

#define N 20

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
int findmax(int **JuZhen,int m,int n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];

printf("Please input m and n:");
scanf("%d%d", &m, &n);

printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");

/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
findmax(juZhen,m,n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
int findmax(int **JuZhen,int m,int n)
{
int i,j,max,index;
for(i=0;i<m;i++){
max=juZhen[i][0];
index=0;
for(j=1;j<n;j++){
if(juZhen[i][j]>max) index=j;
}
printf("The max value in line %d is %d\n",i,index);
}
}
第4个回答  2011-11-23
4楼答案正解
前三楼的答案都存在相同的缺陷
当一行中的最大值是第一个数的时候 程序会出错
4L 高手 膜拜下 哇咔咔

c语言函数调用问题 (回答好追加100分)
define N 20 \/* 本部分代码功能建议:函数原型声明 *\/ \/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) *\/ void fun(int juZhen[N][N],int m,int n);\/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计...

高分求两道大一C语言编程题答案,答对的保证再追加100分
{ printf("%c", *psz);psz++;continue;} fprintf(fp, "%c", *psz);psz++;} } int main(){ char* pszBuff = ReadFile("Old.txt");if( NULL == pszBuff ) return 0;Sort(pszBuff);free(pszBuff);printf("\\n");} \/ 2.\/ include <stdio.h> include <malloc.h> void i...

...下面是程序代码。回答好了追加100分啊!在线等、很急!
错误原因主要有:1、C语言是大小写敏感的,注意一些函数和关键字的大小写,如:If和if的区别2、变量的名称错误3、调用的库函数没有头文件,如:inportb\/outportb等。下面的程序可以编译,但是连接时出现库函数没有说明的问题,请添加inportb\/outportb对应的头文件!include <stdio.h> include <conio.h>...

C语言中函数调用问题
首先我们来说一下,你这个程序是有很大的问题的。函数有且只有唯一一个返回值,当程序执行到return的时候,这个函数就结束并返回了。所以,你这里写2个return来返回最大值和最小值是不可能的。再者,如果你想使用返回值作为最大值,最小值的传递,那么在main函数中,你调用star函数的时候需要一个变量...

C语言的main函数调用问题 如解决追加分
1)int menu()改为char menu()原因:主函数中chose为char型,若menu返回的为int型无法自动转换为char型 2)建议将menu函数放在main主函数前,或在main主函数前进行声明char menu(void);3)建议将scanf("%c", &choice);改为choice=getchar();这样就需要将变量choice声明为int型,仍使用原来的int ...

C语言void函数调用问题
=1, 这实际改的是*a, 你可以试试新建一个数组b[],然后让a=b,然后给a[0]赋值,这样就不能改变原main函数中的a数组的值了;函数void func2(int b)的参数是b变量,实际传递的是b的值,比如如果b=2,那调用函数时实际用的是func2(2), 所以在函数中对b的改动无法影响原main函数中的b。

C语言 用加法运算,生成两个随机数,用加法求和,成功追加100分。
include <iostream> include <ctime> using namespace std;int main(){ int a,b;int num;int t=10,d=100;srand((unsigned)time(0));a=rand()%(d-t)+t;printf("当前随机数为:%d\\n",a);printf("请输入一个数: ");scanf("%d",&num);if(a==num)printf("正确!\\n");else whil...

c语言函数调用问题char类型,回答好追加分
自定义函数有返回值的不能定义为void,没有返回值的定义为void,你的情况我也不太清楚,申明的摆放,具体就是比如说你的函数不管是main()还是void()在函数里要使用到其他的函数比如说f1(),f1写在main()前面的话不用申明,如果f1()写在main()后面的话就要在 main()前面加个f1()的申明 有全部代码...

c语言函数调用?
您好,很高兴回答您的问题。c语言中,程序运行的时候,首先是找到主函数来运行,其他的函数只有在被调用的时候才会运行。所以对于您给定的程序,系统找到主函数运行,函数体的第一句话是对被调用的函数进行申明,然后定义n为整型变量,s为双精度实行变量,并赋初始值为0。接下来从键盘输入n的值,然后用n...

有关c语言的一个问题,回答好的追加分数
"董事长要求你计划新的系统。"是“你”不是“我”

相似回答
大家正在搜