peek是C++
成都创新互联公司是一家专注于成都网站制作、网站设计与策划设计,成华网站建设哪家好?成都创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:成华等地区。成华做网站价格咨询:18980820575
IO流里面的方法,C++
IO流是其独有的,C里面并不能通用。
peek首先构造一个sentry对象
其次调用与流关联的streambuf对象的sgetc方法返回当前流指针位置处的字符,以int(ascii码)方式返回,sgetc只返回流中当前字符,并不移动流指针的位置。接着销毁sentry对象。
最后将istream的gcount方法的返回值设为0.(gcount将返回
该操作/方法从流中抽取的字符数,设为0,是要告诉流,该方法/操作并没有从流里面抽取任何字符)
#include "stdio.h"
#include "string.h"
void main()
{
int i,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;
}
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(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
大数的表示用字符串,自己计算进位基本上这个思路
这是我以前编号的一个大数计算器。可以计算加减乘除。足够你的大数乘法要求,基本上最后结果不超过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; } else sg=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)%10; 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)%10; 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,控制台程序