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

10.20复习

文章目录

  • 前言
  • 一.选择题
    • 1.第一题
    • 2.第二题
    • 3.第三题
    • 4.第四题
    • 5.第五题
    • 6.第六题
    • 7.第七题
    • 8.第八题
    • 9.第九题
    • 10.第十题
  • 二.编程题
    • 1.第一题
    • 2.第二题
    • 3.第三题
    • 4.第四题


前言


一.选择题

1.第一题

1、如下程序的运行结果是( )

char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab

解析 c
以字符串形式打印,\0结束

2.第二题

2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )
A: a[2][0] B: a[2][3] C: a[0][3] D: a[1>2][1]

解析 D
其他数组存在越界

3.第三题

3、在下面的字符数组定义中,哪一个有语法错误( )
A: char a[20]=“abcdefg”; B: char a[]=“x+y=5.”; C: char a[15]; D: char a[10]=‘5’;

解析 D
D中的’5’是一个字符常量,不能给字符型数组a初始化

4.第四题

4、下列定义数组的语句中正确的是【多选】( )
A:

#define size 10
char str1[size], str2[size+2];

B: char str[]; C: int num[‘10’]; D: int n=5; int a[n][n+2];

答案解析:
正确答案:AC
A选项:宏替换,没问题;B选项:非法定义,一维数组必须定义数组元素个数;C选项:字符’0’,转换成十进制为48,所以该选项最终为int num[48];D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

5.第五题

5.已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )
在这里插入图片描述

答案解析:
正确答案:BC
*(x+i)等价于下x[i];
b c 问题都是一样的 等价于
*(x+i+j)越界了

6.第六题

6.下列程序的输出是( )

#include<stdio.h>
int  main()
{
  int a [12]= {1,2,3,4,5,6,7,8,9,10,11,12}*p[4],i;
  for(i=0;i<4;i++)
    p[i]=&a [i*3];
  printf("%d\n",p[3][2]);
  return 0;
}

A: 上述程序有错误 B: 6 C: 8 D: 12

答案解析:
正确答案:D
p是一个指针数组,p[i] = &a[i*3]相当于是把数组a每3个一组分开并把每组的首地址存在p数组,此时p类似一个4行3列的二维数组,p[3][2]就是4行第3个元素12

7.第七题

7、二维数组X按行顺序存储,其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为( )
A: Oxf8b821c4 B: Oxf8b821a6 C: Oxf8b82198 D: Oxf8b821c0

答案解析:
正确答案:A
假设每行有n个元素:那x[9][9]元素的地址 - x[4][4]元素的地址 = 0x21c-0x140=5n+5(21c和140是地址末三位的十六进制数),这里n是43,假设x[7][7]的地址是z,x[7][7]元素的地址 - x[4][4]元素的地址 = z-0x140 = 3n+3,z= 3n+3+140 = 3*43+3+0x140 = 0x84+0x140 = 0x1c4,看地址的尾数,选择A

8.第八题

8、以下哪个选项可以正确描述 sizeof(double) ( )
A: 一个整型表达式 B: 一个双精度型表达式 C: 一个不合法的表达式 D: 一种函数调用

答案解析:
正确答案:A
sizeof是C语言中的一个操作符,不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数,结果是无符号整数,因此可以把它看作是整型表达式。所以选择A

9.第九题

9、下列代码运行后的结果是什么( )

int main()
{
  char a = 'a',b;
  printf("%c,", ++a);
  printf("%c\n", b = a++);
  return 0;
}

A: b,b B: b,c C: a,b D: a,c

答案解析:
正确答案:A
变量a里边存的是字符’a’,第一次输出先加加再输出,输出的是’b’;第二次输出的时候,a先赋值再加加,赋值给b的就是a原来的值,输出b的时候的还是’b’

10.第十题

10、以下逗号表达式的值为( )

(x = 4 * 5 , x * 5) , x + 5;

