当前位置:首页 » 区块链知识 » 区块链c源代码

区块链c源代码

发布时间: 2021-07-06 14:31:52

1. c程序源代码

#include<stdio.h>
main()
{
int a[3];
int i,pass,hoad;
printf("shu ru san ge shuzi:");
scanf("%2d%2d%2d",&a[0],&a[1],&a[2]);
for(i=0;i<=2;i++)
printf("%4d",a[i]);
printf("\n");
for(pass=1;pass<=2;pass++)
for(i=0;i<=1;i++)
if(a[i]>a[i+1]){
hoad=a[i];
a[i]=a[i+1];
a[i+1]=hoad; }
for(i=0;i<=2;i++)
printf("%4d",a[i]);
printf("\n");
getch();
}

2. C语言或C++编写二维码的解码部分详细的源代码及说明

1、二维码有很多种标准,可以控制存储数据的信息量,也可以控制容错的数据量[使得部分污损的二维码可以被正常读取。通常的做法是调用二维码设计方提供的组件,如果是自己生成二维码,应该可以生成可以看起来很像的东西。

2、例程:

<pre name="code" class="cpp">int Fb_QrDisp(int iPenX,int iPenY,QRcode*pQRcode)

{

T_PixelDatasg_tOriginPixelDatas;

T_PixelDatasg_tZoomPixelDatas;

//intiZoom;

inti;

g_tOriginPixelDatas.iWidth= pQRcode->width;

g_tOriginPixelDatas.iHeight=pQRcode->width;

g_tOriginPixelDatas.iLineBytes=g_tOriginPixelDatas.iWidth;

g_tOriginPixelDatas.aucPixelDatas= pQRcode->data;

/*

if(pQRcode->version< = 1)

{

iZoom= 2;

}

else

{

iZoom= 2;

}

g_tZoomPixelDatas.iWidth = pQRcode->width*iZoom;

g_tZoomPixelDatas.iHeight=pQRcode->width*iZoom;

g_tZoomPixelDatas.iLineBytes=g_tZoomPixelDatas.iWidth;

g_tZoomPixelDatas.aucPixelDatas= malloc(g_tZoomPixelDatas.iWidth* g_tZoomPixelDatas.iHeight);

if(g_tZoomPixelDatas.aucPixelDatas== NULL)

{

printf("g_tZoomPixelDatas->aucPixelDatasmalloc failed ");

return-1;

}

PicZoom(&g_tOriginPixelDatas,&g_tZoomPixelDatas);

#if 0

printf("g_tZoomPixelDatas.iWidth=%d,g_tZoomPixelDatas.iHeight=%d ", g_tZoomPixelDatas.iWidth,g_tZoomPixelDatas.iHeight);

for(i=0;i<(g_tZoomPixelDatas.iWidth*g_tZoomPixelDatas.iHeight);i++)

{

printf("0x%x,",g_tZoomPixelDatas.aucPixelDatas[i]);

}

printf(" ");

#endif

*/

Disp_FixelPic(iPenX,iPenY,&g_tZoomPixelDatas);

return 0;

}

因为stmf429运行起来后内存不够,这里不用申请内存再扩充放大二维码数据的方法,而是直接描点。所以这里注释掉了放大部分。

3. 77、一个完整的C源程序是________。

答案选:B
源程序可以没有非主函数,一般c的第一个教程不是hello world的么就没有函数

4. 求编程高手用c语言编写链栈完整源代码

/****************************************************************************************
实现链栈各种基本运算的算法 *
编写程序实现链栈种基本运算,并在此基础上设计一个主程序完成如下功能:
1、 初始化栈
2、 判断栈是否为空
3、 依次进栈a,b,c,d,e元素。
4、 判断栈是否为空
5、 输出栈的长度
6、 输出从栈顶到栈底元素
7、 输出出栈序列
8、 判断栈是否为空
9、 释放栈/
*********************************************************************************************/
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#define OVERFLOW -2
#define ok 1
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKCREMENT 10 //增加分量
typedef struct{
char *base;
char *top;
int stacksize;//当前分配的空间
int lenght;
}SqStack; //Sqlist
/*********************************初始化栈*************************************/
int InitStack(SqStack &S)
{
S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));// 分配存储空间
if(!S.base) exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
S.lenght=0;
return 1;
}
/******************************************************************************/
/********************************判断栈是否为空******************************/
bool StackEmpty(SqStack&S){
if(S.top==S.base)return 1;
else
return 0;
}

