IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言作业1 -> 正文阅读

[C++知识库]C语言作业1

第一题

从键盘输入一个英文句子,统计其中的单词个数,然后输出。出于方便考虑,本题所说的单词,是指仅由英文字母组成最长序列。下面样例中的U.S.理解为2个单词。假定句子不超过128个字符。

提示:对表示句子的字符串中的内容依次进行检查。应该需要一个变量来记录当前是否已经遇到一个单词。

输入样例:

On October 26, U.S. News & World Report released the 2022 Best Global Universities Rankings.?

输出结果:

13

思路:

单词以字母开始以字母结束,只需要判断这个就可以了(注意字母的范围是A-Z和a-z,非字母的范围是小于A,大于Z且小于a,大于z)

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
? ? char ch;
? ? int count = 0;
? ? while((ch = getchar()) != '\n')
? ? {


? ? ? ?if((ch <= 'z'&&ch >= 'a')||(ch <= 'Z'&&ch >= 'A'))
? ? ? ? {
? ? ? ? ? ? while(1)//无条件进入循环
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ch = getchar();//这里的ch会覆盖掉最上面的那个ch
? ? ? ? ? ? ? ? if((ch > 'z')||(ch < 'a'&&ch > 'Z')||(ch < 'A'))//非字母的范围
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? count++;//计数
? ? ? ? ? ? ? ? ? ? break;//不管break在哪个位置,只要在循环里出现就可以跳出循环
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

? ? ? ? }

? ? ? ? }
? ? ? ? printf("%d\n",count);
? ? ? ? return 0;

? ? }

第二题

从键盘输入若干个从小到大排列的整数,再输入一个整数a,为了把a插入到该已经排序的整数序列中,需要从前往后或者从后往前依次查找应该插入的位置(如序列中存在相同整数,则插入到该整数之前。位置从1开始计数)。具体地说,如果序列中有n个元素,新来的a如果应该插入到第n个元素之前,则输出n。如果应该放在最后一个元素之后,则输出n+1。假定输入的整数序列中整数的个数不超过10。

在下面的样例中,第一行为将要输入的整数个数,第二行为输入的整数序列,第三行为要插入的数。

输入样例1:

5

0 3 4 7 8

6

输出结果1:

4

输入样例2:

5

0 3 4 7 8

9

输出结果2:

6

输入样例3:

4

1 3 4 8

-2

输出结果3:

1

思路:

不用管插入新数之后的数组,只需要确定新数插入的位置即可,做一个判断,如果遇到比输入的数大的数,直接打印该数在数组中的位置,并跳出循环(注意数组的下标从0开始),如果遇到的数一直都比输入的数大的话,直接打印数组中数的个数加一,过程中可用一个标记数。

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
? ? int arr[10],i,a,x,tmp=0;
? ? scanf("%d",&a);//确定数组中数的个数
? ? for(i = 0;i<a;i++)
? ? {
? ? ? ? scanf("%d",&arr[i]);
? ? }//构造数组
? ? scanf("%d",&x);//确定要输入的新数
? ? for(i = 0;i<a;i++)
? ? {
? ? ? ? if(x < arr[i])
? ? ? ? {
? ? ? ? ? ? printf("%d\n",i+1);//因为数组的下标从0开始,所以这里打印的是i+1
? ? ? ? ? ? tmp=1;//tmp做中间的判断量
? ? ? ? ? ? break;//跳出循环
? ? ? ? }
? ? }
? ? if(tmp==0)
? ? ? ? printf("%d\n",a+1);//注意这里不能用输入的x跟arr[n]比较,这里的arr[n]应该是个地址量,不? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是整数型
? ? return 0;
}

第三题

对于一个已经排序的序列,要查找某个数在其中的位置,并不需要按顺序逐一比较,可以找位于这个序列中间位置的元素,判断要查找的数在它之前还是之后,然后就可以缩小范围,这样做下去一定会确定是否找到,该方法被称为二分法。

从键盘输入若干个整数,对它们进行排序,然后再输入一个整数a,通过二分法查找a在之前排好序的整数序列中的序号(从1开始),打印该序号。如果没有找到,则打印no。

在下面的样例中,第一行为将要输入的整数个数,第二行为输入的整数序列,第三行为要查找的数。

假定输入的整数序列中整数的个数不超过40。

提示:因为二分查找算法相对独立,建议把二分查找写成一个函数,在main中进行调用

输入样例1:

5

0 8 7 3 4

6

输出结果1:

no

输入样例2:

6

9 2 6 4 8 7

6

输出结果2:

3

思路:

输入数的过程和第二题一样,但下面的部分看不明白

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
? ? int k,n,i=0;
? ? scanf("%d\n",&n);
? ? int arr[n];
? ? for(;i<n;i++)
? ? ? ? scanf("%d",&arr[i]);
? ? scanf("%d",&k);
? ? int sz = sizeof(arr)/sizeof(arr[0]);
? ? int left=0;
? ? int right=sz-1;
while (left<=right)
{
? ? ? ? int mid=(left+right)/2;
? ? if(arr[mid]>k)
? ? {
? ? ? ? right=mid-1;
? ? }
? ? else if(arr[mid]<k)
? ? {
? ? ? ? left=mid+1;
? ? }
? ? else
? ? {
? ? ? ? printf("%d\n",mid+1);
? ? ? ? break;
? ? }
}
if(left>right)
? ? printf("no");
? ? return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:43:57  更:2021-11-27 09:44:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:39:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码