使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(ehar*str)用于返回字符串中非数字的个数。 例如:abcl23abc45 返回值为:6 将函数num补充完整。 注意:请勿改动主函数main。 试题程序: include<iostream.h> intnum(char*str) { } intmain { charstr[1024]; cout<<"pleaseinputastring:"<<endl; cin.getline(str,1024); cou

题目

使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(ehar*str)用于返回字符串中非数字的个数。 例如:abcl23abc45 返回值为:6 将函数num补充完整。 注意:请勿改动主函数main。 试题程序: include<iostream.h> intnum(char*str) { } intmain { charstr[1024]; cout<<"pleaseinputastring:"<<endl; cin.getline(str,1024); cout<<"charnumberis"<<num(str)<<endl: return0; }


相似考题
更多“使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(ehar*str)用于 ”相关问题
  • 第1题:

    阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。

    [说明]

    下面的程序利用递归算法计算x和y的最大公约数。

    [函数2.1]

    main ( )

    { int x,y,k,t;

    scanf(" % d% d" , &x, &y);

    if(x>y) { t=x;x=y; y=t;}

    (1);

    while(k! =0){

    y=x;

    (2);

    k=y%x;

    }

    prinff( "% d" ,x); }

    [函数2.2说明]

    函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。

    [函数2.2]

    fun(ehar * str, char * substr)

    { int x,y,z;

    (3);

    for(x=0;str[ x] ! = '\O';x + + )

    for(y=x,z=0;sabstr[z] = =str[y];(4),y+ +)

    if((5)= ='\0') {

    num + +;

    break;

    }

    return(num);

    }


    正确答案:(1)k=y%x (2)x=k (3)int num=0 (4)z++ (5)substr[z+1]
    (1)k=y%x (2)x=k (3)int num=0 (4)z++ (5)substr[z+1] 解析:(1)~(2)使用递归算法计算x和y的最大公约数时,不妨令yx,如果y除x余数得。则x即为所求;否则令y←x,x←余数,继续上述判断。
    (3)此处应声明变量num并初始化;
    (4)次循环的功能是从str的第y个位置起与substr做比较,循环过程中y和z应同时增1;
    (5)若上面的循环重复执行,直到到达substr结束,则表示substr在str中出现一次。

  • 第2题:

    使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { charstr1[1024]; charstr2[256]; cout<<"pleaseinputastring:"<<endl; cin.getline(str1,1024); cout<<"pleaseinputotherstring;"<<endl cin.getline(str2,256); cout<<fun(str1,str2); cout<<endl; return; }


    正确答案:
    intfun(char*str1.char*str2)
    {
    intsize=0;
    intstrllen;
    intstr2len;
    for(strllen=0;str1[strllen]!=0;strllen++);
    for(str21en=0;str2[str21en]!=0;str2len++);
    for(inti=0:i<strllen;i++)
    {
    intj=0;
    for(;j<str21en;j++)
    if(strl[i+j]!=str2[j])
    break;
    if(i==str21en)
    {
    ++size;
    i+=j;
    }
    }
    returnsize;
    }
    【解析】本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第1个字符串,再使用一个内循环遍历第2个字符串,判断两个字符串相应位置是否一致。如果遍历完第2个字符串,所有位置都一致,则记数值size增1,即找到一个子串。

  • 第3题:

    请教:2016年计算机二级C++基础练习三简答题9如何解答?

    使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。

    程序要求使用递归实现上述功能。

    注意:不能修改程序的其他部分,只能补充sum函数。

    试题程序:

    #include

    #include

    intsum(intn)

    {

    }

    voidmain()

    {

    cout<<"1+2+3+…+100="<

    endl;

    return;

    }


    【答案】

      return(n==1)?1:n+sum(n-1);

      【解析】本题主要考查三目运算符?:的使用和递归函数的编制。程序功能是计算前n个自然数的和,n为参数。程序的运算过程如下,不是一般性,假设n为3,首先执行sum(3),因为3不等于1,所以return语句返回的值为3+sum(3-1),然后执行sum(3-1)即sum(2),2不等于1,所以return语句返回的值为2+sum(2-1),然后执行sum(2-1)即sum(1),因为1等于1,所以return语句返回的值为1,即问号后的值,所以最终结果为3+2+1=6,而题中n为100,所以结果为5050。

  • 第4题:

    使用VC++6.0打开考生文件夹下的源程序文件 2.cpp。请完成函数fun(intx),该函数的功能是将X的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。 例如x=6,6的二进制数为110,则输出到屏幕的数为110。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include(iostream) include(fstream) include(cmath) usingnamespacestd; voidWriteFile(char*str) { ofstreamout1; out1.open("2.txt",ios—base::binary|ios_base::app); for(inti=0;str[i]!=0;i++) out1.put(str[i]); out1.close; } voidfun(intx) { } voidClearFile { ofstreamout1; out1.open("2.txt"); out1.close; } intmain { ClearFile; fun(13); return0; }


    正确答案:
    charstr[32];
    inti;
    for(i=30;i>=0;i--)//计算二进制
    {
    if(x%2)str[i]='1';//求余,如果余不为零字符串
    str第i位为1
    elsestr[i]='0';//否则为0
    x>>=1;
    if(!x)break;
    }
    str[31]='\0';//串加尾符
    cout<<&str[i]<<endl;
    writeFile(&str[i]);
    【解析】本题要求定义存放二进制的字符串str。利用for循环对十进制数字x进行取余运算,直到余数为0结束。如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。调用WriteFile,将运算结果存入文件。

  • 第5题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intn),使其实现以下功能:当i等于3时,则打印如下内容。 A AA AAA 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: include<iostream.h> voidfun(intn) { } voidmain { intn; cout<<"请输入打印的行数:"<<endl; cin>>n; if(n<1) { cout<<"输入的行数必须大于0"<<endl; return; } fun(n); return; }


    正确答案:
    inti;
    for(i=0;i<n;i++)//外层循环,要打印的行数
    {
    intj;
    for(j=0;j(n-i-1;j++)//循环打印空格
    {
    cout<<'';
    }
    for(;j<n;j++)//循环打印A
    {
    cout<<"A":
    }
    cout<<endl;//打印每一行的回车符
    }
    【解析】本题利用外层循环打印每一行。内层循环分为
    打印空格和打印A。打印空格由第一个位置到第n-i-1。打印A,是由打印完空格开始一直到行结束。在外循环中打印每一行的结束符。