你写的这段函数错误太多:
void matrix(int A[imax][maxsize],int B[maxsize][jmax],int C[imax][jmax]){
for(i=0i<imaxi++)
for(j=0j<jmaxj++)
{
for(k=0k<maxsizek++)
x+=A[i][k]*B[k][j]
C[i][j]=x
}
}
这一段,等同于
void matrix(int A[][],int B[][],int C[][])
{
for(i=0i<imaxi++)
for(j=0j<jmaxj++)
{
for(k=0k<maxsizek++)
x+=A[i][k]*B[k][j]
C[i][j]=x
}
}
函数里边用的imax、jmax、maxsize等其实用的是你定义的全局变量
2:C语言不允许用变量来作为数组长度,也就是以下几个语句是错误的
int A[imax][maxsize],B[maxsize][jmax],C[imax][jmax]
printf("input imax,jmax,maxsize:\n")
scanf("%d%d%d",&imax,&jmax,&maxsize)
3:根据函数matrix(A[][],B[][],C[][])定义模型与函数调用
matrix(A[imax][maxsize],B[maxsize][jmax],C[imax][jmax])可以发现你的函数调用明显不对——函数参数要的是三个二维指针,而你实际参数却是三个数组的最后一个值,抛去前边的错误,这里写成matrix(A,B,C)
其它错误懒得看了,好好努力吧
#include<stdio.h>// #include<math.h> // 不需要这个头文件
#include <string.h>
int main()
{
/*
char name[10] // 这句定义的是一个长度为10的字符数组
(char*)name[10] // 这句是把下标为10的元素强转成char*类型
*/
char name[10][100] // 应该这样定义字符串数组,定义10组字符串,每个字符串可以存放100个字符。
int i
void sort(char name[10][100]) // 排序函数应该这样声明,否则不会将参数解释成数组。
for (i = 0 i < 10 i++)
gets(name[i]) // 这里应该这样写,给第i个字符串数组赋值
sort(name) // 排序字符串数组
for (i = 0 i < 10 i++)
printf("%s\n", name[i])
return (0) // 注意main函数是有返回值的,虽然不写也可以,但应该养成好习惯。
}
void sort(char name[10][100])
{
// char *t
char t[100] // 应该这样定义临时字符串缓冲区
int i = 0, j = 0/*, k*/ // 不需要k
for (i = 0 i < 10 i++)
{
// k = i
for (j = i + 1 j < 10 j++)
{
if (strcmp(name[j], name[i]) < 0)
/* k = j//用排序法处理字符串
if (k != i)
{
t = name[i] name[i] = name[j] name[j] = t
}*/
{
// 这里你需要交换两个字符串,可以用到上面定义的缓冲区t[100]
// 交换两个字符串应该这样写:
strcpy(t, name[i]) // 把第i个字符串的内容拷贝到缓冲区
strcpy(name[i], name[j]) // 把第j个字符串的内容拷贝给第i个
strcpy(name[j], t) // 把缓冲区里面的内容拷贝给第j个
}
}
}
}