㈠ 用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;
}