c语言 用链表实现 超长整型加减法 (doing)

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 struct dulnode
 5 {
 6     int data;
 7     struct dulnode *next,*prev;
 8 };
 9 typedef struct dulnode DULNODE;
10 typedef DULNODE * DULINKLIST;
11 int main()
12 {
13     DULNODE fuc_creat(DULNODE NUM);
14     int fuc_print(DULNODE NUM);
15     int fuc_compe(DULNODE NUM1,DULNODE NUM2);
16     int fuc_plus(DULNODE NUM1,DULNODE NUM2);
17     int fuc_sub(DULNODE NUM1,DULNODE NUM2);
18     DULNODE NUM1={NUM1.data=0};
19     NUM1=fuc_creat(NUM1);
20     fuc_print(NUM1);
21     return 1;
22 }
23 DULNODE fuc_creat(DULNODE NUM)
24 {
25     DULINKLIST p,q;
26     int i=0,block=0,j=1;
27     int temp[100];
28     char str[101];
29     gets(str);
30     q=&NUM;
31     for(i=0;i<100&&str[i]!=‘\0‘;i++)
32     {
33         if(str[i]<‘0‘||str[i]>‘9‘)printf("input error");
34         temp[i]=str[i]-‘0‘;
35 //        printf("test_1 %d\n",temp[i]);
36     }
37     for(i=i-1;i>-1;i--)
38     {
39         q->data=q->data+j*temp[i];
40         block++;
41         j=j*10;
42         if(block%4==0)
43         {
44             p=(DULNODE *)malloc(sizeof(DULNODE));
45             p->data=0;
46             p->next=q;
47             p->prev=&NUM;
48             q->prev=p;
49             NUM.next=p;
50             q=p;
51             j=1;
52         }
53 //        printf("test_2%d\n",q->data);
54     }
55     return NUM;
56 }
57 int fuc_print(DULNODE NUM)
58 {
59     printf("test_1 print\n");
60     DULINKLIST q;
61     q=NUM.next;
62     do
63     {
64         printf("%d",q->data);
65         q=q->next;
66     }while(q==&NUM);
67     printf("test_2 print\n");
68     return 1;
69 }

vim+gcc+gdb大法好;linux下编程妙。

插播个连接:vim命令+gdb命令http://pan.baidu.com/s/1pJKChHT 文件来自百度文库,可自行查找

1:学会调试。自从学了这招,再也不在程序里插播printf(test")代码啦!

2:malloc函数 头文件<stdlib.h>  使用 p=(int */*要返回的类型,强制转换给p*/)malloc(n/*分配几个*/*sizeof(int/*分配给p的长度*/))。malloc开辟的空间会使p指向新开辟的地址,从而失去原来的指向,有必要的话请提前保留p的信息。代码44行

3:函数类型定义 定义为int型则该函数return的值为该类型。代码23定义,代码55返回,代码19接收返回值。

4:结构体指针指向结构体内数据  q->data   (*q).data推荐前面那个写法。

5:结构体赋初值 可以写构造函数(c++?)或者在定义的时候直接赋值,每个元素间用 逗号 连接 struct delnode NUM1={NUM1.data=0} 代码18行

6:软件工程思维  需要提前想好软件大体怎么写,什么函数实现什么功能。likes 吾等弱鸡状态下,更需如此。建议先写main函数,这样调试时省力。

时间: 2024-12-19 22:30:59

c语言 用链表实现 超长整型加减法 (doing)的相关文章

[日常] Go语言圣经--作用域,基础数据类型,整型

go语言圣经-作用域 1.一个声明语句将程序中的实体和一个名字关联,比如一个函数或一个变量 2.一个变量的生命周期是指程序运行时变量存在的有效时间段;声明语句的作用域对应的是一个源代码的文本区域,它是一个编译时的属性 3.句法块是由花括弧所包含;我们可以把块(block)的概念推广到包括其他声明的群组,这些声明在代码中并未显式地使用花括号包裹起来,我们称之为词法块. 4.全局作用域 包级语法域 源文件级的作用域 局部作用域 函数级的作用域 5.从最内层的词法域向全局的作用域查找.内部的会覆盖外部

【c语言】把一个长整型给一个字符指针

// 把一个长整型给一个字符指针,修改的时候只修改了一个字节,结果会是一个很大的随机数 // 并不能通过这种方式给长整型赋值1 #include <stdio.h> void VarInit(unsigned char* pucArg) { *pucArg = 1; return; } int main() { unsigned long ulGlobal; VarInit((unsigned char*)&ulGlobal); printf("%lu\n", ul

[C]基本数据类型:整型(int)用法详解

1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整型. int代表有符号整数,也就是说,用int声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数.标准规定int的最小取值范围是-32767到32767.int的取值范围因机器而异,但是一定要大于或者等于-32767到32767.一般来说,int占用一个字的内存空间.因此,字长为16位(B

基于 CPython 解释器,为你深度解析为什么Python中整型不会溢出

前言 本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后,统一使用了长整型.这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型...因此python就降低其他行业的学习门槛了. 那么,不溢出的整型实现上是否可行呢? 不溢出的整型的可行性 尽管在 C 语言中,整型所表示的大小是有范围的,但是 python 代

C语言---整型字符串转换

C语言提供了几个标准库函数,能够将随意类型(整型.长整型.浮点型等)的数字转换为字符串.下面是用itoa()函数将整数转 换为字符串的一个样例: # include <stdio.h>    # include <stdlib.h> void main (void)    {    int num = 100;    char str[25];    itoa(num, str, 10);    printf("The number ’num’ is %d and the

C语言的整型溢出问题(转)

整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件.在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码. 什么是整型溢出 C语言的整型问题相信大家并不陌生了.对于整型溢出,分为无符号整型溢出和有符号整型溢出. 对于unsigned整型溢出,C的规范是有定义的——“溢出

【C语言】整型溢出和整型提升

什么是整型溢出: C语言的整型问题相信大家并不陌生了.对于整型溢出,分为无符号整型溢出和有符号整型溢出. 对于unsigned整型溢出,C的规范是有定义的--"溢出后的数会以2^(8*sizeof(type))作模运算",也就是说,如果一个unsigned char(1字符,8bits)溢出了,会把溢出的值与256求模.例如: unsigned char x = 0xff; printf("%d\n", ++x); 上面的代码会输出:0 (因为0xff + 1是25

c语言中指向整型指针的指针的理解

1 /************************************************************************* 2 > File Name: ptr_ptr_int.c 3 > Author: Mr.Yang 4 > Purpose:演示指向整型的指针的指针 5 > Created Time: 2017年06月03日 星期六 18时34分58秒 6 **********************************************

c语言基础-变量(整型)

一.整型变量 类型 关键字 取值范围 存储单元字节数(非固定) 输出 有符号整型 [signed] int -2147483648~2147483647 4 %d 无符号整型 unsigned [int] 0~4294967295 4 %u 有符号短整型 [signed] short [int] -32768~32767 2 %h 无符号短整型 unsigned short [int] 0~65535 2 %hu 有符号长整型 [signed] long long [int] -21474836