C语言calclen函数 c语言calculate函数

C语言中有计算阶乘的函数吗 不是自己写,,,是那种可以直接调用的函数#includestdio.h
voidmain(){
intn,result;
printf("请输入一个数字,求它的阶乘:");
scanf("%d",n);
result=calc(n);
printf("结果:%d",result);
}
intcalc(intn){
intresult=1,i;
for(i=n;i=1;i--)
result=result*i;
returnresult;
}
扩展资料
C语言函数的调用
函数定义好以后,要被其它函数调用了才能被执行 。C语言的函数是能相互调用的,但在调用函数前,必须对函数的类型进行说明 , 就算是标准库函数也不例外 。
标准库函数的说明会被按功能分别写在不一样的头文件中 , 使用时只要在文件最前面用#include预处理语句引入相应的头文件 。如前面使用的printf函数的说明是放在文件名为stdio.h的头文件中 。
c语言中用分治法求大数相乘的代码#includestdio.h
#includestring.h
#includemalloc.h
#define N 100//最大100位
/* 函数声明 */
void calc1(char* str1,int len1,int* tmp,int m);
void accumulate(int cnt,int* res,int res_len,int* tmp,int tmp_len);
char* bignum_multi(char* str1,int len1,char* str2,int len2,char* result,int len);
int main()
{
int i,j;
/* 获取计算数据(可以从文件中读取) */
char str1[N]={NULL};
char str2[N]={NULL};
char result[N*N]={NULL};
printf("Input Num1: \n");
scanf("%s",str1);
fflush(stdin);
printf("Input Num2: \n");
scanf("%s",str2);
/* 计算两个字符串C语言calclen函数的长度,及存储结果所需要C语言calclen函数的空间 */
int len1=strlen(str1),len2=strlen(str2);
int len=len1 len2;
/* 计算并输出计算结果 */
printf("The result is: %s\n",bignum_multi(str1,len1,str2,len2,result,len));
return 0;
}
/*===============================================================
调用calc1和accumulate函数计算大数相乘
===============================================================*/
char* bignum_multi(char* str1,int len1,char* str2,int len2,char* result,int len)
{
int i,j,m=0,cnt=0,*tmp,*res;
/* 分配临时结果C语言calclen函数的存放空间 */
tmp=(int*)malloc((len1 1)*sizeof(int));
res=(int*)malloc(len*sizeof(int));
/* 初始化两个数组 */
【C语言calclen函数 c语言calculate函数】for(i=0;ilen1;i)
tmp[i]=0;
for(j=0;jlen;j)
res[j]=0;
for(i=len2-1;i=0;i--)
{
/* 获取乘数中第i位C语言calclen函数的值 */
m=str2[i]-'0';
/* 计算被乘数与第i位C语言calclen函数的乘积,结果保存在tmp整型数组中 */
calc1(str1,len1,tmp,m);
/* 将tmp数组中的值加到res数组中 */
cnt;
accumulate(cnt,res,len,tmp,len1 1);
}
/* 将整形数组res中的值转化成字符串存入result中 */
i=0;j=0;
/* 去掉res中第一个非零数字前的零 */
while(res[i]==0);
for(m=i-1;mlen;m,j)
result[j]=res[m] 0x30;
result[j]='\0';
free(tmp);
free(res);
return result;
}
/*===============================================================
计算被乘数与乘数的某一位的乘积
===============================================================*/
void calc1(char* str1,int len1,int* tmp,int m)
{
/* d两个位的乘积结果,remainder余数,carry进位 */
int i,d=0,remainder=0,carry=0;
/* 从被乘数字符串'\0'的前一位算起 */
for(i=len1-1;i=0;i--)
{
d=str1[i]-'0';
d*=m;
remainder=(d carry);
carry=(d carry)/10;
tmp[i 1]=remainder;
}
if(carry)
tmp[0]=carry;
else
tmp[0]=0;
}
/*===============================================================
将被乘数与乘数中一位数字的乘积结果计入res数组中
===============================================================*/
void accumulate(int cnt,int* res,int len,int* tmp,int len1)
{
int m=0,n=0,i,k,remainder=0;
static int carry=0;
for(k=len1-1,i=0;k=0;k--,i)
{
m=tmp[k];
n=res[len-cnt-i];
if(m n carry=10)
{
remainder=(m n carry);
carry=1;
}
else
{
remainder=m n carry;
carry=0;
}
res[len-cnt-i]=remainder;
}
}
c语言计算字符数组的长度1、在c语言中,可以通过库函数strlen来计算字符串的长度 , 也可以通过循环计数来求取字符串长度 。
函数原型:unsigned
int
strlen(char
*str);

能:统计字符串str中字符的个数,不包含'\0'


值:返回字符个数
2、用strlen函数实现:
char str[20];
int len;// 保存数组的长度
scanf("%s", str);
len = strlen(str);// 计算字符数组str的长度
注:需将头文件#include
添加进源文件中 。3、用循环来实现:
char str[20];
int len=0;// 保存数组的长度
scanf("%s", str);
while(str[len] != '\0')// 未检测到结束字符
{
len;// 统计字符数组str的长度
}
C语言calclen函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言calculate函数、C语言calclen函数的信息别忘了在本站进行查找喔 。

    推荐阅读