c语言经典测试题11

1.题1

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

上述代码的运行结果是什么呢?

我们来分析一下:我们创建了一个数组,和两个指针变量,分别是a、p、q,我们发现p中保存的是数组下标为5的数据的地址,q中保存的是NULL,*q=*(p+5),看上去没什么问题就是将*(p+5)的结果赋值给*q,但是在这里我们发现q为NULL,这里对NULL进行了解引用,所以该代码运行起来会报错。

2.题2

设有定义 char *p[]={"Shanghai","Beijing","Honkong"}; 则结果为 j 字符的表达式是( )

A: *p[1] +3 B: *(p[1] +3) C: *(p[3] +1) D: p[3][1]

我们来分析一下:这样初始化的结果是将字符串的首元素地址存入到p中,在这里我们的p[1]其实是找到第2个元素,但是第二个元素就是其首元素地址,再加3就是j的地址然后将其解引用拿到的就是j,这里有点类似二维数组的模式。所以应该选B。

3.题3

int a[3][2] = {1, 2, 3, 4, 5, 6}, *p[3];
p[0] = a[1];

如上述代码中我们定义了一些数据,则 *(p[0]+1) 所代表的数组元素是( )

A: a[0][1] B: a[1][0] C: a[1][1] D: a[1][2]

我们来分析一下:我们创建了一个二维数组a,结构为3行2列 ,上述的赋值方法就是按顺序来赋值的,我们又创建了一个指针数组p,a[1]其实为a[1][0],所以p[0]保存的地址为a第二个元素的地址,也就是它的第二个一维数组的地址,所以p[0]+1就是第二个一维数组的第二个元素的地址,我们再将其解引用,所以我们应该选择C。

4.题4

关于指针下列说法正确的是【多选】( )

A: 任何指针都可以转化为void *  B: void *可以转化为任何指针

C: 指针的大小为8个字节 D: 指针虽然高效、灵活但可能不安全

其实这一道题主要考的是x86和x64环境下指针的不同,我们知道x64环境下大小为4个字节,x86为8个字节。所以这题就只有C错误。

5.题5

求输出n以内(含n)完全数的个数。完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。 注意:本题输入含有多组样例。 输入描述:输入一个数字n 输出描述:输出不超过n的完全数的个数。

