导航:首页 > 网络数据 > c语言处理大数据

c语言处理大数据

发布时间:2021-12-03 06:57:20

① C语言用数组存储大型数据的算法

楼主一定懂c++吧?c++标准库里面有一个模板类叫
bitset<>
专门用来做位操作的。
你的问题用这个可以高效的解决,建立一个足够大的空间,比如8000个位
bitset<8000>
然后就简单了,乘法函数把乘数转化成bitset<32>类型的对象(用乘数直接初始化代表乘数的bitset<32>对象)然后用位运算符把被乘数(那个bitset<8000>类型的对象)按位右移,(一个10进制数右移一次相当于乘10,一个2进制数右移一次相当于乘2;乘数中,二进制位如果知道它是从右数第n位,那么就把被乘数向右移动n-1位就完成了乘法,然后再做下一个二进制位的乘法,直到被乘数中所有的2进制位都被使用过为止)。做完了每32位2进制位转化成一个unsigned long,存储在一个链表或者数组(怀疑空间不够,内存里很有可能没有这么大的连续空间)中,如果按顺序逐个输出就是问题的结果。
我觉得这个方法比2楼的高效。
如果你不想使用c++标准库……那也可以考虑用c中的位域,也支持位操作。不过远没有前面的方便,很多操作都要自己做,比如最基本的你必须有一个适合乘法操作的动态增长的位域组成的链表。而且即使这样还不一定高效。

……写完了才看的3楼,3楼就做得很好了。

② c语言处理文件里的大数据

只能分块处理了,读入一块、处理一块、存储一块,数据库就是这么干的。

③ c语言文件处理:大数据排序,我知道用ftell,fwrite...归并排序,但如何实现

如果你不想把硬盘搞坏,不要直接操作文件读写排序,大数据而且速度也会很慢。
建议把文件数据读入到动态分配内存,再进行数据排序,排序完成后,再写入到文件,这样做速度性能快。按你代码那样不停读写硬盘来实现排序,是非常不好的方式,因为硬盘是比较慢的设备,导致程序排序起来非常慢,频繁读写硬盘对硬盘寿命也有影响。
排序方法有很多种,快速排序在大数据排序方面性能比较理想。

④ C语言读取大数据文件以及数据组装

我知道一个大数据的类型:int64。 用来定义数据的可以试是比较大的。

⑤ C语言基础,大数据的输入和输出

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX101
intcheck(char*a){
inti,n,k=1;
n=strlen(a);
for(i=0;i<n;i++)
(a[i]>'9'||a[i]<'0'){
k=0;
break;
}
returnk;
}
intplus(char*a,char*b,int*s){
inti,j,n,m,t,k=0;
//printf("%s %s ",a,b);
i=strlen(a)-1;
j=strlen(b)-1;
t=0;
while(i>=0&&j>=0){
t=t+a[i--]-'0'+b[j--]-'0';
s[k++]=t%10;
t=t/10;
}
if(t&&(i!=j))
s[k]=t;
if(t&&(i==j))
s[k++]=t;
while(i>=0){
s[k]+=a[i--]-'0';
k++;
}
while(j>=0){
s[k]+=b[j--]-'0';
k++;
}
for(i=k-1;i>=0;i--){
printf("%d",s[i]);
}
printf(" ");
returnk;
}
intmain(intargc,char*argv[]){
chara[MAX],b[MAX];
intc[MAX+2]={0};
scanf("%s%s",&a,&b);
//printf("%s %s ",a,b);
if(check(a)&&check(b))
plus(a,b,c);
else
printf("error ");
return0;
}

⑥ 如何使用C语言实现大数据体的动态读取与处理

在内存中开辟两个缓存区,大小?比如每个缓存32M,然后将数据读入输入缓存处理版,处理后的结果送输权出缓存
这里的关键问题是如何对缓存进行管理?总体思路是,当缓存中有数据时,则取数据进行处理,处理好后放输出缓存,同时还必须检测,当输出缓存数据快满时,能够及时将数据送入硬盘。。。

