当前位置: 首页 > news >正文

10.7.复习

文章目录

  • 前言
  • 一.选择题
    • 1.第一题
    • 2.第二题
    • 3.第三题
    • 4.第四题
    • 5.第五题
    • 二.编程题
    • 1.第一题
    • 2.第二题


前言


一.选择题

1.第一题

设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )

A: n=0;while(ch=getchar()!='\n')n++; B: n=0;while(getchar()!='\n')n++;
C: for(n=0;getchar()!='\n';n++); D: n=0;for(ch=getchar();ch!='\n';n++);

答案解析:
正确答案:D
对于for循环,其中第一项初始化表达式只执行一次,因此ch只从输入流中取一个字符,之后就再不会取字符,因此会死循环

2.第二题

运行以下程序后,如果从键盘上输入 65 14<回车> ,则输出结果为( )

int main()
{
  int m, n;
  printf("Enter m,n;");
  scanf("%d%d", &m,&n);
  while (m!=n)      //1
 {
    while(m>n) m=m-n; //2
    while(n>m) n=n-m; //3
 }
  printf("m=%d\n",m);
  return 0;
} 
A: 3 B: 2 C: 1 D: 0

答案解析:
正确答案:C
此题技巧是耐心,考查while循环和循环嵌套的理解,初值m=65,n=14;循环1判断m!=n为真,来到循环2判断m>n为真,执行m=m-n;直到m=9,n=14;循环2结束来到循环3判断n>m为真,执行n=n-m;直到m=9,n=5;循环3结束回到循环1,如此往复直
到m==n时,循环结束

3.第三题

若运行以下程序时,从键盘输入 ADescriptor<回车> ,则下面程序的运行结果是( )

#include <stdio.h>
int main()
{
  char c;
  int v0=0,v1=0,v2=0do
 {
    switch(c=getchar())
   {
      case'a':case'A':
       case'e':case'E':
      case'i':case'I':
      case'o':case'O':
      case'u':case'U':v1 += 1;
      default:v0+= 1;v2+=1;
   }
 }while(c!='\n');
  printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
  return 0;
  A: v0=7,v1=4,v2=7 B: v0=8,v1=4,V2=8 C: v0=11,v1=4,v2=11 D: v0=12,v1=4,v2=12
}

答案解析:
正确答案:D
代码switch语句中没有break,则每次找到入口进入后,顺序执行到代码块结束为止。例如当c为’A’时,从case 'A’进入,先后执行v1+=1;v0+=1;v2+=1;,而当c为’p’时,从default进入,先后执行v0+=1;v2+=1;,容易看出最终v0和v2是相等的

4.第四题

以下程序段的功能是( )

# include<stdio.h>
int main()
{
	int a[] = { 4, 0, 2, 3, 1 }, i, j, t;
	for (i = 1; i < 5; i++)
	{
		t = a[i];
		j = i - 1;
		while (j >= 0 && t < a[j])
		{
			a[j + 1] = a[j];
			--j;
		}
		a[j + 1] = t;
	}
	return 0;
}
A: 对数组a进行插入排序(升序) B: 对数组a进行插入排序(升序)
C: 对数组a进行选择排序(升序) D: 对数组a进行选择排序(降序)

答案解析:
正确答案:B
这是一个升序插入排序算法,读完即懂,第i次排序时,t=a[i]作为临时变量保存这一次待插入值,j=i-1故而while循环中j是从下标i的前一项开始向下标0遍历,判断t<a[j]为真时a[j+1]=a[j],j+1在遍历之初是等于i的,也就是将下标i位置用前边较大的值覆盖,依次把前边的元素后移,直到a[j]不大于t的时候将t插入到下标j+1位置,使得前i个元素达到有序,方便第i+1次排序操作,所以第i次排序时前边i-1个元素都是有序的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.第五题

5、执行下面的程序段,语句3的执行次数为( )

for(i = 0; i <= n-1; i++)  // (1)
  for(j = n; j > i; j--)  // (2)
    state;        // (3)
    A: n(n+2)/2 B: (n-1)(n+2)/2 C: n(n+1)/2 D: (n-1)(n+2)