/*****************************释放栈********************************/
int FreeStack(SqStack&S)
{

free(S.base);
S.top=S.base;
return ok;
}

/******************************************************************/
/*********************求出栈的长度*********************************/
int StackLenth(SqStack&S){
S.lenght=S.top-S.base;
return S.lenght;
}
/******************************************************************/
/**********************入栈*****************************************/
int Push(SqStack &S,char e){
if(S.lenght>=S.stacksize){
S.base=(char*)realloc(S.base,(S.stacksize+STACKCREMENT)*sizeof(char));//增加分配存储
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKCREMENT;
}
*S.top++=e;
S.lenght++;
return ok;
}
/**************************************************************/
/****************************出栈****************************/
char Pop(SqStack&S,char &e){
if(S.base==S.top)
return 0; //当栈为空时,返回错误
else
e=*--S.top;
S.lenght--;
return e;
}
/*************************显示*******************************/
void DispStack(SqStack S)
{
int i;

for(i=S.lenght;i>0;i--)
{
printf("%c",*(--S.top));
}
printf("\n");
}

//*******************主函数************************************/
int main(){
int i;
SqStack Lst;
char a,b,c,d,e,f;
char g;
printf("初始化栈:\n");
InitStack(Lst);
printf("依次进栈元素a,b,c,d,e,f\n");
cin>>a>>b>>c>>d>>e>>f;
Push(Lst,a);
Push(Lst,b);
Push(Lst,c);
Push(Lst,d);
Push(Lst,e);
Push(Lst,f);
printf("打印\n");
DispStack(Lst);

int l=StackLenth(Lst);
cout<<"栈的长度为"<<l<<endl;
printf("出栈序列:");
for(i=1;i<=6;i++)
{
Pop(Lst,g);
printf("%c ",g);
}
printf("\n");
printf("栈为:%s\n",(StackEmpty(Lst)?"空":"非空"));
printf("释放栈\n");
FreeStack(Lst);
return 0;
}
可以正确运行,你看下可以不??希望能帮到楼主! 我用visual C++6.0编译的,现在主流都是用这个,不好意思,WINTC我没有用过,楼主可以自己改吗??
额,你们老师太不人道了,WINTC好像在后面得加一个getch()吧??这个软件我没有用过

5. 给出一种非对称加密算法以及它的的C源代码。

#include <iostream.h>
#include <math.h>
#include <stdio.h>

