马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
明天就要返校了emmm。。。期望这次二级C可以过吧 寒假那个月做了50多套二级卷人都疯了
(不要在意VC++这个版本 )
题目:
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是将a和b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串"32486"和"12345",在主函数中输出的函数值为44831。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 9
long ctod( char *s )
{ long d=0;
while(*s)
if(isdigit(*s)) {
/**********found**********/
d=d*10+*s-__1__;
/**********found**********/
__2__;
}
return d;
}
long fun( char *a, char *b )
{
/**********found**********/
return __3__;
}
void main()
{ char s1[N],s2[N];
do
{ printf("Input string s1 : "); gets(s1); }
while( strlen(s1)>N );
do
{ printf("Input string s2 : "); 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)
第一空填出来了后面的就轻而易举了 |