#include <stdio.h>
#include <math.h>
int is_perfect_num(int num)
{int sum = 1;for (int i = 2; i <= sqrt(num); i++) {if (num % i == 0) {//判断是否能够整除i,能整除则i和结果都是约数sum += i; //与除数相加if (i != sqrt(num))//防止除数和结果相同的情况下重复相加sum += num / i; //与相除结果相加}}if (sum == num) return 1;return 0;
}
int main()
{int n;while (~scanf("%d", &n)) {int count = 0;for (int i = 2; i <= n; i++) {//对n以内的数字都进行判断是否是完全数,注意1不参与判断if (is_perfect_num(i)) count++;}printf("%d\n", count);}return 0;
}

大家可以多思考度多用自己的方式去着写写看看。

谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/513365.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《汇编语言》 第3版 (王爽)实验6解析

第7章 实验6解析 &#xff08;1&#xff09;.编程&#xff0c;完成问题7.9中的程序。 问题7.9 编程&#xff0c;将datasg段中每个单词的前4个字母改为大写字母。 assume cs:codesg,ss:stacksg,ds:datasgstacksg segment ;开辟了栈段空间&#xff0c;容量为16个字节dw 0,0,0,0…

Ai-WB2-32S在window下使用vs 和 msys2编译以及烧录

文章目录 前言一、使用前准备第一步 安装vscode第二步 安装msys2 二、使用步骤1.打开MSYS2 MINGW64&#xff08;1&#xff09;在开始栏中找到MSYS2 MINGW64并打开&#xff08;2&#xff09;安装git&#xff08;3&#xff09;安装make&#xff08;4&#xff09;安装好之后的文件…

C# 中 Interpreter 用于解释执行代码的工具

在 C# 中&#xff0c;Interpreter 是一个用于解释执行代码的工具&#xff0c;它提供了一种在运行时动态解释和执行 C# 代码的方式。Interpreter 类位于 Microsoft.CodeAnalysis.CSharp.Scripting 命名空间中&#xff0c;它允许你通过编写代码字符串来执行 C# 代码。 下面是一些…

每日一题——LeetCode1576.替换所有的问号

方法一 3个字母原则 把&#xff1f;替换为和他左右都不相等的字符&#xff0c;那么找3个字符abc&#xff0c;&#xff1f;总能替换为abc中的一个字符&#xff0c;遍历字符串找到所有&#xff1f;&#xff0c;再遍历abc把&#xff1f;替换为abc中的一个字符 var modifyString …

Redis缓存【重点】

参考链接 https://xiaolincoding.com/redis/cluster/cache_problem.html#%E7%BC%93%E5%AD%98%E9%9B%AA%E5%B4%A9 目录 缓存雪崩大量数据同时过期Redis 故障宕机 缓存击穿第一种方案&#xff0c;非法请求的限制第二种方案&#xff0c;缓存空值或者默认值第三种方案&#xff0c;使…

【C++】继续学习 string类 吧

开始使用 string类 吧 1 继续学习1.1 扩容机制1.2 string类对象的访问及遍历操作1.3 string类对象的修改操作1.4 其他一些成员函数 2 实践解决问题&#xff1a;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

透明玻璃屏幕为什么那么贵

透明玻璃屏幕之所以价格较高&#xff0c;主要是由于以下几个方面的原因&#xff1a; 技术研发与创新&#xff1a;透明玻璃屏幕作为一种先进的显示技术&#xff0c;其研发和制造过程涉及到许多复杂的技术。这些技术的研发和创新需要投入大量的资金和时间。此外&#xff0c;透明玻…

操作系统概念概述

软件设计师11--操作系统 考点1&#xff1a;操作系统的作用操作系统概述例题&#xff1a; 考点2&#xff1a;特殊的操作系统例题&#xff1a; 考点1&#xff1a;操作系统的作用 操作系统概述 管理系统的硬件、软件、数据资源控制程序运行人机之间的接口应用软件与硬件之间的接口…

MySQL 缓存策略

MySQL 缓存方案用来干什么 ? 缓存用户定义的热点数据&#xff0c;用户直接从缓存中获取热点数据&#xff0c;降低数据的读写压力。场景分析 内存访问速度是磁盘访问速度的 10 万倍。读的需求远远大于写的需求MySQL 自身缓冲层跟业务无关。MySQL 作为项目主要数据库&#xff0…

winui开发笔记(五)应用程序图标

应用程序图标、发布者、显示名称大部分都在package.appxmanifest清单文件中&#xff0c;可以正常打开&#xff0c;也可以使用xml文本编辑器打开。 以下是一个正常的应用程序中所有的与图标相关的图片&#xff1a; 但是设置之后会有一圈白&#xff0c;包括在电脑最下边一行&…

Python异步IO库之uvloop使用详解

概要 在Python中,异步编程已经成为处理高并发和IO密集型任务的主要方式之一。而uvloop库则是一个专门针对异步IO操作进行优化的库,它能够显著提高异步程序的性能。本文将深入探讨uvloop库的使用方法、功能特性以及如何利用它来加速异步IO编程。 什么是uvloop库? uvloop是一…

Tensorflow2.0笔记 - 计算梯度

本笔记主要记录tf.GradientTape和tf.gradient的用法 import tensorflow as tf import numpy as nptf.__version__#要计算梯度的所有参数计算过程必须放到gradient tape中 #with tf.GradientTape as tape: w tf.constant(1.) x tf.constant(2.)with tf.GradientTape() as tap…