请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即0~9这10个数字)的个数,如字符串“olympic2008”中数字字符的个数为4。请用if条件判断语句与for循环语句来实现该函数。注意:部分源程序已存在文件test9_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数find的花括号中填写若干语句。文件test9_2.cpp的内容如下:include<iostream.h>include<string.h>int CalcDig

题目

请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即0~9这10个数字)的个数,如字符串“olympic2008”中数字字符的个数为4。请用if条件判断语句与for循环语句来实现该函数。

注意:部分源程序已存在文件test9_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数find的花括号中填写若干语句。

文件test9_2.cpp的内容如下:

include<iostream.h>

include<string.h>

int CalcDigital(char*str);

void main()

{

char *str;

str=new char[255];

cout<<"输入字符串:";

cin>>str;

int num=CalcDigital(str);

cout<<str<<":"<<num<<endl;

}

int CalcDigital(char *str)

{

}


相似考题
更多“请编写一个函数int CalcDigital(char *str),该函数可返回字符串str中数字字符(即0~9这10个数字) ”相关问题
  • 第1题:

    以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如,str所指字符串为Hello!,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空或不包含c中的字符,则函数返回NULL,请填空。char *fun(char *str,char c){ int n=0; char *p=str; if(p!=NULL) while(p[n]!=c&&p[n]!=’\0’) n++; if(p[n]==’\0’) return NULL; return();}


    正确答案:p+n
    在本题中,函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址。
    在本题的程序中,fun函数带有两个形参,其中一个是指针str,它指向字符串的首地址,另一个是字符变量c。程序首先定义了一个整型变量n,从程序中可知,它是字符串str中参数c相对于首地址的偏移量,然后定义了一个指针变量p,指向字符串str的首地址,然后执行条件语句,如果字符串不为空,则执行循环语句,循环结束的条件是要么字符串结束,要么找到形参c中对应的字符。根据循环结束的条件我们可以判断,其非死循环,循环结束后,从程序中可以看出,判断循环结束的原因是否因为字符串结束而结束的,如果是,说明没找到形参c中对应的字符,返回NULL。
    如果不是,则说明是因为找到了形参c中对应的字符而结束循环的。根据题目要求,需要返回以形参c中字符开头的后续字符串的首地址,而这时以形参c中字符开头的后续字符串的首地址为p+n。

  • 第2题:

    mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。int mystrlen(char *str) { int i; for(i=0;;i++); return(i); }


    正确答案:*(str+i)!=‘\0’或*(str+i)
    在本题中,题目告诉我们,mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。要求取一个字符串的长度,其中最关键的因素是如何判断字符串是否结束,然后就可以用循环逐个字符进行计算,获得最后的字符串长度。
    在程序中,函数mystrlen带了一个指针类型的形参变量str,该指针变量指向字符串的起始位置,通过该指针完成对字符串的计算,接着定义一个整型变量i作为循环变量,在循环结构for语句中,给出了循环变量的初始值和循环变量值改变的方式,但缺少循环结束的判断条件,这就是该题需要完成的空。通过前面的分析我们知道,循环用来求取字符串的长度,如果循环结束,字符串中所有的字符应该都被取,即字符串结束,由于字符串结束的标识符是‘\0’,因此,循环结束的判断条件应该为所取的字符为结束标识符,因此,循环结束的判断条件应该为*(str+i)!=‘\0’。另外,又由于字符结束标识符对应的值为0,即为假,因此,可以用来作为循环结束的条件,因此,本题的答案可以为*(str+i)!=‘\0’或*(str+i)。

  • 第3题:

    字符串str由数字字符‘0’和‘1’组成(长度不超过8个字符),可看作二进制数,请补充函数fun(),该函数的功能是:把str字符串转换成十进制数,结果由函数返回。例如,输入“1001”,结果输出:9。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<stdlib.h>

    include<string.h>

    int fun(char *str)

    {

    int n;

    char *p=str;

    【 】;

    p++;

    while (*p)

    {

    n=【 】;

    p++;

    }

    return【 】;

    }

    main()

    {

    char str[9];

    int i;

    int n;

    printf ("Enter a string made up of '0' and

    '1' digital character:");

    gets (str);

    if (strlen(str)>8)

    {

    printf ("Error:string too longer!

    please input again !\n\n");

    exit(0);

    }

    for(i=0;str[i];i++)

    if(str[i]<'0'||str[i]>'1')

    {

    printf("Error:%c not is '0'and

    '1' digital character !\n\n",

    str[i]);

    exit(0);

    }

    printf("The original string:");

    puts(str);

    n=fun(str);

    printf("\n%s is convered to decimal

    number:%d\n\n",str,n);

    }


    正确答案:n=*p-'0' n*2+*p'0' n
    n=*p-'0' n*2+*p'0' n 解析:第一空:'0'和'1'是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符'0'的ASCII码,就得到对应的数字。第二空:将二进制数转换为十进制数的算法是:以1001为例,对应的十进制数为1*23+0*22+0*2+1=2*(2*(2*1+0)+0)+1=9。明白了这一算法,此空就非常容易了。第三空:最后计算的结果存放在变量n中,所以函数的返回值为n。

  • 第4题:

    函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。

    int fun(char*str){

    int hum=0;

    while(*str){

    num*=10;

    num+=______

    str++;

    }

    return num;

    }


    正确答案:(*str-'0')
    (*str-'0')

  • 第5题:

    str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

    例如,str="abc3de987f9621",结果为:3987621。

    注意:部分源程序给出如下。

    请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    define M 80

    int bb[M];

    int proc(char str[],int bb[],int num)

    {

    int i,n=0;

    for(i=0;i<num;i++)

    {

    if(【1】)

    {

    bb[n]=【2】:

    n++:

    }

    }

    return 【3】 ;

    }

    void main

    {

    char str[M];

    int mum=0,n,i;

    printf("Enter a strin9:\n");

    gets(str);

    while(str[num])

    num++:

    n=proc(str,bb,num);

    printf("\nbb=");

    for(i=0;i<n;i++)

    printf("%d",bb[i]);

    }


    正确答案:

    【1】str[i]>='0'&&str[i]<='9 '
    【2】str[i]-'0'
    【3】n
    【解析】题目中要求把字箱串str中的数字字符转换成数字并存放到整型数组bb中。首先应判断字符串str中每个字符是否为数字字符,因此【1】填“str[i]>=' 0 ' &&str[i]<='9'”;将每一个数字字符转化为数字放在整型数组bb中,因此【2】填“str[i]-'0'”;由函数proc可知,变量n中存放的是整型数组bb中元素的个数,最后要返回到主函数中,因此【3】填“n”。