typedef int Elemtype;
Elemtype p,q,e;
Elemtype fn;
Elemtype m,c;
int flag = 0;
typedef void (*Msghandler) (void);
struct MsgMap {
char ch;
Msghandler handler;
};
/* 公钥 */
struct PU {
Elemtype e;
Elemtype n;
} pu;
/* 私钥 */
struct PR {
Elemtype d;
Elemtype n;
} pr;
/* 判定一个数是否为素数 */
bool test_prime(Elemtype m) {
if (m <= 1) {
return false;
}
else if (m == 2) {
return true;
}
else {
for(int i=2; i<=sqrt(m); i++) {
if((m % i) == 0) {
return false;
break;
}
}
return true;
}
}
/* 将十进制数据转化为二进制数组 */
void switch_to_bit(Elemtype b, Elemtype bin[32]) {
int n = 0;
while( b > 0) {
bin[n] = b % 2;
n++;
b /= 2;
}
}
/* 候选菜单,主界面 */
void Init() {
cout<<"*********************************************"<<endl;
cout<<"*** Welcome to use RSA encoder ***"<<endl;
cout<<"*** a.about ***"<<endl;
cout<<"*** e.encrypt ***"<<endl;
cout<<"*** d.decrypt ***"<<endl;
cout<<"*** s.setkey ***"<<endl;
cout<<"*** q.quit ***"<<endl;
cout<<"**********************************by*Terry***"<<endl;
cout<<"press a key:"<<endl;
}
/* 将两个数排序,大的在前面*/
void order(Elemtype &in1, Elemtype &in2) {
Elemtype a = ( in1 > in2 ? in1 : in2);
Elemtype b = ( in1 < in2 ? in1 : in2);
in1 = a;
in2 = b;
}
/* 求最大公约数 */
Elemtype gcd(Elemtype a, Elemtype b) {
order(a,b);
int r;
if(b == 0) {
return a;
}
else {
while(true) {
r = a % b;
a = b;
b = r;
if (b == 0) {
return a;
break;
}
}
}

}
/* 用扩展的欧几里得算法求乘法逆元 */
Elemtype extend_euclid(Elemtype m, Elemtype bin) {
order(m,bin);
Elemtype a[3],b[3],t[3];
a[0] = 1, a[1] = 0, a[2] = m;
b[0] = 0, b[1] = 1, b[2] = bin;
if (b[2] == 0) {
return a[2] = gcd(m, bin);
}
if (b[2] ==1) {
return b[2] = gcd(m, bin);
}
while(true) {
if (b[2] ==1) {
return b[1];
break;
}
int q = a[2] / b[2];
for(int i=0; i<3; i++) {
t[i] = a[i] - q * b[i];
a[i] = b[i];
b[i] = t[i];
}
}
}
/* 快速模幂算法 */
Elemtype molar_multiplication(Elemtype a, Elemtype b, Elemtype n) {
Elemtype f = 1;
Elemtype bin[32];
switch_to_bit(b,bin);
for(int i=31; i>=0; i--) {
f = (f * f) % n;
if(bin[i] == 1) {
f = (f * a) % n;
}
}
return f;
}
/* 产生密钥 */
void proce_key() {
cout<<"input two primes p and q:";
cin>>p>>q;
while (!(test_prime(p)&&test_prime(q))){
cout<<"wrong input,please make sure two number are both primes!"<<endl;
cout<<"input two primes p and q:";
cin>>p>>q;
};
pr.n = p * q;
pu.n = p * q;
fn = (p - 1) * (q - 1);
cout<<"fn = "<<fn<<endl;
cout<<"input e :";
cin>>e;
while((gcd(fn,e)!=1)) {
cout<<"e is error,try again!";
cout<<"input e :";
cin>>e;
}
pr.d = (extend_euclid(fn,e) + fn) % fn;
pu.e = e;
flag = 1;
cout<<"PR.d: "<<pr.d<<" PR.n: "<<pr.n<<endl;
cout<<"PU.e: "<<pu.e<<" PU.n: "<<pu.n<<endl;
}
/* 加密 */
void encrypt() {
if(flag == 0) {
cout<<"setkey first:"<<endl;
proce_key();
}
cout<<"input m:";
cin>>m;
c = molar_multiplication(m,pu.e,pu.n);
cout<<"c is:"<<c<<endl;
}
/* 解密 */
void decrypt() {
if(flag == 0) {
cout<<"setkey first:"<<endl;
proce_key();
}
cout<<"input c:";
cin>>c;
m = molar_multiplication(c,pr.d,pr.n);
cout<<"m is:"<<m<<endl;
}
/* 版权信息 */
void about() {
cout<<"*********************************************"<<endl;
cout<<"*** by Terry ***"<<endl;
cout<<"*** right 2010,All rights reserved by ***"<<endl;
cout<<"*** Terry,technology supported by weizuo !***"<<endl;
cout<<"*** If you have any question, please mail ***"<<endl;
cout<<"*** to [email protected] ! ***"<<endl;
cout<<"*** Computer of science and engineering ***"<<endl;
cout<<"*** XiDian University 2010-4-29 ***"<<endl;
cout<<"*********************************************"<<endl;
cout<<endl<<endl;
Init();
}
/* 消息映射 */
MsgMap Messagemap[] = {
,
,
,
,

};
/* 主函数,提供循环 */
void main() {
Init();
char d;
while((d = getchar())!='q') {
int i = 0;
while(Messagemap[i].ch) {
if(Messagemap[i].ch == d) {
Messagemap[i].handler();
break;
}
i++;
}
}
}

本程序由520huiqin编写,详情见参考资料

6. 我如果想入门区块链技术,应该学习哪些编程语言

Go语言+区块链培训课程:
为什么要学习GO语言,GO的优势是什么?
1、 Go有什么优势
Go的优势
1:性能
2:语言性能很重要
3:开发者效率&不要过于创新
4:并发性&通道
5:快速的编译时间
6:打造团队的能力
7:强大的生态系统
8:GOFMT,强制代码格式
9:gRPC 和 Protocol Buffers
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。

