㈠ 用c語言實現超長整數的加法運算
#include "stdio.h"
int sum(int a[],int b[],int c[])
{
int i=0,j=0,f=0;
for(;i<21;i++)
{
j=a[i]+b[i]+j;
if(j!=0) f=i;
c[i]=j%10000;
j=j/10000;
}
c[i]=j;
return f;
}
void get(int a[])
{
int n,i,j;
scanf("%d",&n);
j=(n-1)/4;
switch (n%4)
{
case 3:scanf("%3d",&a[j]);break;
case 2:scanf("%2d",&a[j]);break;
case 1:scanf("%1d",&a[j]);break;
case 0:scanf("%4d",&a[j]);break;
}
for(i=j-1;i>=0;i--)
scanf("%4d",&a[i]);
}
void main()
{
static int a[20],b[20],c[21],i,n,f;
char d[80];
get(a);
get(b);
f=sum(a,b,c);
for(i=f;i>=0;i--)
printf("%4d",c[i]);
}
㈡ C語言OJjzxx第1100題怎麼做
考慮用一個數組存儲所有的質數,然後將質數標記,接著在num數組中從頭到尾尋找符合條件的數,這里按式子算出來之後直接看是否標記為質數,若不是,直接跳過,若是,按從小到大輸出。
#include<stdio.h>
#include<math.h>
int num[100];
bool appear[1000] = {0};
bool isprime(int a)//篩法
{
for(int i = 2;i <= sqrt(a);++i)
{
if(a % i == 0)return 0;
}
return 1;
}
int cmp(int a, int b)//比較函數
{
return a < b;
}
int main()
{
int j = 1;
for(int i = 2;i <= 100;++i)
{
if(isprime(i))
{
num[j] = i;
appear[num[j]] = 1;
++j;
}
}
for(int i = 1;i < j;++i)
{
for(int l = i;l < j;++l)
{
if(!appear[(num[l] + num[i]) >>1])continue;//>>是右移運算符,相當於/2
if((num[l] + num[i]) % 2)continue;
int a = num[l], b = num[i], c = (num[l] + num[i]) >>1;
if(cmp(a, b))
{
if(cmp(b, c))
printf("%d %d %d\n", a, b, c);
if(cmp(c, b))
if(cmp(a, c))
{
printf("%d %d %d\n", a, c, b);
}
if(cmp(c, a))
{
printf("%d %d %d\n",c, a, b);
}
}
if(cmp(b, a))
{
if(cmp(a, c))
printf("%d %d %d\n", b, a, c);
if(cmp(c, a))
if(cmp(b, c))
{
printf("%d %d %d\n", b, c, a);
}
if(cmp(c, b))
{
printf("%d %d %d\n",c, b, a);
}
}
}
}
return 0;
}
㈢ C語言怎麼進行加法計算
#include"stdio.h"
voidmain()
{
inta,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d ",c);
getch();
}
㈣ 用C語言編程:1000位以內的正整數的加法運算
聲明兩個能容納1000位十進制數的char型數組存儲輸入數字字元串,以長的做被加數和結果,短的長度控制加法循環次數。在加法過程中判斷和處理進位。舉例代碼如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"string.h"
intmain(void){
chara[1002]={'0'},b[1002]={'0'},*pl=a,*ps=b;
inti,j,la,lb;
while(1){//保證輸入是正確的
printf("Inputa&b(length<=1000)... ");
scanf("%[1234567890]%[1234567890]",a+1,b+1);//最前面留1位做進位
if((la=strlen(a))<1002&&(lb=strlen(b))<1002)
break;
printf("Error,redo:");
}
if(la<lb){//找出長的做被加數和結果
ps=a,pl=b;
j=la,la=lb,lb=j;
}
for(i=lb-1,j=la-1;i>0;i--,j--)//從末位向前對應加
if((pl[j]+=ps[i]-'0')>'9')//某位>'9'則處理進位
pl[j]-=10,pl[j-1]++;
for(;j>0;j--)//若被加數有進位則繼續做完
if(pl[j]>'9')
pl[j]-=10,pl[j-1]++;
printf("Theresultis%s ",pl[0]=='1'?pl:pl+1);//有進位則第0位輸出
return0;
}