C语言指针基础题(二)

目录

  • 例题一
    • 题目解析及答案
  • 例题二
    • 题目解析及答案
  • 例题三
    • 题目解析及答案
  • 例题四
    • 题目解析及答案
  • 例题五
    • 题目解析及答案

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐓🏀 python

例题一

写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整形一维数组

题目解析及答案

这道题的核心就在于数组名是数组首元素地址,也就是*(arr+1)=arr[1]
详细可以看C语言深入理解指针(非常详细)(二)
方法一

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p = arr;
	int sz = sizeof(arr) / sizeof(int);
	for(int i=0;i<sz;i++)
	{
		printf("%d ", *(p + i));
	}
	return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/41234a3286624acaa07f5c850ae06052.png)

方法二

int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int* p = arr; 
    for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
    {
        printf("%d ", *p);  
        ++p;                 
    }
    
   	return 0;
}

在这里插入图片描述

例题二

写一个函数,可以逆序一个字符串的内容

题目解析及答案

方法一

void Reverse(char* str)
{
    char* left = str;
    char* right = str + strlen(str)-1;
    while(left < right)
    {
        char temp = *left;
        *left = *right;
        *right = temp;
        ++left;
        --right;
    }
}
int main()
{
    char str[] = "hello jack";
    Reverse(str);
    return 0;
}

在这里插入图片描述

这个方法其实就是找到字符串中左右字符的地址,通过解引用实现交换

注意:如果是在线OJ时,必须要考虑循环输入,因为每个算法可能有多组测试用例进行验证,参考以下main函数写法

方法二

int main()
{
    char str[101] = {0};
    while(gets(str))
    {
        Reverse(str);
        printf("%s\n", str);
        memset(str, 0, sizeof(str)/sizeof(str[0]));
    }
    return 0;
}

关于memset的实现在之前C语言内存函数有写过

例题三

用C语言在屏幕上输出以下图案:
在这里插入图片描述

题目解析及答案

这是一个对称图形,其中有图形由空格符号还有*号组成

号以奇数的规律变化,空格符号和号在同一排的总数加起来为13

通过图形规律可以知道上半图形中 *号可以以循环for(i=1;i<=13;i=i+2)来表示

对于空格符号,左半部分的规律是j<=(13-i)/2,j++,右半部分则是j>=(14-(13-i)/2)

方法一

int main()
{
	int i = 1, j = 1;
	for (i = 1; i <= 13; i = i + 2)
	{
		while (j <= 13)
		{
			if (j<=(13 - i) / 2 || j>=(14 - (13 - i) / 2))
			{
				printf(" ");
				j++;
			}
			else
			{
				printf("*");
				j++;
			}
		}
		printf("\n");
		j = 1;
	}
	for (i = 11; i >= 1; i = i - 2)
	{
		while (j <= 13)
		{
			if (j <= (13 - i) / 2 || j >= (14 - (13 - i) / 2))
			{
				printf(" ");
				j++;
			}
			else
			{
				printf("*");
				j++;
			}
		}
		printf("\n");
		j = 1;
	}
	return 0;
	}

在这里插入图片描述
方法二

