1. c语言中怎样输入一个很大的整数
可以利用字符数组来存放整数的各位数值,即将整数当成一串字符来输入。
如果要输入12345678901234567890,则定义一个char型数组a[20],将用户输入的整数当成一串字符存入字符数组a中。
具体实现方法可以参考如下程序段:
chara[20];
scanf("%s",a);//输入12345678901234567890,即可将该整数输入到字符数组a当中
//则数组a中各元素值为a[0]='1',a[1]='2',a[2]='3',.......,a[19]='0'
//在进行运算的时候将字符转换为数字即可(即a[i]-'0')
2. 在C语言中将一个很大的正整数赋值给一个int类型变量a,输出a时有时会显示负值,为何
在不同的C系统中,int有不同的表示范围。
32位(4字节)的int,它可以表示的数字范围是-2147483648~+ 2147483647,共可表示4294967296个不同的数。
这是因为它有点像我们用(每个档位上只可以表示0~9)的算盘。假如我们的一个算盘有4个档位,它能表示从0~9999共10000个不同的数字。当我们要把比9999更大的数字存放到算盘上时,走出的部分就“丢失”了。如果要存的数字是12345,按“老规矩”存放完毕后,读取算盘上的数字时,由于数据发生了丢失,只能读到2345。这是由于12345-10000=2345。
再来看计算机里的int,如果我们要把2147483648存入到int变量中时,由于超出了范围,就发生了丢失。读取时,就变成了2147483648-4294967296=-2147483648了。
其它更大的数字,所变成的负数大小,也是这样的规律(都是减去了4294967296或它的倍)。
3. c语言编程:输入一个很大的整数n(n<100),输出n各位数字之和 ,利用字符串实现
思路:输入字符串,从字符串的第一个位置开始依次把每个数字字符转成整数,并计算其累加和。
参考代码:
#include"stdio.h"
#include"string.h"
intmain(){
chara[100];
inti,sum=0;
gets(a);
for(i=0;a[i]!='