刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题二(共 15 分)

阅读下列说明和 C 函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。

【说明】

函数 isLegal(char*ipaddr)的功能是判断以点分十进制数表示的 iPV4 地址是否合法。参数 ipadddr 给出表示 iPV4 地址的字符串的首地址,串中仅含数字字符和“.”。若 iPV4 地址合法则返回1,否则反馈 0.判定伟合法的条件是:每个十进制数的值位于整数区间[0,25],两个相邻的树之间用“.”分隔,共 4 个数、3 个“.”。;例如,192.168.0.15、1.0.0.1 是合法的,192.168.1.256、1.1..1是不合法的。

【函数】

int isLegal (char*ipaddr)

int flag;

int cur Val; //curVal 表示分析出的一个十进制数

int decNum=0,dotNum=0; //decNum 用于记录十进制数的个数

//dotNum 用户记录点的个数

Char*p=()

for(;*p;p++) ﹛

curVal=0;flag=0

While (isdigit(*p))﹛ //判断是否伟数字字符

CurVal=()+*p-′0′;

()

flag=1;

if(curVal>255)﹛

return 0;

if (flag)﹛

()

﹜if(*p==′.′)

dotNum++;

if ()﹛

return 1;

return 0;


使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)ipaddr

(2)curval*10

(3)p++

(4)decNum++

(5)decNum==4 && dotNum==3


解析:

这是一个关于判断IPv4地址合法性的函数。根据题目描述和函数结构,我们可以逐步分析并填补空白。

1.(1)处需要填写的是函数参数ipaddr的地址,因为我们需要遍历这个地址指向的字符串。

2.(2)处表示在读取数字字符后,需要将当前值乘以10以便与前面的数字组合。例如,当读取到"19"时,第一次乘完后是19,第二次乘完后是190。所以填写curVal *= 10

3.(3)处是为了移动到字符串的下一个字符,所以填写p++

4.(4)处是为了记录十进制数的个数,每找到一个完整的十进制数就增加一次计数,所以填写decNum++

5.(5)处是判断条件,IPv4地址由4个十进制数组成,并且由3个点分隔,所以填写decNum == 4 && dotNum == 3

函数的流程大致是这样的:首先检查输入字符串的第一个字符是否为数字,如果是则继续读取并与之前的数字组合,同时增加十进制数的计数。如果遇到一个点".",则增加点的计数。最后,如果找到了四个十进制数和三个点,并且所有的十进制数都在0到255之间,那么返回1表示IP地址合法,否则返回0表示不合法。

创作类型:
原创

本文链接:试题二(共 15 分)阅读下列说明和 C 函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。【说

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share