編程加法
我用TC寫過一個
'大數運算'
模塊
不過,我只能處理
255個數字
以內的運算
因為
gets(char
*str)
只接受
255以內的
字元
如果樓主覺得
可以的話
,可以發Email到我的
QQ郵箱
答案補充
方法:
其實很簡單,就和用筆在紙上運算一樣
1.
全部用字元指針來存儲和運算
2.
逐位相加(減),並且處理進位(借位)
如果還有乘法、除法,那麼可以以加減法作為運算基礎
答案補充
重復字元太多,帖不上來啊!
❷ 運用C++製作簡單的加法運算程序
在vs2015中,我們可以這樣寫代碼:
int add(int a, int b)
{
return (b == 0) ? a : add(a ^ b, (a & b) << 1);
/*
if(b == 0)
return a;
else
return add(a ^ b, (a & b) << 1);
//異或結果 + 與運算結果左移一位
*/
}
拓展資料:
C++是面向對象的程序語言,區別我們的C語言,具體編程首先要定義一個類,類中包含私有成員以及公有成員兩部分,私有成員主要是變數,公有成員主要是方法,另外還需要另外的.cpp程序來實現這些公有方法,以及一個主函數。一般的,外部對私有成員是不能直接訪問的,需要通過調用公有方法來實現訪問私有成員。
數據在計算機內存中是以二進制存儲的。
幾種常用的位運算:
與運算&: 對應位均為1時為1,其它為0。
或運算|: 對應位均為0時為0,其它為1。
異或運算^: 對應位不相同時為1,相同時為0.
按位取反~: 每一位取反
右移>>: 將二進制進行右移,低位丟掉,高位補零。
左移<<: 將二進制進行左移,低位補零,高位丟掉。
❸ 用C語言寫一個加法運算的代碼怎麼寫
例子如下:
知識擴展:
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。
❹ C++編程大數加法
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
char atemp[10000],btemp[10000],b[10000],a[10000];
int c[10000],jw[10000];
int i,j,temp,anb,bnb,lena,lenb,lenmax,lenmin,lentemp;
int seta=0,setb=0,pd=0,tl=0,tll=0,is=0; //判斷兩數是否相等
scanf("%s",&atemp);
getchar();
scanf("%s",&btemp);
getchar();
lena=strlen(atemp);
lenb=strlen(btemp);
lenmax=lena>=lenb?lena:lenb;
lenmin=lenb<lena?lenb:lena;
for(i=0;i<=9999;i++)
{
jw[i]=0;
}
//都是正數或者都是負數,且位數一樣的時候
if((('-'!=atemp[0]&&'-'!=btemp[0])&&(lena==lenb))||(('-'==atemp[0]&&'-'==btemp[0])&&(lena==lenb)))
{
for(i=0,j=lenmax-1;j>=0;i++,j--)
{
a[i]=atemp[j];
b[i]=btemp[j];
}
if(('-'==atemp[0]&&'-'==btemp[0])&&(lena==lenb))
{
lenmax-=1;
printf("-");
}
pd=1;
goto loop1;
}
//都是正數或者都是負數,且位數不一樣的時候
if((('-'!=atemp[0]&&'-'!=btemp[0])&&(lena!=lenb))||(('-'==atemp[0]&&'-'==btemp[0])&&(lena!=lenb)))
{
if(lena>lenb)
{
for(i=0,j=lenmax-1;j>=0;i++,j--)
a[i]=atemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=btemp[j];
}
if(lenb>lena)
{
for(i=0,j=lenmax-1;j>=0;i++,j--)
a[i]=btemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=atemp[j];
}
for(i=0,j=lenmin;i<=lenmax-lenmin-1;i++,j++)
b[j]='0';
if(('-'==atemp[0]&&'-'==btemp[0])&&(lena!=lenb))
{
b[lenmin-1]='0'; //不知道為什麼會這樣
lenmax-=1;
printf("-");
}
pd=1;
goto loop1;
}
//atemp是負數,btemp是正數的時候,且長度一樣的時候
if(('-'==atemp[0]&&'-'!=btemp[0])&&1==lena-lenb)
{
for(i=0,j=lenmax-1;j>=1;i++,j--)
a[i]=atemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=btemp[j];
pd=2;
goto loop2;
}
//atemp是正數,btemp是負數的時候,且長度一樣的時候
if(('-'==btemp[0]&&'-'!=atemp[0])&&1==lenb-lena)
{
for(i=0,j=lenmax-1;j>=1;i++,j--)
a[i]=btemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=atemp[j];
pd=2;
goto loop2;
}
//一正一負,且atemp是負的時候
if(('-'==atemp[0]&&'-'!=btemp[0])&&(1!=lena-lenb))
{
if(lena>lenb)
{
for(i=0,j=lenmax-1;j>=1;i++,j--)
a[i]=atemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=btemp[j];
for(i=0,j=lenmin;i<=lenmax-lenmin-1;i++,j++)
b[j]='0';
tl=1;
}
if(lenb>=lena)
{
for(i=0,j=lenmax-1;j>=0;i++,j--)
a[i]=btemp[j];
for(i=0,j=lenmin-1;j>=1;i++,j--)
b[i]=atemp[j];
for(i=0,j=lenmin-1;i<=lenmax-lenmin;i++,j++)
b[j]='0';
tll=1;
}
pd=2;
goto loop2;
}
//一正一負,且btemp是負的時候
if(('-'==btemp[0]&&'-'!=atemp[0])&&(1!=lenb-lena))
{
if(lena>=lenb)
{
for(i=0,j=lenmax-1;j>=0;i++,j--)
a[i]=atemp[j];
for(i=0,j=lenmin-1;j>=1;i++,j--)
b[i]=btemp[j];
for(i=0,j=lenmin-1;i<=lenmax-lenmin;i++,j++)
b[j]='0';
tll=1;
}
if(lenb>lena)
{
for(i=0,j=lenmax-1;j>=1;i++,j--)
a[i]=btemp[j];
for(i=0,j=lenmin-1;j>=0;i++,j--)
b[i]=atemp[j];
for(i=0,j=lenmin;i<=lenmax-lenmin;i++,j++)
b[j]='0';
tl=1;
}
pd=2;
goto loop2;
}
loop1: if(1==pd)
{
for(i=0;i<=lenmax-1;i++)
{
anb=((int)a[i])-48;
bnb=((int)b[i])-48;
temp=anb+bnb+jw[i];
if(10>temp)
{
c[i]=temp;
}
else
{
c[i]=temp%10;
jw[i+1]+=1;
if((i==lenmax-1)&&(0!=jw[lenmax]))
{
c[lenmax]=jw[lenmax];
lenmax+=1;
break;
}
}
}
for(i=lenmax-1;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
loop2:if(2==pd)
{
for(i=lenmax-1;i>=0;i--)
{
if(a[i]>b[i])
{
seta=1;
is=1;
break;
}
if(b[i]>a[i])
{
setb=1;
is=1;
break;
}
}
if(0==is)
{
printf("0\n");
exit(0);
}
if(1==tll)
lenmax+=1;
for(i=0;i<=lenmax-2;i++)
{
if((1==setb&&0==seta&&0==tl)||(1==seta&&0==setb&&1==tl))
{
anb=-(((int)a[i])-48);
bnb=((int)b[i])-48;
}
if((1==seta&&0==setb&&0==tl)||(1==setb&&0==seta&&1==tl))
{
anb=((int)a[i])-48;
bnb=-(((int)b[i])-48);
}
temp=anb+bnb+jw[i];
if(((-anb)==bnb)&&(0==jw[i])||(-anb<bnb))
{
c[i]=temp;
}
else
{
c[i]=temp+10;
jw[i+1]-=1;
}
}
lentemp=lenmax-2;
while(0==c[lentemp])
{
lentemp-=1;
}
if((1==seta&&0==setb&&0==tl&&1!=tll)||(1==setb&&0==seta&&(1==tl||1==tll)))
{
printf("-");
}
for(i=lentemp;i>=0;i--)
{
// if(0!=c[i])
// {
printf("%d",c[i]);
// }
}
printf("\n");
}
}
本程序全部自己寫的。
測試結果如下:
❺ 編程---加法計算器
第五行改為:
scanf( "%d %d", &a, &b ); // 注意輸入時,兩個數字之間要打一個空格。
你的程序主要問題有兩個。
一個簡單些,&a &b不要放在雙引號之內。
另一個比較隱蔽。你將兩個%d連用,那假設用戶輸入123,好么a是12呢,還是a是1,b是23呢。
實際上,用戶如果輸入123,那麼得到的結果是123都給了a,b沒有得到值
❻ c語言簡單加法
正確的代碼如下:
#include<stdio.h>
void main()
{
int a,b,c;
a=6;
b=7;
c=a+b;
printf("c=%d」,c);
}
在你的代碼中最後的輸出是錯誤的,從哪裡來的d,而且你要輸出的是c吧,就算是d你也沒有定義d,C語言的代碼一定要先定義再使用,把最後輸出的d改為c就可以了,還有就是標點符號要注意,不要寫錯,一定要注意,要仔細。
資料擴展
相應的可以寫出求加減乘除的代碼如下:
#include<stdio.h>
void main()
{
int a,b;
scanf("%d%d"&a,&b);
printf("%d ",a+b);
printf("%d ",a-b);
printf("%d
",a*b);
printf("%d ",a/b);
return 0;
}
❼ C語言編程 100以內整數加減法
srand(time(0));
inta[20];
for(inti=0;i<20;i++)
{
a[i]=rand()%100;
}
for(inti=10;i<20;i+=2)
{
if(a[i]<a[i+1])
{
intt=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
intscore=0;
for(inti=0;i<20;i+=2)
{
charc=i<10?'+':'-';
printf("%d%c%d=幾? ",a[i],c,a[i+1]);
intx;
scanf("%d",&x);
if((i<10&x=a[i]+a[i+1])|(i>=10&x=a[i]-a[i+1]))
{
score+=10;
cout<"回答正確"<<endl;
}
elsecout<"回答錯誤"<<endl;
}
switch(score)
{
case0:
case10:
case20:
case30:
case40:
case50:cout<<"要加油哦"<<endl;break;
case60:
case70:
case80:cout<<"真不錯哦"<<endl;break;
case90:cout<<"你真棒"<<endl;break;
case100:cout<<"酷斃了"<<endl;break;
default:;
}
❽ c語言編程!!計算字元串實現加法
int delete_sub_str(const char *str, const char *sub_str, char *result_str) {//認為 result_str長度足夠
int size1=strlen(str),size2=strlen(sub_str);
size_t i,j,n=0,k;
int *pi;
if(size1<size2){//長度不夠
pch=new char[size1+1];
for( i=0;i<=size1;i++)result_str[i]=str[i];
return 0;
}
pi=new int[size1/size2];//按最大可能分配pi
for(i=0;i<size1-size2;i++){//記錄子竄起始下標
if(str[i]==sun_str[0]){//判斷是否為子竄起始
for(j=1;j<size2;j++){
if(str[i+j]!=sub_str[j])break;
}
if(j==size2){
pi[n++]=i;
i=i+size2-1;
}
}//if
}//for
for(i=0,j=0,k=0;i<n;i++){//拷貝前n斷非子竄部分
for(;j<pi[i];j++,k++)result_str[k]=str[j];
j=p[i]+size2;
}
for(;j<size1;j++,k++)result_str[k]=str[j];//拷貝最後一部分非子竄
result_str[k]='\0;//尾部+0
delete[]pi;
return n;
}//delete