zoukankan      html  css  js  c++  java
  • c语言试题集(1)

    1.通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词)

    #include "stdafx.h"
    //通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词);
    #include<stdio.h> 
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
        char string[100];//根据拟从键盘输入的字串的长度需要适当调整,要避免输入的长度超出设定的范围。 
        char c;
        int i, num = 0, sum = 0, word = 0; //定义 word 用来指示一个单词是不是结束或新单词是否开始; 
        printf("请从键盘输入一行需要查询的英文句子,进行单词数量统计:
    
    ");
        gets_s(string);   //从键盘获得输入的字符串; 
                        //以下统计句子中的英文字符个数; 
        for (i = 0; (c = string[i]) != ''; i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='',即未到达结束符''的话,执行i++;
        {
            if (('A' <= string[i] && string[i] <= 'Z') || ('a' <= string[i] && string[i] <= 'z'))
                sum++;  //以上为条件句,如果字符在A~Z,a~z 范围之内的话,则执行sum++,累加英文字母个数;
        }
        //以下统计句子中的英文单词个数; 
        for (i = 0; (c = string[i]) != ''; i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!='',即未到达结束符''的话,执行i++; 
        {                              //''用作字符串的结束符。它的ASCII数值是0。
            if (c<'A' || c>'Z'&&c<'a' || c>'z')   //设定条件:如果字符 c 遇到A~Z和a~z范围之外其它符号字符的话,包括遇到空格' '; 
                word = 0;      //上面条件为真时,执行这里,置word=0,表示未遇到单词,或,一个单词已结束,同时也意味着要开始遇到下一个新单词; 
            else if (word == 0)  //当条件(word==0)为真,执行下面花括号里面的语句;当word==0时,表示未遇到字母,即未遇到单词,或上一个单词已结束; 
            {
                word = 1;   //那么置word=1,即,表示下一个新单词开始, 
                num++;   //执行num++,累加英文单词的个数;
            }
        }
        printf("
    ");
        printf("您输入的这句英文句子中共包含%d个英文字符,%d个英文单词。
    ", sum, num);
    
    }

     2.输入任意一个英文句子,输出最长单词。

    思路

    1.建立一个足够放下句子的字符串。例如char[100];按照实际情况来确定数组的大小。
    2.然后将输入的句子保存到字符串中。
    3.开始寻找最长单词:
        1)定义一个临时字符串,用于记录单词。
        2)再定义一个用于记录最长单词的字符串。
        3)开始从英文句子中分离单词,如果遇到非字母结尾的都是一个单词。
        4)然后记录该单词的长度,并把单词保存到最长单词字符串中。
        5)以此类推,每次遇到比当前字符串长的单词时都要重新保存最长单词字符串。
     1 #include <stdio.h>
     2 #include <string.h>
     3 int main()
     4 {
     5     char s[128];
     6     char *p1, *p2;
     7     int max = 0, len = 0;
     8     printf("Input a string: ");
     9     gets(s);
    10     p1 = s;
    11     for (int i = 0; i <= strlen(s); i++)
    12     {
    13         if ((s[i] == ' ') || (s[i] == '')) // 如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。
    14         {
    15             if (len>max)
    16             {
    17                 max = len;
    18                 p2 = p1;
    19             }
    20             len = 0;
    21         }
    22         else // 如果当前字符非空,如果当前长度为0,则表示新单词。
    23         {
    24             if (len == 0)
    25                 p1 = &s[i];
    26             ++len;
    27         }
    28     }
    29     while (*p2 && *p2 != ' ')
    30         printf("%c", *p2++);
    31 }
  • 相关阅读:
    远程过程调用RPC
    CAP原理
    2021/03/08阿里在线笔试问题总结
    水容器问题
    rand5生成rand3和rand7
    二维数组查找K(Go语言)
    判别IP为IPV4或者IPV6 (Go语言)
    路径总和(Go)
    合并K个升序链表(Go)
    delphi idhttp提交网址包含中文
  • 原文地址:https://www.cnblogs.com/phix/p/7103176.html
Copyright © 2011-2022 走看看