c语言编程基础题

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:06:55
#include <stdio.h>
#include <string.h>
void main()
{
int i;
char acNew[20];
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
printf("%d\n", strlen(acNew));

return;
}

这道题答案多少?为什么?
A 0 B 10 C 11 D不确定
这道题选D,但是我想知道为什么?

(1)这里涉及到 strlen函数的用法,它是用来计算一个字符串长度的,遇到第一个“\0”标识符便会停止计数。
(2)你的这个程序
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
这里把字符0送到axNew[0:9]。但是axNew[10]没放\0,即从地10 个元素起,都是不定的元素。而strlen这个函数是遇到\0才会停止计数的。如果字符串总没有\0它就可能算到定义空间之外去。
所以你这个程序的结果是不可预测的。只有将\0赋给数组元素最后一个才会得到正确的字符串长度。

10

我把for改成i<20,答案是22

改成i<15,答案是18.

你好,你是不是把程序写错了呀,我觉得应该是:
#include <stdio.h>
#include <string.h>
void main()
{
int i;
char acNew[20];
for(i = 0; i < 10; i++)

acNew[i] = '0';
acNew[i] = '\0';

printf("%d\n", strlen(acNew));

return;
}
答案是10.
不然的话,照你那样写的话,程序本身就有问题呀,字符串没有结束标志
如还有问题的话,请留言

11
因为字符串是以字符‘\0’为结束标志的
它也占用一个字节
应该为11,说10是错的

答案如 A3630623 所说,11:20这之间的值是不确定的,strlen的原型为extern int strlen(char *s);该函数计算字符串s的(unsigned int型)长度,不包括结束符NULL。