c语言中sgrt函数 c语言strrpl函数

C如何自己写getline函数//getline原型,来自istream文件
_Myt __CLR_OR_THIS_CALL getline(_Elem *_Str,
streamsize _Count, _Elem _Delim)
{ // get up to _Count characters into NTCS, discard _Delim
_DEBUG_POINTER(_Str);
ios_base::iostate _State = ios_base::goodbit;
_Chcount = 0;
const sentry _Ok(*this, true);
if (_Ok0_Count)
{ // state okay, use facet to extract
int_type _Metadelim = _Traits::to_int_type(_Delim);
_TRY_IO_BEGIN
int_type _Meta = _Myios::rdbuf()-sgetc();
for (; ; _Meta = _Myios::rdbuf()-snextc())
if (_Traits::eq_int_type(_Traits::eof(), _Meta))
{ // end of file, quit
_State |= ios_base::eofbit;
break;
}
else if (_Meta == _Metadelim)
{ // got a delimiter, discard it and quit
_Chcount;
_Myios::rdbuf()-sbumpc();
break;
}
else if (--_Count = 0)
{ // buffer full, quit
_State |= ios_base::failbit;
break;
}
else
{ // got a character, add it to string
_Chcount;
*_Str= _Traits::to_char_type(_Meta);
}
_CATCH_IO_END
}
*_Str = _Elem(); // add terminating null character
_Myios::setstate(_Chcount == 0 ? _State | ios_base::failbit : _State);
return (*this);
}
如何用C语言程序设计计算出2的64次方,或者计算出两个大数相乘(每个数都超过15位) 。大数c语言中sgrt函数的表示用字符串,自己计算进位基本上这个思路
这是我以前编号c语言中sgrt函数的一个大数计算器 。可以计算加减乘除 。足够c语言中sgrt函数你的大数乘法要求,基本上最后结果不超过1000位应该都可以 。
不过没有乘方功能
#include stdio.h#include string.h
//-----------------------------------------------//将字符串转化为整形数组void str2int(char *a,char *b,int ia[1024],int ib[1024],int ir[1024]){ int i,len; //对数组初始化 for (i=0;i1024;i) {ia[i]=0;ib[i]=0;ir[i]=0; } //将a翻转后输入到数组 i=strlen(a); len=strlen(a); while(i) {i--;ia[len-i-1]=*(a i)-48; } //将b翻转后输入到数组 i=strlen(b); len=strlen(b); while(i) {i--;ib[len-i-1]=*(b i)-48; }}//-----------------------------------------------//比较大小int cmp(char *a,char *b){ int i,sg; if (strlen(a)strlen(b)){sg=0; } else if (strlen(a)strlen(b)) {sg=1; } else {for (i=0;i(int)strlen(a);i){if (*(a i)*(b i)){sg=0;break;}else if (*(a i)*(b i)){sg=1;break;}elsesg=0;} } return sg;}//-----------------------------------------------//加法函数char *add(char *a,char *b){ int len,i,c; int ia[1024],ib[1024],ir[1024]; str2int(a,b,ia,ib,ir); if (strlen(a)strlen(b)) len=strlen(a); else len=strlen(b); c=0; //加法运算 for (i=0;ilen;i) {ir[i]=(ia[i] ib[i] c);c=(ia[i] ib[i] c)/10; } if (c==1) {ir[len]=1;len; } for (i=0;ilen;i) {*(a i)=ir[len-i-1] 48;//翻转输出 } *(a len)='\0'; return a;}//-----------------------------------------------//减法函数char *sub(char *a,char *b){ int len,i,c,sg; int ia[1024],ib[1024],ir[1024]; char str[1024]; char *strrt; str2int(a,b,ia,ib,ir); //符号判断 sg=cmp(a,b); if (sg==0) len=strlen(a); else len=strlen(b); c=0; //减法运算 for (i=0;ilen;i) {if (sg==0){if ((ia[i]-ib[i]-c)=0){ir[i]=ia[i]-ib[i]-c;c=0;}else{ir[i]=10 ia[i]-ib[i]-c;c=1;}}else{if ((ib[i]-ia[i]-c)=0){ir[i]=ib[i]-ia[i]-c;c=0;}else{ir[i]=10 ib[i]-ia[i]-c;c=1;}} } if (sg==1) str[0]='-'; for (i=0;ilen;i) {str[i sg]=ir[len-i-1] 48;//翻转输出 } str[len sg]='\0'; strrt=str; //去零处理 if (sg==0) {while(len1*strrt=='0'){strrt;len--;} } if (sg==1) {strrt;while(len1*strrt=='0'){*strrt='-';strrt;len--;}strrt--; } strcpy(a,strrt); return a;}
//-----------------------------------------------//乘法函数char *mul(char *a,char *b){ int len,lena,lenb,i,j,c,jin; int ma[1024],mb[1024],mr[1024]; char stra[1024],strb[1024]; char *strrta,*strrtb; stra[0]='0'; stra[1]='\0'; strrta=stra; str2int(a,b,ma,mb,mr); //乘法运算 lena=strlen(a); lenb=strlen(b); for (j=0;jlena;j) {c=0;jin=0;for (i=0;ilenb;i){mr[i]=(ma[j]*mb[i] c);c=(ma[j]*mb[i] c)/10;}len=lenb;if (c0){strb[0]=c 48;jin=1;}for (i=0;ilen;i){strb[i jin]=mr[len-i-1] 48;}for (i=len;ilen j;i) strb[i jin]='0';strb[len j jin]='\0';strrtb=strb;add(strrta,strrtb); } strcpy(a,strrta); return a;}//--------------------------------------------------//除法函数char *div(char *a,char *b){ int len,lena,i,j; char stra[1024],strb[1024],strc[1024],strd[1024]; char *strbp; strbp=strc; strcpy(stra,a); strcpy(strb,b); strcpy(strd,a); if (cmp(stra,strb)==1) {//被除数小于除数*a='0';*(a 1)='\0';strcpy(b,stra); } else {//被除数大于除数mul(strb,"10");len=strlen(a)-strlen(b);if (len==0||(len==1cmp(stra,strb)==1)){strcpy(stra,a);strcpy(strb,b);i=1;strc[0]='1';strc[1]='\0';while(cmp(stra,strc)==0){strc[0]=i 48;strc[1]='\0';mul(strc,strb);i;}*a=i 46;*(a 1)='\0';strcpy(strc,a);mul(strc,strb);sub(stra,strc);strcpy(b,stra);}else{len=strlen(a)-strlen(b);for (j=0;j=len;j){for (i=0;i=(int)strlen(b);i){if ((i j-1)0) stra[i]='0';else stra[i]=*(a i j-1);}stra[strlen(b) 1]='\0';strcpy(strb,b);strbp=stra;lena=strlen(strbp);while(lena1*strbp=='0'){strbp;lena--;}div(strbp,strb);strc[j]=*strbp;strbp=strb;for (i=0;i(int)(strlen(b)-strlen(strb));i){strbp--;*strbp='0';}for (i=strlen(b)-1;i=0;i--){*(a i j)=*(strbp i);}}strc[len 1]='\0';strbp=strc;lena=strlen(strbp);while(lena1*strbp=='0'){strbp;lena--;}strcpy(a,strbp);mul(strbp,b);sub(strd,strbp);strcpy(b,strd);} }return a;}
void main(){ char a[1024],b[1024],c; c='0'; while(c!='q') {printf("请输入命令\n加\n- 减\n* 乘\n/ 除\nq 退出\n");c=getchar();getchar();switch(c){case 'q':break;case ' ':printf("请输入第一个加数\n");gets(a);printf("请输入第二个加数\n");gets(b);printf("和为%s",add(a,b));getchar();break;case '-':printf("请输入被减数\n");gets(a);printf("请输入减数\n");gets(b);printf("差为%s",sub(a,b));getchar();break;case '*':printf("请输入第一个乘数\n");gets(a);printf("请输入第二个乘数\n");gets(b);printf("积为%s",mul(a,b));getchar();break;case '/':printf("请输入被除数\n");gets(a);printf("请输入除数\n");gets(b);div(a,b);printf("商为%s余数为%s",a,b);getchar();break;default:break;} }}
编译环境VC6,控制台程序
C语言,删除数组中的重复数字然后输出#include "stdio.h"
#include "string.h"
void main()
{
inti,k=1,j=10,a[10]={4,4,4,4,5,4,9,9,9,10};
for(k=i=1;i10;i)
{
for(j=0;jk;j)
{
if(a[j]==a[i])break;
}
【c语言中sgrt函数 c语言strrpl函数】if(j==k)a[k]=a[i];
}
printf(" \n ");
for(i=0;ik;i)
{
printf(" %d ",a[i]);
}
扩展资料:
printf()函数的调用格式为:printf("lt;格式化字符串gt;",lt;参量表gt;) 。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式 。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误 。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234 。
scanf()是C语言中的一个输入函数 。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#includelt;stdio.hgt; 。
int scanf(const char*restrict format,...);
函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中 。
c语言中sgrt函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容 , 更多关于c语言strrpl函数、c语言中sgrt函数的信息别忘了在本站进行查找喔 。

    推荐阅读