参考代码:
站在用户的角度思考问题,与客户深入沟通,找到雨城网站设计与雨城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、雅安服务器托管、企业邮箱。业务覆盖雨城地区。
#include stdio.h
double fact(int num)//定义一个求阶乘函数
{
double result = 1.0;
for (int i = 2; i = num; i++)
{
result *= i;
}
return result;//返回阶乘结果
}
int main()
{
int m, n;
double result;
scanf("%d %d", m, n);
result = fact(n) / (fact(m) * fact(n-m));
printf("result = %.0f\n", result);
return 0;
}
你这里的问题不较多
(1)scanf("%d",a[i][j]);应该写成scanf("%d",a[i][j]); 少了取地址符
(2)主函数中的fun(int a[M][M]);千万不能要int,注意形参和实参,而且改成a[M][M]也不行,那就成传一个数字了,最好改成fun(a),把数组地址传给形参
(3)int m,n最好是全局定义,因为你在子函数fun中没有给m和n赋值,主函数中的m和n是传不过去的
(4)sum=sum+(*(p+i)+j);也是不行的,(*(p+i)+j)只是p[i][j]的地址,改成*(*(p+i)+j)
(5)p=a[i];也是不行的,只需要p=a即可
#include stdio.h
char *mystrcpy(char str1[], char str2[])
{
int i = 0;
while (str2[i])
{
str1[i] = str2[i];
i++;
}
str1[i] = '\0';
return str1;
}
char *mystrcat(char str1[], char str2[])
{
int i = 0, j = 0;
while (str1[i]) i++;
while (str2[j]) str1[i++] = str2[j++];
str1[i] = '\0';
return str1;
}
int mystrcmp(char str1[], char str2[])
{
int i = 0, j = 0;
while (str1[i] || str2[i])
{
if (str1[i] != str2[i])
return str1[i] - str2[i];
i++;
}
return 0;
}
int main(void)
{
char str1[100] = "abc", str2[100] = "def", str3[200];
mystrcpy(str3, str1);
puts(str3);
mystrcat(str3, str2);
puts(str3);
if (mystrcmp(str3, str2) 0)
printf("%s %s\n", str3, str2);
else
printf("%s %s\n", str3, str2);
return 0;
}
你说的就是库函数的源码,也就是glibc,源码在可以下到,比如下载,打开后就可以看到你需要的各种库的具体实现代码,比如在string中的strcat.c中就有
char *strcat (dest, src)
char *dest;
const char *src;
{
char *s1 = dest;
const char *s2 = src;
reg_char c;
/* Find the end of the string. */
do
c = *s1++;
while (c != '\0');
/* Make S1 point before the next character, so we can increment
it while memory is read (wins on pipelined cpus). */
s1 -= 2;
do
{
c = *s2++;
*++s1 = c;
}
while (c != '\0');
return dest;
}
C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。
函数定义的一般形式如下:
类型标识符 函数名(形参表列) // 这是函数首部
// 以下{ }内的是函数体
{
说明部分
执行部分
}
举例说明如下:
// 定义一个不带返回值的函数
// 函数功能:输出形参的值
void fun(int a, int b)
{
printf("%d, %d\n", a, b);
}
// 定义一个带返回值的函数
// 函数功能:返回2个整数数的最大值
int fun(int a, int b)
{
return ab ? a : b;
}