用gets()函数从键盘输入一个字符串(包含有空格),用puts()函数输出,并分别统计字母、数字和其他字符的数目并输出。

题目

用gets()函数从键盘输入一个字符串(包含有空格),用puts()函数输出,并分别统计字母、数字和其他字符的数目并输出。


相似考题
更多“用gets()函数从键盘输入一个字符串(包含有空格),用puts()函数输出,并分别统计字母、数字和其他字符的数目并输出。”相关问题
  • 第1题:

    ●试题四

    请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出4。

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

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

    试题程序:

    #include<stdio.h>

    #include<string.h>

    #include<conio.h>

    int fun(char *str,char *substr)

    {

    int n;

    char *p,*r;

    (1) ;

    while(*str)

    {

    p=str;

    r=substr;

    while(*r)

    if( (2) )

    {

    r++;

    p++;

    }

    else

    break;

    if( (3) )

    n++;

    str++;

    }

    return n;

    }

    main()

    {

    char str[81],substr[3];

    int n;

    clrscr();

    printf("输入主字符串:");

    gets(str);

    printf("输入子字符串:");

    gets(substr);

    puts(str);

    puts(substr);

    n=fun(str,substr);

    printf("n=%d\n",n);

    }


    正确答案:

    【答案】(1n=02*r==*p3*r==′\0

    【解析】填空1:变量n用来记录子字符串在字符串中出现的次数,函数中对变量n进行了类型声明,但并没有进行初始化,所以此处对n初始化为0。填空2:进行比较时,如果子字符串的字符与字符串中的字符相同,则将两个字符串的指针都自加1,继续进行比较,否则跳出循环。填空3:如果此时指针r所指的字符为'0',则说明子字符串在字符串中出现了一次,将记录变量n1

     

  • 第2题:

    编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

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

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<string.h>

    fun(char (*a) [81], int num, char *max)

    {

    }

    main ()

    {

    char ss[l0] [81],*ps;

    int n, i=0;

    clrscr();

    prlntf("输入若干个字符串");

    gets(ss[i]);

    puts(ss[i]);

    while(!strcmp(ss[i], "****")==0)

    /*用****作为结束输入的标志*/

    {

    i++;

    gets(ss[i]);

    puts(ss[i]);

    }

    n=i;

    ps=fun(ss,n,&ps);

    print~("\nmax=%s\n",ps);

    }


    正确答案:fun(char (*a)[81] int num char *max) { int i=0; max=a[0]; for (i=0; inum; i++) /*找出最长的一个字符串*/ if(strlen(max)strlen(a[i])) max=a[i]; return max; /*传回最长字符串地址*/ }
    fun(char (*a)[81], int num, char *max) { int i=0; max=a[0]; for (i=0; inum; i++) /*找出最长的一个字符串*/ if(strlen(max)strlen(a[i])) max=a[i]; return max; /*传回最长字符串地址*/ } 解析:做本题之前,我们先应该明白ss是一个指向一维数组的指针变量,max是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用max,因为ss[0]是一个数组地址而不是一个指针的地址。

  • 第3题:

    以下叙述中错误的是

    A.gets函数用于从终端读入字符串

    B.getehar函数用于从磁盘文件读入字符

    C.fputs函数用于把字符串输出到文件

    D.fwrite函数用于以二进制形式输出数据到文件


    正确答案:B

  • 第4题:

    编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: include<stdio.h> include<string.h> include<conio.h> char*proc(char(*a)[81],int num) { } void main { char ss[l0][81],*max; int n,i=0; printf("输入若干个字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i],"****")= =0) { i++: gets(ssEi]); puts(ss[i]); } n=i: max=proe(SS,n); printf("\nmax=%s\n",max); }


    正确答案:
    char*proc(char(*a)[81],int M)
    {
    char*max;
    int i=0:
    max=a[O]:
    for(i=0;i<M;i++)
    if(strlen(max)<strlen(a[i]))//找出最长的字符串
    max=a[i];
    return max; //返回最长字符串的地址
    }
    【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串;再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针;最后返回最长字符串的地址。

  • 第5题:

    cout函数不能输出包含空格的字符串。()


    参考答案:正确

  • 第6题:

    以下叙述中错误的是( )。

    A.gets函数用于从终端读人字符串

    B.getehar函数用于从磁盘文件读人字符

    C.fputs函数用于把字符串输出到文件

    D.fwrite函数用于以二进制形式输出数据到文件


    正确答案:B
    本题考查字符处理函数和文件操作函数。属于基础知识,其中B选项9etchar函数是用于从终端读人一个字符。

  • 第7题:

    编程. 已知字符串:”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));
    }
    }

  • 第8题:

    编写一函数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);}

  • 第9题:

    完善程序,用puts函数输出字符数组str。charstr[]={“abc/ndef”};();


    正确答案:puts(str);

  • 第10题:

    下面关于gets()与puts()函数描述正确的项是()

    • A、gets()读取的字符串,其长度没有限制,以敲回车键结束。
    • B、gets()输入字符串时要保证字符数组有足够大的空间,存放输入的字符串。
    • C、puts()函数一次只能输出一个字符串
    • D、puts()函数是把字符数组中所存放的字符串,输出到标准输出设备中去,并用‘/n’取代字符串的结束标志‘/0’。

    正确答案:A,B,C,D

  • 第11题:

    字符串处理函数gets()函数的作用是()

    • A、从标准输入设备键盘上,读取1个字符串,并将其存储到字符数组中去
    • B、从标准输入设备键盘上只能读取1个字符,并将其存储到字符变量中去
    • C、把字符数组中所存放的字符串,输出到标准输出设备中去
    • D、把字符变量中的单个字符,输出到标准输出设备中去

    正确答案:A

  • 第12题:

    单选题
    printf( )函数中用到格式符%4s,其中,数字4表示输出的字符串占用4列。若字符串长度大于4,则输出按下列4种方式之一进行,该方式是()。
    A

    从左起输出该字符串,右补空格

    B

    按原字符串长度从左向右全部输出

    C

    右对齐输出该字符串,左补空格

    D

    输出错误信息


    正确答案: C
    解析: 暂无解析

  • 第13题:

    ( 16 )下列关于输入流类成员函数 getline() 的描述中,错误的是

    A )该函数是用来读取键盘输入的字符串的

    B )该函数读取的字符串长度是受限制的

    C )该函数读取字符串时,遇到终止符便停止

    D )该函数读取字符串时,可以包含空格


    正确答案:A

  • 第14题:

    编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,则应当输出6。

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

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <string.h>

    int fun(char *str, char *substr)

    {

    }

    main ( )

    {

    char str[81],substr[3];

    int n;

    clrscr ();

    printf ("输入主字符串 ");

    gets (str);

    printf ("输入子字符串");

    gets (substr);

    puts (str);

    puts (substr);

    n=fun (shr, substr);

    printf("n=%d\n ",n);

    }


    正确答案:int fun(char *str char *substr) { int i j=0; for(i=0;str[i+1]!='\0';i++) /*如果一个长度为2的子字符串在主字符串中出现一次则j+1 如此 循环*/ if (str [i]==substr [0] &&str [i+1]==substr [1] ) j++; return j; /*返回子字符串在主字符串中出现的次数*/ }
    int fun(char *str, char *substr) { int i, j=0; for(i=0;str[i+1]!='\0';i++) /*如果一个长度为2的子字符串在主字符串中出现一次,则j+1, 如此 循环*/ if (str [i]==substr [0] &&str [i+1]==substr [1] ) j++; return j; /*返回子字符串在主字符串中出现的次数*/ } 解析:该题中subsu只有两个字符,所以可以用if语句来直接进行判断。要注意if())中str组的下标为i和i+1,即比较当前字符及其以后的一个字符是否分别与substr中的字符对应相同,若都相同则表示出现了一次。

  • 第15题:

    请补充函数fun(),该函数的功能是:把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。

    例如,输入“abcdef”,输出“bdf”。

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

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

    试题程序:

    include <stdio.h>

    define N 80

    void fun(char s[],int n)

    {

    int i, j;

    j=0;

    for(i=0;【 】;i++)

    {

    if(【 】)

    s [j++]-s [i];

    }

    【 】;

    }

    main ( )

    {

    int i=0, strlen=0;

    char str [N];

    clrscr ();

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

    gets (str);

    while (str [i] !='\0')

    {

    strlen++;

    i++;

    }

    fun(str, strlen);

    printf("\n*** display string ***\n");

    puts (str);

    }


    正确答案:in s[i]%2=0 s[j]= '\0'
    in s[i]%2=0 s[j]= '\0' 解析:第一空:变量n为字符串的长度,所以字符数组的下标的取值范甲是从0到n-1。第二空:如果当前字符的ASCII码对2取余等于0,就说明这个字符的ASCII码为偶数,故不能删除,而是将它存于字符串s中。第三空:通过保留ASCII码为偶数的字符的力法,来实现删除ASCII码为奇数的字符的目的。处理结束后,还要在字符串s的最后加上结束标记符'\0'。

  • 第16题:

    假定输入的字符串中只包含字母和*号。请编写函数 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以后的所有*号保留下来。

  • 第17题:

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


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

    【参考答案】

  • 第18题:

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


    正确答案:
    【审题关键句】以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,大小写不变,其他字符不变。
    【解题思路】
    ①定义整型循环变量i、j。
    ②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的处理。第二层for循环中,循环变量J从0开始,依次递增直到其值大于或等于strlen(xx[i]),在循环体中,利用if条件语句判断如果xx[i][j]的值为字符’a’,则把xx[i][j]的值设置为字符’2’。否则如果XX[i][D]的值在小写字符’at与’2’之间,则把xx[i][j]的值减1,把其值变成其前一个字符的ASCII码。
    【参考答案】

  • 第19题:

    printf( )函数中用到格式符%4s,其中,数字4表示输出的字符串占用4列。若字符串长度大于4,则输出按下列4种方式之一进行,该方式是()。

    • A、从左起输出该字符串,右补空格
    • B、按原字符串长度从左向右全部输出
    • C、右对齐输出该字符串,左补空格
    • D、输出错误信息

    正确答案:B

  • 第20题:

    printf函数中用到格式符%5s,其中数字5表示输出的字符串占用 5列,如果字符串长度大于5,则输出按方式().

    • A、从左起输出该字符串,右补空格
    • B、按原字符长从左向右全部输出
    • C、右对齐输出该字串,左补空格
    • D、输出错误信息

    正确答案:B

  • 第21题:

    数据结构里,下面关于字符数组描述正确的是()

    • A、gets()读取的字符串,其长度没有限制,以敲回车键结束。
    • B、puts()函数,该函数一次只能输出一个字符串
    • C、strcmp()函数,字符串1小于字符串2,函数返回值整数-1
    • D、strcpy()函数功能是进行字符串连接.

    正确答案:A,B,C

  • 第22题:

    单字符输出函数是()。

    • A、putchar()
    • B、getchar()
    • C、gets()
    • D、puts()

    正确答案:A

  • 第23题:

    单选题
    printf函数中用到格式符”%4s”,其中数字4表示输出的字符串占用4列。如果字符串长度大于4,则按原字符串长从左向右全部输出;如果字符串长度小于4,则输出方式为()
    A

    从左起输出该字符串,右补空格

    B

    按原字符长从左向右全部输出

    C

    右对齐输出该字符,左补空格

    D

    输出错误信息


    正确答案: A
    解析: 暂无解析

  • 第24题:

    问答题
    编写一函数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);}
    解析: 暂无解析