C语言刷题
明天就要返校了emmm。。。期望这次二级C可以过吧{:10_266:} 寒假那个月做了50多套二级卷人都疯了(不要在意VC++这个版本{:10_245:} )
题目:
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是将a和b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串"32486"和"12345",在主函数中输出的函数值为44831。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#defineN9
longctod( char*s )
{ longd=0;
while(*s)
if(isdigit(*s)){
/**********found**********/
d=d*10+*s-__1__;
/**********found**********/
__2__;
}
returnd;
}
longfun( char*a, char*b )
{
/**********found**********/
return__3__;
}
void main()
{ chars1,s2;
do
{ printf("Inputstrings1 : "); gets(s1); }
while( strlen(s1)>N );
do
{ printf("Inputstrings2 : "); gets(s2); }
while( strlen(s2)>N );
printf("The result is:%ld\n", fun(s1,s2) );
}
由题意结合题目可发现开始虽定义了一个ctod()函数但是主函数中没有用,ctod()函数本身也不存在什么递归啊迭代啊之类的东西,那么ctod()函数只可能在fun()中被调用了
观察ctod()函数,发现是用于判断字符串中数字的函数,d用于从字符串中获得当前数字(主函数中用的gets())并依次后移最终变为字符串所对应的数字(每次运算当前数*10并将接下来的数作为末位填上),
为了使字符串转化为数字,第一空需要填'0'
第二空则相对简单,因为是依次获取字符串中的数,所以填s++
第三空则是前面讲的调用ctod()函数,将*a和*b两个字符串转化为数字后相加并作为返回值,填ctod(a)+ctod(b)
第一空填出来了后面的就轻而易举了{:10_285:} C二级难度比小甲鱼的课后作业小好多{:10_256:}
就是意义不明的知识点有些多 你是啥专业呢
页:
[1]