编程:写一函数,统计输入一个字符串中字母的个数。

题目

编程:写一函数,统计输入一个字符串中字母的个数。


相似考题
参考答案和解析
正确答案: int isalpha(char c){c>='a'&&c<='z'‖c>='A'&&c<='Z')
return(1);else return(0);}
main(){int i,num=0;
char str[255];
printf("INput a string:");
gets(str);
for(i=0;str[i]!="/0';i++)
if(isalpha(str[i]))num++;
puts(str);
printf("num=%d/n",num);
}
更多“编程:写一函数,统计输入一个字符串中字母的个数。”相关问题
  • 第1题:

    假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

    例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

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

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

    试题程序:

    include<conio. h>

    include<stdio. h>

    void fun(char *a, char *p)

    {

    }

    main ( )

    char s[81],*t;

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

    gets (s);

    t=s;

    while (*t)

    t++;

    t--; /*指针t指向字符串尾部* /

    while (*t== '*' )

    t--; /*指针t指向最后一个字母*/

    fun (s, t);

    printf ("The string after deleted: \n");

    puts (s);

    }


    正确答案:void fun(char *a char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/
    void fun(char *a, char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/ 解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。

  • 第2题:

    1 编程:

    用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。


    正确答案:
    1 题
    char *revert(char * str)
    {
    int n=strlen(str);
    int i=0;
    char c;
    for(i=0;i {
    c=str;
    str=str[n-i];
    str[n-i]=c;
    }
    return str;
    }

  • 第3题:

    程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。请改正错程序中的错误。如输入:abcDEFGH123输出:5


    /**/charstr1[128];/**/
    /**/sum++;/**/

  • 第4题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母a,大写字母和其他字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main函数调用函数WriteDat把结果xx输出到文件out.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。


    正确答案:
    【审题关键句】以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,大小写不变,其他字符不变。
    【解题思路】
    ①定义整型循环变量i、j。

    【参考答案】

  • 第5题:

    规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.


    正确答案:
    程序设计题解析:【考点分析】本题考查:指针型变最定义;wh丑e循环语句;语句条件表达式;字符串结束标识‘\0’。【解题思路】函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删除。【解答本题】(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符‘、O’。【解题宝典】要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

  • 第6题:

    编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2的子字符串substr在另一个字符串str中出现的次数,该次数作为函数值返回。例如,假定输入的字符串为”asd asasdfg asd as zx67 asdmklo”,子字符串为”as”,函数返回值是6。 函数ReadWrite实现从文件in.dat中读取两个字符串,并调用函数findStr,最后把结果输出到文件out.dat中。 注意:部分源程序存在test.c文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数findStr的花括号中 填入你编写的若干语句。


    正确答案:
    【审题关键句】统计一个长度为2的子字符串在另一个字符串中出现的次数。
    【解题思路】
    ①定义字符指针p,q,并且q指向字符串str。定义计数整型变量cnt,设置其值等于0。
    ②在while循环中调用C语言的字符串库函数strstr,返回子字符串substr在字符串q第一次出现的位置,赋给变量P。用if语句判断,如果p的值为空,则说明在字符串str没有找到子字符串,退出循环。否则,变量cnt加1,再把P的值加2(因为子字符串substr的长度为2)赋给变量q,执行下一次循环。直到字符串中不存在子字符串时,退出循环结束。
    ③最后,返回子字符串substr在字符串str中出现的次数。
    【参考答案】

  • 第7题:

    请编写一个函数proc(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

    例如,若输入字符串“1234”,则函数把它转换为整数值1234。

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

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

    试题程序:


    正确答案:


    【解析】要将数字字符串转换为一个整数,首先判断该字符串的正负号。然后将数字字符转换为相应的数字,将各个数字合并为整数。最后将得到的整数乘以字符串中的符号。将最后的结果返回到主函数中。

  • 第8题:

    函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

    例如,原文:Adb.Bcdza

    abck.LLhj

    结果:Aec.Bdeab

    bcdl.LLik

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    注意:部分源程序已给出。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。


    #include
    #include
    #include
    char xx[50][80] ;
    int maxline = 0 ;/* 文章的总行数 */
    int ReadDat(void) ;
    void WriteDat(void) ;
    void ConvertCharA(void)
    {
    int i,j; /*定义循环控制变量*/
    int str; /*存储字符串的长度*/
    for(i=0;i
    {
    str=strlen(xx[i]); /*求得当前行的字符串的长度*/
    for(j=0;j
    if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小写字母*/
    if(xx[i][j]=='z')
    xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/
    else
    xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/
    }
    }
    void main()
    {
    system("CLS");
    if(ReadDat())
    {
    printf("数据文件IN5.DAT不能打开!\n\007") ;
    return ;
    }
    ConvertCharA() ;
    WriteDat() ;
    }
    int ReadDat(void)
    {
    FILE *fp ;
    int i =0 ;
    char *p ;
    if((fp = fopen("IN5.DAT", "r")) == NULL) return 1 ;
    while(fgets(xx[i], 80, fp) !=NULL)
    {
    p = strchr(xx[i], '\n') ;
    if(p) *p = 0 ;
    i++;
    }
    maxline = i ;
    fclose(fp) ;
    return 0 ;
    }
    void WriteDat(void)
    {
    FILE *fp ;
    int i ;
    system("CLS");
    fp = fopen("OUT5.DAT", "w") ;
    for(i = 0 ; i < maxline ; i++)
    {
    printf("%s\n", xx[i]) ;
    fprintf(fp, "%s\n", xx[i]) ;
    }
    fclose(fp) ;
    }

  • 第9题:

    编程. 已知字符串:”this is a test of java”.

    按要求执行以下操作:

    (1) 统计该字符串中字母s出现的次数

    (2) 取出子字符串”test”

    (3) 将本字符串复制到一个字符数组Char[] str中.

    (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。

    (5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)

    (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台


    答案:
    public class Chap53e {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    //(1)
    String string="this is a test of java";
    char[] s=string.toCharArray();
    int count=0;
    for(int i=0;i
    if(s[i]=='s')
    count++;
    System.out.println("s出现了"+count+"次");
    //(2)
    String str1;
    str1=string.substring(string.indexOf('t', 1), string.lastIndexOf('t')+1);
    System.out.println("子字符串为"+str1);
    //(3)
    char[] str=string.toCharArray();
    String[] str2=string.split(" ");
    //(4)
    for(int i=0;i
    { //方法一
    str2[i]=String.valueOf(str2[i].charAt(0)).toUpperCase()+str2[i].substring(1);
    // 方法二
    str2[i]=str2[i].replaceFirst(String.valueOf(str2[i].charAt(0)), String.valueOf(str2[i].charAt(0)).toUpperCase());
    System.out.print(str2[i]+" ");
    }
    //(5)
    StringBuffer sbf=new StringBuffer("this is a test of java");
    sbf.reverse();
    System.out.println(sbf);
    for(int i=string.length()-1;i>=0;i--)
    System.out.print(string.charAt(i));
    //(6)
    String[] strs3=string.split(" ");
    System.out.println(Arrays.toString(strs3));
    }
    }

  • 第10题:

    编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。      例如:输入string,则输出gnirts。


    正确答案: #include "stdio.h"
    void reverse(char str[])
    {int i,j;
    char t;
    for(j=0;str[j]!=/0;j++);/*求字符串长度*/
    for(i=0,j=j-1;i<j;i++,j--)
    {t=str[i];
    str[i]=str[j];
    str[j]=t;
    }
    }
    main()
    {char str[80];
    printf("/nPlease input a string:");
    gets(str);
    reverse(str);
    printf("/nString reverse:");
    puts(str);}

  • 第11题:

    问答题
    编一个程序,从键盘输入一个字符串,用foreach循环语句,统计其中大写字母的个数和小写字母的个数。

    正确答案: strings;
    intn1=0,n2=0;
    Console.WriteLine("请输入一个字符串");
    s=Console.ReadLine();
    foreach(charcins)
    {
    if(c>=’A’&&c<=’Z’)
    n1++;
    elseif(c>=’a’&&c<=’z’)
    n2++;
    else
    continue;
    }
    Console.WriteLine("大写字母有{0}个,小写字母有{1}个",n1,n2);
    解析: 暂无解析

  • 第12题:

    问答题
    编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。      例如:输入string,则输出gnirts。

    正确答案: #include "stdio.h"
    void reverse(char str[])
    {int i,j;
    char t;
    for(j=0;str[j]!=/0;j++);/*求字符串长度*/
    for(i=0,j=j-1;i<j;i++,j--)
    {t=str[i];
    str[i]=str[j];
    str[j]=t;
    }
    }
    main()
    {char str[80];
    printf("/nPlease input a string:");
    gets(str);
    reverse(str);
    printf("/nString reverse:");
    puts(str);}
    解析: 暂无解析

  • 第13题:

    请编写一个函数fun(),该函数的功能是:返回给定字符串中大写字母字符的个数。

    如字符串"Hello World"中,大写字母的个数为2个。

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

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

    文件PROC5.cpp的内容如下:

    //PROC5.cpp

    include<iostream>

    include<string>

    using namespace std;

    int fun(char *str);

    int main()

    {

    char str[ ]="Chinese Computer World";

    cout<<fun(str)<<end;

    return 0;

    }

    int fun(char *str)

    {

    //**********

    }


    正确答案:下面是函数fun()函数体的一种实现: int fun(char *str) { int num=0; //用于记录大写字母符的个数初始值为0。 while(*str!='\0') //若是大写字母则总数加1。 { if(*str>='A'&&*str='Z') num++; str++; } return num; }
    下面是函数fun()函数体的一种实现: int fun(char *str) { int num=0; //用于记录大写字母符的个数,初始值为0。 while(*str!='\0') //若是大写字母,则总数加1。 { if(*str>='A'&&*str='Z') num++; str++; } return num; } 解析:本题要求编写函数fun()的函数体,完成的功能是返回给定字符串中大写字母字符的个数。从给出的函数首部可知,函数体可用字符指针和循环体的方式来实现。

  • 第14题:

    有以下函数

    函数的功能是( )。

    A.统计x和y所指字符串中最前面连续相同的字符个数

    B.查找x和y所指字符串中是否有’\0’

    C.将y所指字符串赋给x所指存储空间

    D.统计x和y所指字符串中相同的字符个数


    正确答案:A
    本题中由循环条件可知,当遇到l\0”’或“x与y所指的字符的值不相等”中的一个条件时就结束循环,因此本题函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。

  • 第15题:

    以下函数实现的功能是void fun (char *s){ char *p,*q,temp; p=s; q=s+ strlen(s)-1; while (p<q) { temp=*p; *p=*q; *p=temp; p++; q--; }}

    A.将一个字符串首尾颠倒

    B.计算字符串的长度

    C.统计字符串中的空格个数

    D.将字符串中的小写字母变成大写字母


    正确答案:A
    解析:本题考核while循环语句和指针的使用。在该函数中,循环开始时,指针p指向字符串的第1个字符,指针q指向字符串的最后一个字符,首先交换这两个字符;然后,指针p前进一个字符位置(指向下一个字符),指针q后退一个字符位置(指向前一个字符);经过若干次循环,条件pq将为假(即指针p和指针q相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。

  • 第16题:

    规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。


    正确答案:
    voidfun(char*a){while(*a!=’、0。)a++:a一一;/*指针a指向字符串的尾部*/while(}a==’*。)a一一;/·指针a指向最后一个字母*/*(a+1)=’、0’;/*在字符串最后加上结束标志符·/【考点分析】本题考查:删除字符串尾部*号;删除的主要思想是把不删除的字符保留起来。【解题思路】对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘、0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非·号字符为止。最后在该字符后面加上结束符号’\0。

  • 第17题:

    下面关于InputBox函数的叙述,不正确的是 ( )

    A.在默认情况下,InputBox的返回值是一个字符串

    B.InputBox函数可以写成InputBox$的形式

    C.执行一次InputBox函数可以输入多个数值

    D.执行一次InputBox函数时,不可以同时输入多个数值


    正确答案:C
    解析:执行一次InputBox函数时,不可以同时输入多个数值。选项C的叙述不正确。

  • 第18题:

    给定程序MODll.C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。

    例如:若输入:THIs is aboot,则输出应该是:1、0、2、2、0。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)num[k]=0; (2)switch(*s)
    (1)num[k]=0; (2)switch(*s) 解析:本题中函数的功能是统计字符串中各元音字母(即A、E、I、O、U)的个数。其中,本题在while循环中采用switch-case条件判断字符串中的每一个字符并进行统计。

  • 第19题:

    假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:


    正确答案:

    题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

  • 第20题:

    下面程序的功能是()。include include using namespace std;int main (){ in

    下面程序的功能是( )。 #include <iostream> #include <string> using namespace std; int main () { int i=1, n=0; char s[80],*p; p=s; strcpy(p,"It is a book.."); for (; *p !=' \0' ;p++) { if(*p=='') i=0; else if (i==0) { n++; i=1; } } cout<<"n=" <<n<<end1; return 0; }

    A.统计字符串中的单词个数

    B.统计字符串中的空格个数

    C.统计字符串中的字母个数

    D.统计字符串中的全部字符个数


    正确答案:B
    解析:本题通过for循环对字符串进行扫描,遇到'\0'结束扫描。程序首先将i的值置为1,n的值置为0。在for循环中,通过if语句判断*p指向的字符是否为空格,如果是空格则将i的值置为0,而在elseif语句,如果i的值为0,则n++,然后将i的值重新置为1。如此反复,最后统计出字符串中的空格个数。

  • 第21题:

    下面关于InputBox函数的叙述,不正确的是()。

    A在默认情况下,InputBox的返回值是一个字符串

    BInputBox函数可以写成InputBox$的形式

    C执行一次InputBox函数时,不可以同时输入多个数值

    D执行一次InputBox函数可以输入多个数值


    D

  • 第22题:

    编一个程序,从键盘输入一个字符串,用foreach循环语句,统计其中大写字母的个数和小写字母的个数。


    正确答案: strings;
    intn1=0,n2=0;
    Console.WriteLine("请输入一个字符串");
    s=Console.ReadLine();
    foreach(charcins)
    {
    if(c>=’A’&&c<=’Z’)
    n1++;
    elseif(c>=’a’&&c<=’z’)
    n2++;
    else
    continue;
    }
    Console.WriteLine("大写字母有{0}个,小写字母有{1}个",n1,n2);

  • 第23题:

    问答题
    编程:写一函数,统计输入一个字符串中字母的个数。

    正确答案: int isalpha(char c){c>='a'&&c<='z'‖c>='A'&&c<='Z')
    return(1);else return(0);}
    main(){int i,num=0;
    char str[255];
    printf("INput a string:");
    gets(str);
    for(i=0;str[i]!="/0';i++)
    if(isalpha(str[i]))num++;
    puts(str);
    printf("num=%d/n",num);
    }
    解析: 暂无解析