上面是大体思路,实际中,一般运用多线程处理这种情况,即一个线程负责管理输入缓存,一个线程负责管理输出缓存,第三个线程负责数据处理。。。具体管理策略有很多,你需要综合各种因素(比如时间宽余度等)来决定。。。

⑦ 用C语言如何实现大数据的加法,且是包括整数和小数的运算

刚写的 看看符合你要求不

#include<stdio.h>
#include<string.h>
typedefstruct
{
inta[200];
intb[200];
}NUM;
voidformat_num(NUM*n,char*str)
{
char*p_dot=NULL;
char*p;
inti=0;
memset(n,0,sizeof(*n));
for(p=str;*p;p++)
if(*p=='.')break;
if(*p)p_dot=p;

p--;
while(p>=str)
{
n->a[i++]=*p---'0';
}
p=p_dot;
if(p==NULL)return;
i=0;
p++;
while(*p)
n->b[i++]=*p++-'0';
}

voidprint_num(NUM*n)
{
inti,j;
for(i=sizeof(n->a)/sizeof(n->a[0])-1;i>=0;i--)
if(n->a[i])break;
if(i>=0)
for(;i>=0;i--)
printf("%d",n->a[i]);
elseprintf("0");
for(i=sizeof(n->b)/sizeof(n->b[0])-1;i>=0;i--)
if(n->b[i])break;
if(i>=0)
{
printf(".");
for(j=0;j<=i;j++)
printf("%d",n->b[j]);
}
}

voidadd(NUM*a,NUM*b,NUM*c)
{
intt=0;
inti;
for(i=sizeof(a->b)/sizeof(a->b[0])-1;i>=0;i--)
{
t+=a->b[i]+b->b[i];
c->b[i]=t%10;
t/=10;
}
for(i=0;i<sizeof(a->a)/sizeof(a->a[0]);i++)
{
t+=a->a[i]+b->a[i];
c->a[i]=t%10;
t/=10;
}
}

intmain()
{
charsa[100],sb[100];
NUMa,b,c;
scanf("%s%s",sa,sb);
format_num(&a,sa);
format_num(&b,sb);
print_num(&a);
printf("+");
print_num(&b);
printf("=");
add(&a,&b,&c);
print_num(&c);
printf(" ");

return0;
}

⑧ C语言大数据问题

给你提个思路吧,这种大数据都必须用数组来做的。把数字直接定内义成数组,然后将容转换规则写成代码,而不是直接用取余或取整来做。我给你上传一个大数加法的代码,给你些启发吧。想要代码可以先采纳我,然后我给你写一个进制转换的代码。你这分太少,多些我会直接给你写个代码的。

⑨ 怎么用c语言处理大数据

只要内存够大,可以读取2万行数据的,我上次写了个程序读取了240万条数据到内存之中。
你只要用getline函数,和strtok函数配合使用就行了,只能读取6000行数据可能是你程序写的有问题。

⑩ 用C语言实现求一个大数据如(2的63次方)的绝对值

整数:输抄入-2^63 ~ +2^63数据并取绝对值
unsigned long long int x;
scanf("%lld",&x); if ( x<0 ) x=-x;
printf("%lld",x);
如果是浮点数精度只能达到16位了。

阅读全文

与c语言处理大数据相关的资料

热点内容
韩国伦理片电影免费观看国语版 浏览:67
水针工艺流程图cad源文件 浏览:812
iphone5频率 浏览:326
计算机网络技术出来做什么工作 浏览:733
少儿编程有什么区别 浏览:780
建设网站只有网页怎么办 浏览:219
穿越长征之红星战将txt 浏览:560
无法返回桌面怎么找桌面的文件 浏览:527
刀库650怎么编程 浏览:387
福安电影院今日电影 浏览:816
韩国古装电影推荐 浏览:808
穿越成李世民的孙子 浏览:508
hai chi tai bao chung 浏览:553
oa系统密码忘记 浏览:527
奥维高清卫星地图配置文件下载 浏览:921
三星s8系统不需要的文件 浏览:489
找一本小说主角叫赵无极 浏览:717
质量数据统计特征量有哪些 浏览:725
win10用户不信任 浏览:13

友情链接