答案解析:
正确答案:C
外循环有n次,当i=0,内循环为n次,当i=1,内循环为n-1次,当i=2时,内循环为n-2次,以此类推,总次数为n+(n-1)+(n-2)+…+2+1,就是个等差数列,等于n(n+1)/2

二.编程题

1.第一题

在这里插入图片描述


int* findErrorNums(int* nums, int numsSize, int * returnSize)
{
    int* arr = (int*)malloc(sizeof(int) * (numsSize + 1));
    int num = ((1 + numsSize) * numsSize) / 2;
    int he = 0;
    for (int j = 0; j < numsSize; j++)
    {
        he = he + nums[j];
    }
    for (int i = 0; i < numsSize + 1; i++)
    {

        arr[i] = 0;
    }
    int* ret = (int*)malloc(sizeof(int) * 2);
    int i = 0;
    for (i = 0; i < numsSize; i++)
    {
        arr[nums[i]] = 1;
        ;
    }
    for (i = 1; i < numsSize + 1; i++)
    {
        if (arr[i] == 0)
        {
            ret[0] = i - num + he;
            ret[1] = i;
            break;
        }
    }
    free(arr);
    * returnSize=2;
    return ret;
}

在这里插入图片描述

2.第二题

在这里插入图片描述

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main()
{
    int n;
    char arr[100];
    int a = 0, b = 0, c = 0;

    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%s", &arr);
        if (strlen(arr) < 8)
        {
            printf("NO\r\n");
            continue;
        }
        if (isdigit(arr[0]) != 0)
        {
            printf("NO\r\n");
            continue;
        }
        for (int j = 0; j < n; j++)
        {
            if (islower(arr[j]) != 0)
                a++;
            if (isupper(arr[j]) != 0)
                b++;
            if (isdigit(arr[j]) != 0)
                c++;
        }
        if (a == sizeof(arr) || b == sizeof(arr) || c == sizeof(arr))
        {
            printf("NO\r\n");
            continue;
        }
        printf("YES\r\n");
    }
}

相关文章:

  • python专区--容器详解(字典与集合)
  • Java多线程10—如何使用线程池创建线程?
  • python数据分析及可视化(七)pandas数据清洗,显性问题(异常、缺失、重复),隐形问题(离散、面元、字符串)
  • Java实现拼图小游戏(5)—— 美化界面(含源码阅读)
  • 【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
  • C语言数组详解
  • DS | 冲刺阶段考点整理 —— 绪论、线性表、栈与队列、特殊矩阵、串
  • 实验5 循环结构
  • 【漏洞复现-Apache-目录穿越文件读取-RCE】vulfocus/apache(cve_2021_41773)
  • 基于matlab的SVM支持向量机分类仿真,核函数采用RBF函数(提供matlab仿真录像)
  • 机器学习基础:拉格朗日乘子法
  • Matlab 与 Python 基于窗函数的滤波器设计对比 之 凯瑟窗
  • java web开发(从spring boot到spring cloud)
  • 看呆了!二面高德 Java 岗,问了一堆源码,微服务,分布式,Redis,心累
  • 2022华为杯研究生数学建模竞赛B题思路解析
  • CAP 一致性协议及应用解析
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • iOS编译提示和导航提示
  • isset在php5.6-和php7.0+的一些差异
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • opencv python Meanshift 和 Camshift
  • PhantomJS 安装
  • PHP那些事儿
  • SAP云平台里Global Account和Sub Account的关系
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue小说阅读器(仿追书神器)
  • Windows Containers 大冒险: 容器网络
  • 阿里研究院入选中国企业智库系统影响力榜
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 理解在java “”i=i++;”所发生的事情
  • 日剧·日综资源集合(建议收藏)
  • 数据可视化之 Sankey 桑基图的实现
  • ionic异常记录
  • 阿里云重庆大学大数据训练营落地分享
  • ###项目技术发展史
  • $.each()与$(selector).each()
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (Java)【深基9.例1】选举学生会
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (算法二)滑动窗口
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (状压dp)uva 10817 Headmaster's Headache
  • .htaccess配置重写url引擎
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core 6 集成和使用 mongodb
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 使窗口永不获得焦点
  • .Net6 Api Swagger配置
  • @ModelAttribute注解使用
  • @RequestBody与@ResponseBody的使用
  • @Validated和@Valid校验参数区别