c语言存储多个数据,C语言中如何求数组真实存有数据的元素个数

这个是比较容易解决的,这是我把楼主的程序略加修改后的代码:

# include 

# include 

# include 

int main()

{

int a[100];

int n;

int i;

int len=0; //此行给len初始化;

scanf("%d",&n);

for(i=0;i

{

a[i] = i;

++len; /*此处算是这个程序里面求数组a实际长度的要点了,

每循环一次,len的值就加1(从初始值0开始加的),所以当循环n次后,len就记下了数组的长度!*/

}

//len = (sizeof(a)/sizeof(a[0]));因为只是为了让len表示数组a的值,所以为了求len不必采用这样的方法;

printf("%d\n",len);//加个换行符输出时看的明显些;

}

这是我自己运行的结果,楼主可以自己运行着看看,这样输出的结果就是数组a的实际长度了:

c3af3c62f1a5e2739e6b63939dc998ff.png

楼主还有什么疑问可以尽情问,还有,以后若是想求一个数组的实际长度,且这个数组是字符数组时,楼主只需要在头文件中包含#include后,就可以在求字符数组的实际长度时;用语句  int len;    //用于存储字符的实际长度;

len=strlen(a),其中a是要求的字符数组的名称,不必加下标;很方便的,希望能帮到楼主哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果要在 C 语言存储数据超过 long long int 类型所能表示的范围,可以使用高精度数学库,或者使用其他语言来实现,然后再用 C 语言调用。 例如,可以使用 GMP(GNU Multiple Precision Arithmetic Library)库来实现高精度数学运算,包括加法、减法、乘法、除法和取模等运算。 使用 GMP 库时,需要在程序包含头文件<gmp.h>,并使用 mpz_t 类型来表示高精度整数。 使用方法示例: ``` #include <stdio.h> #include <gmp.h> int main(void) { mpz_t a, b, c; mpz_init(a); mpz_init(b); mpz_init(c); // 读入高精度数 a 和 b mpz_inp_str(a, stdin, 10); mpz_inp_str(b, stdin, 10); // 计算 a+b 的值,并将结果存储在 c mpz_add(c, a, b); // 输出 c 的值 mpz_out_str(stdout, 10, c); putchar('\n'); mpz_clear(a); mpz_clear(b); mpz_clear(c); return 0; } ``` 在编译时,需要添加 -lgmp 选项,例如: ``` gcc example.c -o example -lgmp ``` 此外,还可以使用 Python、Java 等语言的高精度数学库,并在 C 语言使用相应的外部函数调用接口。 希望这些信息对你有帮助。 ### 回答2: 在C语言,使用long long int类型可以存储相对较大的整数数据,而当数据超出其表示范围时,可以采取以下策略来存储: 1. 使用大整数库:可以使用第三方库,如GMP(GNU Multiple Precision Arithmetic Library)来处理长整数。该库提供了高精度的整数运算函数,允许存储和操作任意大小的整数。 2. 自定义数据结构:可以使用自定义的数据结构来存储长整数。例如,可以使用数组来表示一个长整数,每个数元素存储个数字位,然后通过自定义的函数来实现相应的运算,如加法、减法、乘法和除法。 3. 分段存储:对于较大的整数,可以将它分解为多个部分进行存储。例如,可以使用数组或链表来存储整数的每一部分,然后通过对每个部分进行运算来获取最终结果。 4. 使用字符串存储:将长整数表示为一个字符串,可以使用字符数组存储它。然后,通过自定义的字符串操作函数来实现各种运算。 需要注意的是,使用这些方法进行高精度计算会带来性能上的损失,因为它们会占用更多的内存和运算时间。因此,在选择适当的存储方式时,需要权衡计算性能和所需内存空间之间的平衡。 ### 回答3: 在C语言,如果long long int的数据范围超出了可存储的范围,可以采取以下方法存储这些数据。 1. 使用字符串存储:可以将超出范围的long long int数据转换为字符串来存储。可以使用sprintf函数将long long int类型的数据格式化为字符串,并使用字符数组存储。 示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { long long int bigNum = 123456789123456789; char str[50]; // 定义一个足够大的字符数组存储转换后的字符串 sprintf(str, "%lld", bigNum); // 将bigNum转换为字符串并存储在str printf("Stored number: %s\n", str); return 0; } ``` 2. 使用数组存储:如果数据超出long long int的范围,可以考虑将数据拆分为多个部分进行存储,使用一个数组来存储这些部分。每个数元素存储一个范围内的值。 示例代码: ```c #include <stdio.h> #include <stdlib.h> #define MAX_ARRAY_SIZE 10 int main() { long long int bigNum = 123456789123456789; int array[MAX_ARRAY_SIZE]; // 定义一个足够大的整型数组存储数据 // 将bigNum拆分为多个部分存储数组 for (int i = 0; i < MAX_ARRAY_SIZE; i++) { array[i] = bigNum % 10; bigNum /= 10; } // 打印数组元素 printf("Stored number: "); for (int i = MAX_ARRAY_SIZE - 1; i >= 0; i--) { printf("%d", array[i]); } printf("\n"); return 0; } ``` 这些方法可以帮助我们存储超出long long int范围的数据。注意,当需要使用存储数据时,需要根据具体情况进行数据转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值