A: 25 B: 20 C: 100 D: 45

解析 A
逗号表达式,从前到后依次计算子表达式,而结果是最后一项的值,所以原式中括号可以去掉,x的值被赋值为20,x*5不改变x的值,因此输出25

二.编程题

1.第一题

在这里插入图片描述

#include <stdio.h>
int main()
{
    char a[500]={0};
    char b[128]={0};
    scanf("%s",a);
    int i=0;
    int sum=0;
   while(a[i])
   {
       b[a[i]]=1;//桶排序将值赋值为1,相加就是数量和
       i++;
   }
    for(i=0;i<128;i++)
    {
        sum+=b[i];

    }
    printf("%d",sum);
    return 0;

}

2.第二题

在这里插入图片描述



int majorityElement(int* nums, int numsSize)
{
    int count=1;
    int i=0;
    int cmp=nums[0];
    for(i=1;i<numsSize;i++)
    {
        if(cmp==nums[i])
        {
            count++;
        }
        else
        count--;
        if(count==0)
        {
            cmp=nums[i+1];
        }
    }
    return cmp;

}

3.第三题

在这里插入图片描述

int* selfDividingNumbers(int left, int right, int* returnSize)
{
   int  static arr[10000] ;
    int i=0;
    * returnSize=0;
    for(i=left;i<=right;i++)
    {
        int num=i;
        while(num)
        {
            int number=num%10;
            if(number==0||i%number!=0)
            {
                break;
            }
            num/=10;

        }
        if (num == 0) 
        {
            arr[(*returnSize)++] = i;
        }
        
    }
   
    return arr;

}

4.第四题

在这里插入图片描述

int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{
    int *ret = (int *)malloc(numsSize *sizeof(int));
    int left=1,right=1;
    * returnSize=numsSize;

    int i=0;
    for(i=0;i<numsSize;i++)
    {
        ret[i]=left;
        left*=nums[i];
    }
    for(i=numsSize-1;i>=0;i--)
    {
        ret[i]*=right;
        right*=nums[i];
    }
    return ret;
    }

在这里插入图片描述

相关文章:

  • 自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
  • Pygame实战(一):随机抽位置
  • vue支付项目-APP微信支付功能
  • 新手如何自学python?
  • Java的日期与时间之java.time.ZonedDateTime简介说明
  • Vue整合Markdown组件+SpringBoot文件上传+代码差异对比
  • MySQL高级篇——索引简介
  • C-内存函数(大量图解,函数实现)
  • 【STM32】MDK下的C语言基础
  • web前端面试题附答案041 - 曾经一个百度面试官问我,localStorage可以存对象吗?
  • 【Linux学习】权限
  • 基于AT89C51单片机的直流数字电压表设计
  • 脚本控制向Android模拟拨打电话,发送短信,定位设置功能
  • 深度理解微服务
  • 在 ABAP 开发工具运行时错误显示界面里植入思否猫
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js正则,这点儿就够用了
  • Linux中的硬链接与软链接
  • Redis 懒删除(lazy free)简史
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • windows-nginx-https-本地配置
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 二维平面内的碰撞检测【一】
  • 官方解决所有 npm 全局安装权限问题
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微服务框架lagom
  • 阿里云服务器购买完整流程
  • ​人工智能书单(数学基础篇)
  • "无招胜有招"nbsp;史上最全的互…
  • $ git push -u origin master 推送到远程库出错
  • $.proxy和$.extend
  • (12)Linux 常见的三种进程状态
  • (poj1.2.1)1970(筛选法模拟)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分享)自己整理的一些简单awk实用语句
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十五)使用Nexus创建Maven私服
  • (一)WLAN定义和基本架构转
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)OpenStack Hacker养成指南
  • ***检测工具之RKHunter AIDE
  • .bat批处理出现中文乱码的情况
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 分布式技术比较
  • .net程序集学习心得
  • .NET开发者必备的11款免费工具
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)