int main()
{
	int line = 0;
	int i = 0;
	scanf("%d", &line);//输入7
	for(i=0; i<line; i++)
	{
		int j = 0;
		for(j=0; j<line-1-i; j++)
		{
			printf(" ");
		}
		for(j=0; j<2*i+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	for(i=0; i<line-1; i++)
	{
		int j = 0;
		for(j=0; j<=i; j++)
		{
			printf(" ");
		}
		for(j=0; j<2*(line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

在这里插入图片描述

例题四

求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5 ^3+3 ^3,则153是一个“水仙花数”。

题目解析及答案

我们用i来表示水仙花数,通过for循环来表示0到100000的水仙花数

为了知道水仙花数有多少位,我们需要用到一个while循环,循环判断条件位水仙花数的余数不为0,因此我们使用一个变了j来保存水仙花数i,然后再进行判断,既while(j%10)

而为了计算有多少位,我们需要对每次循环用count来记录,然后每次循环让水仙花数减少一位数,也就是count++,j=j/10

之后我们再让j重新等于i,来进行判断是否是水仙花数

我们用一个变量sum来计算每位数的n次方总和,也就是sum=sum+pow(j%10,count)

最后就是判断了

#include<math.h>
int main()
{
	int i = 0, j = 0, sum = 0,count=0;
		for (i = 0; i < 100000; i++)
		{
			j = i;
			while (j % 10)
			{
				count++;
				j = j / 10;
			}
			j = i;
			for (int k = count; k >= 0; k--)
			{
				sum = sum + pow(j % 10, count);//pow数计算一个数的次方是多少
				j = j / 10;
			}
			if (i == sum)
				printf("%d ", i);
			sum = 0;
			count = 0;
	    }
	return 0;
}

在这里插入图片描述
这道题for循环用的比较多,如果对for循环有疑惑的可以看我之前写的一篇文章for和do-while循环以及break和continue语句

例题五

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,

例如:2+22+222+2222+22222

题目解析及答案

我们可以看到aa只是在a10的基础上再加上a,也就是aa=a10+a,aaa=aa*10+a

int main()
{
	int n = 0,a=0,b=0,Sn=0;
	scanf("%d %d", &n,&a);
	b = a;
	for (int i = 0; i < n; i++)
	{
		Sn = Sn + b;
		b = b * 10 + a;
	}
	printf("%d", Sn);
	return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Microsoft Dynamics AX 2012 - 8. 财务管理

财务管理的主要职责是控制和分析与货币金额有关的所有交易。这些事务发生在整个组织的业务流程中。 因此&#xff0c;财务管理是企业管理解决方案的核心领域。在Dynamics AX中&#xff0c;支持所有部门业务流程的应用程序的深度集成可立即提供准确的财务数据。 分类账交易的原…

SQL小技巧3:分层汇总

前几天&#xff0c;QQ学习群有个小伙伴问我一个使用SQL分层汇总的问题。 今天正好分享下。 需求描述 在数据报表开发的工作中&#xff0c;经常会遇到需要对数据进行分组汇总的情况。 假设有一个销售数据表sales&#xff0c;包含列region&#xff08;地区&#xff09;、mont…

验收支撑-软件项目验收计划书

软件项目验收计划的作用主要有以下几点&#xff1a; 确保项目质量&#xff1a;通过项目验收&#xff0c;客户或相关方可以对项目的成果进行全面、系统的评估&#xff0c;以确保项目达到预期的质量标准。发现和解决问题&#xff1a;在项目开发过程中&#xff0c;难免会存在一些问…

SpringBoot程序打包失败处理

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

产品入门第三讲:Axure产品流程图绘制

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还…

AE (3)_主观亮度和对比度调试

#灵感# 画面的亮度、对比度是最直接&#xff0c;观看者最先获得的感受。所以有必要花时间认真调整。 ------哈哈&#xff0c;虽然调试的时间其实不如磨清晰度多。 目录 举个图例&#xff1a; 三个参数AE、gamma、LTM&#xff1a; 调试顺序&#xff1a; 举个图例&#xff1…

【Hadoop_06】MapReduce的概述与wc案例

1、MapReduce概述1.1 MapReduce定义1.2 MapReduce优点1.3 MapReduce缺点1.4 MapReduce核心思想1.5 MapReduce进程1.6 常用数据序列化类型1.7 源码与MapReduce编程规范 2、WordCount案例实操2.1 本地测试2.2 提交到集群测试 1、MapReduce概述 1.1 MapReduce定义 MapReduce是一…

WhatsApp获客怎么做?教你五个技巧!

随着全球通信的普及&#xff0c;WhatsApp已经成为人们日常生活中不可或缺的沟通工具&#xff0c;对于跨境电商和外贸企业来说&#xff0c;利用WhatsApp进行获客同样具有巨大的潜力。 那么&#xff0c;如何有效地在WhatsApp上获取客户呢?接下来&#xff0c;我们将为你介绍五个…

Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为&#xff1a;此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机&#xff0c;需要开机进入BIOS&#xff0c;找到“Secure Boot”的选项&#xff0c;然后关闭。 如果是虚拟机&#xff0c;可以打开虚拟设置&#xff0c…

物联网与低代码:构建智能化的连接世界

物联网&#xff08;IoT&#xff09;是指通过互联网将各种物理设备、传感器、车辆等连接起来&#xff0c;从而实现数据交互和智能化控制的技术领域。而低代码开发平台则是一种快速构建应用程序的方法&#xff0c;通过简化开发过程&#xff0c;使开发人员能够更迅速地实现创意和创…

Nginx【通俗易懂】《中篇》

目录 1.Url重写rewrite 2.防盗链 3.静态资源压缩 4.跨域问题 1.Url重写rewrite &#x1f929;&#x1f929;&#x1f929; 1.1.rewrite书写格式 rewrite是实现URL重写的关键指令&#xff0c;根据regex&#xff08;正则表达式&#xff09;部分内容&#xff0c;重定向到rep…

MS913/914 25-100MHz 10/12 位用于平面显示器链路Ⅲ的具有直流平衡编码和双向控制通道的串化器和解串器

MS913/MS914 芯片组是 25MHz~100MHz 10 位/12 位 FPD Link III SER/DES(串化器/解串器)&#xff0c;它提供高速 FPD-Link III 接口和高速正向通路以及用于差分对上数据发送的双向 控制通路。广泛应用于车载摄像&#xff0c;医疗设备&#xff0c;管道探测等领 域。 主要特点…

【强化学习-读书笔记】有限马尔可夫决策过程

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. BartoMDP 是强化学习问题在数学上的理想化形式&#xff0c;因为在这个框架下我们可以进行精确的理论说明 智能体与环境的交互 智能体与环境交互&#xff0c;会得到轨迹&…

你真的了解Shiro框架吗?

关注公众号回复20231110获取最新网络安全以及内网渗透等资料。 文章目录 关注公众号回复20231110获取最新网络安全以及内网渗透等资料。Shiro的核心架构Shiro中的认证认证shiro中认证的关键对象 认证流程调试认证流程Shiro的加密过程Shiro中的解密过程总结 Shiro的核心架构 Shi…

ResourceSat2卫星数据下载

印度5米遥感卫星数据开放下载 简介 印度国家遥感中心( NRSC )于近期开放了ResourceSat2卫星的LISS4传感器的数据下载权限&#xff0c;最高分辨率为5米。此次可供下载的有3个波段&#xff08;近红外/红/绿&#xff09;&#xff0c;下载附带3个GeoTIFF和一个元数据文件&#xf…

计算4*4*4空间中2点结构的分布

不考虑两点距离的情况下&#xff0c;3维空间中的两点最多只有7种位置关系。3条边&#xff0c;3条面对角线&#xff0c;1条体对角线。现在向4*4*4的3维空间中随机的扔2个石子&#xff0c;比较7种结构的占比。 得到表格为 1 96 0.0476 2 96 0.0476 3 288 0.1429 4 288 …

Linux 多版本php ,切换默认版本

1.查看当前默认php版本 ls -l /usr/bin/php 后面的 /usr/local/php/bin/php 表示默认版本 2.查看现在安装了多少版本的php &#xff0c;可以用 find / -name php 然后切换到到 7.3 版本上 使用命令&#xff1a;ln -sf /usr/local/php7.3/bin/php /usr/bin/php 如果没…

玩转Docker(一):容器生态系统

文章目录 一、核心技术二、平台技术三、支持技术 本文结构如下&#xff1a; 一、核心技术 容器核心技术是指能够让Container在host上运行起来的那些技术。 &#xff08;1&#xff09;容器规范 容器不光是Docker&#xff0c;还有其他容器&#xff0c;比如CoreOS的rkt。为了保证…

「Verilog学习笔记」可置位计数器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,input set,input [3:0] set_num,output reg [3:0]number,output reg zero);reg [3:0] cnt ; always (posed…

AR眼镜_AR智能眼镜整机硬件方案定制

AR眼镜的主要模块包括显示、光学模组、传感器和摄像头、主板、音频和网络连接等。其中&#xff0c;光学显示、主板处理器是决定AR眼镜成本的关键&#xff0c;光机占整体AR眼镜成本43%、处理器占整体成本31%。 AR眼镜的主板设计难点在于尺寸要足够小且要处理好散热问题。主板上的…
最新文章