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("请从键盘输入一行需要查询的英文句子,进行单词数量统计:\n\n");
    gets_s(string);   //从键盘获得输入的字符串;
                    //以下统计句子中的英文字符个数;
    for (i = 0; (c = string[i]) != ‘\0‘; i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!=‘\0‘,即未到达结束符‘\0‘的话,执行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]) != ‘\0‘; i++) //for循环语句,遍历句子中的每个字符;初始化i=0;若字符c!=‘\0‘,即未到达结束符‘\0‘的话,执行i++;
    {                              //‘\0‘用作字符串的结束符。它的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("\n");
    printf("您输入的这句英文句子中共包含%d个英文字符,%d个英文单词。\n", 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] == ‘\0‘)) // 如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。
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 }
时间: 2024-10-21 17:07:37

c语言试题集(1)的相关文章

Java程序员面试题集(1-50)

下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja

Java程序员面试题集(71-85)

Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言).面向对象的设计原则(六原则一法则).GoF设计模式.企业级设计模式.JDBC(Java数据库连接).XML(可扩展标记语言)等知识. 71.UML是什么?UML中有哪些图? 答:UML是统一建模语言(Unified Modeling Language)的缩写,它发表于1997年,综合了当时已经存在的面向对象的建模语言.方法和过程,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化

Java基础面试题集(二)

Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). 3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向

Java面试题集(1-50)

说明:最近已经重新发布了最新的<Java面试题大全>,欢迎大家点击浏览. 下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计

转:Java面试题集(1-50)

Java程序员面试题集(1-50) http://blog.csdn.net/jackfrued/article/details/17403101 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息

iOS面试题集

现在寒假时间在家里面无法敲代码了,但是自己总要找些事情来做,回头想想马上就要开始就业了,所以不免要参加面试,于是便开始了面试题集的浏览和探索,今天下午我看了一部分的面试题感觉还是挺实用的,所以以后还是要坚持的啦,望和我一样的友友们,都要好好利用这个假期,来好好的复习总结多看些有用的东东,以免到时见手忙脚乱的,我先在这里和大家分享我今天所看到的知识点吧,由于不能使用软件,所以今天就不能上代码了,望大家多动海涵哦! 由于是出于我们共同学习的目的,所以今天我在这里就先列上题目了,都是些看似很简单的东东

PHP 经典面试题集

这篇文章介绍的内容是关于PHP 经典面试题集 PHP 经典面试题集,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 结合我自己面试情况,面对的一些php面试题列举出来,基本上结合自己的看法回答的,不妥的地方请大家指出去,与大家一起讨论分析,也希望能帮到正在面试的童鞋们: 1.表单提交中的Get和Post的异同点 get 请求一般用于向服务端获取数据,post 一般向服务端提交数据 get 传输的参数在 url 中,传递参数大小有限制,post 没有大小限制, get 不安全,pos

Java程序员面试题集(51-70)

摘要:这一部分主要讲解了异常.多线程.容器和I/O的相关面试题.首先,异常机制提供了一种在不打乱原有业务逻辑的前提下,把程序在运行时可能出现的状况处理掉的优雅的解决方案,同时也是面向对象的解决方案.而Java的线程模型是建立在共享的.默认的可见的可变状态以及抢占式线程调度两个概念之上的.Java内置了对多线程编程的支持在20世纪90年代可以说是一个巨大的进步,但是最初的设计在当下看来已经给程序带来很多困扰了.感谢Doug Lea在Java 5中提供了他里程碑式的杰作java.util.concu

C语言问题集

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 征服C指针:P70<br>#include "stdio.h" char *int_to_str(int int_value){     static char buf[20];     sprintf(buf,"%d",int_value);     return buf; } int main(){         char *str1,*str2;     str1=