7. C源程序代码编写

#include <stdio.h>
#include <math.h>

int main(void)
{
int number;
scanf("%d",&number);

printf("number: %d absolute value: %d\n", number, abs(number));
return 0;
}

就可以从外面输入你要的数啦
只是改用scanf的格式输入

这是因为在计算机中,你设置一个变量,会开辟一定长度字节的空间,这个长度是有限的,那么你的数也是有限的。对于int类型,数值的范围是-2^15=-32768至2^15-1=32767,如果你超过这个数据范围,就会溢出,具体说是你输入32768就会被当作-32768处理,从正数这边溢出就到了最小的负数。你可以去看看计算机如何表示整数的(以二进制补码形式)。对于你日常编程的应用就注意不要输入会溢出的数据就可以了(一般你提交程序到什么在线运行的平台上或者给老师什么的,他们不会输入溢出的数的;不同的系统的同一数据类型的范围也不尽相同,但都有溢出的现象存在;如果你希望处理更大的数,可以改为long型,范围是-2^31至2^31-1)

8. 求C语言单链表 源代码

#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
usingnamespacestd;
intpow(inti,intj)
{
intsum=1;
for(intk=1;k<=j;k++)
{
sum*=i;
}
returnsum;
}
intjin_16(char*number)
{
char*p=number;
intsum=0;
intlen=strlen(number);
inti=0;
intlone;
while(*p)
{
if(toascii(*p)>=65&&toascii(*p)<=70)
{
lone=toascii(*p)-55;
}
else
{
lone=*p-'0';
}
sum+=pow(16,len-i-1)*lone;
i++;
*p++;
}
returnsum;
}
intjin_1_10(char*number,intN)
{
char*p=number;
intsum=0;
intlen=strlen(number);
inti=0;
intlone;
while(*p)
{
lone=*p-'0';
sum+=pow(N,len-i-1)*lone;
i++;
*p++;
}
returnsum;
}
intis_reverse(char*number)
{
intlen=strlen(number);
char*save_number=(char*)malloc(sizeof(char)*(strlen(number)));
strcpy(save_number,number);
reverse(save_number,save_number+len-1);
if(strcmp(save_number,number)==0)
{
returntrue;
}
}
intreturn_is_16(char*number)
{
char*p=number;
while(*p)
{
if(toascii(*p)>=65&&toascii(*p)<=91)
{
returntrue;
}
*p++;
}
}
intmain()
{
intN;
cin>>N;
getchar();
char*number=(char*)malloc(sizeof(char)*32);
gets(number);
intnum;
if(N==16)
{
num=jin_16(number);
}
else
{
num=jin_1_10(number,N);
}
intcount_step=0;

cout<<"STEP="<<count_step;
return0;
}

9. c源代码哪里有下载

http://www.softhy.net/
这里有很多啊,什么源代码都有
http://www.newasp.net/code/dl003185
这里下C的源代码

10. 在哪里可以找到C语言标准库的实现源代码

Linux下的glic库的源码链接:
http://ftp.gnu.org/gnu/glibc/,你可以下载最新版本的glibc-2.24.tar.gz这个压缩文件,在Windows系统下直接用WinRAR解压即可,如果在Linux系统下用命令行解压的话,命令如下:tar -xzvf glibc-2.24.tar.gz。

热点内容
okcoin比特币体现 发布:2025-06-24 16:35:01 浏览:491
1688比特币 发布:2025-06-24 16:27:04 浏览:949
eth今年最高价格多少 发布:2025-06-24 16:00:20 浏览:882
跨境金融区块链服务平台试点工作总结 发布:2025-06-24 15:51:31 浏览:594
朋友圈进入网站投比特币 发布:2025-06-24 15:35:24 浏览:138
深圳区块链团队 发布:2025-06-24 15:01:52 浏览:793
币圈交易所谈价 发布:2025-06-24 14:55:26 浏览:228
上海交通大学区块链相关课程 发布:2025-06-24 14:48:17 浏览:21
唐山区块链产业园施工 发布:2025-06-24 14:46:10 浏览:944
河南焦重矿机 发布:2025-06-24 14:30:23 浏览:566