C语言 指针练习

一、 a、b是两个浮点型变量,给a、b赋值,建立两个指针分别指向a的地址和b的地址,输出两个指针的值。

#include<stdio.h>
int main()
{
	float a,b,*p1,*p2;
	a=10.2;
	b=2.3;
	p1=&a;
	p2=&b;
	printf("a=%f,b=%f\n",a,b);
	printf("*p1=%f,*p2=%f\n",*p1,*p2);
	return 0;
}
运行结果

二、用指针变量作为函数参数,实现交换两个变量值的功能。

#include<stdio.h>
void swap(int*,int*);
int main()
{
	int a,b,*p1,*p2;
	a=29;
	b=23;
	printf("a=%d,b=%d\n",a,b);
	p1=&a;
	p2=&b;
	swap(p1,p2);
	printf("swapping......\n");
	printf("a=%d,b=%d\n",a,b);
	return 0;
}
void swap(int*n,int*m)
{
	int temp;
	temp=*m;
	*m=*n;
	*n=temp;
}
运行结果

三、编写一个程序。输入某个班级20人的成绩,求其最高分及平均分并输出。其中输入成绩、求最高分和求平均分要求设计为三个函数input()、gethighest()和getaverage( )(要求用指针方法处理)

#include<stdio.h>
#define NUM 10
void Input(float*,int);
float GetHighest(float*,int);
float Getaverage(float*,int);
int main()
{
	float score[NUM];
	float highest,average;
	Input(score,NUM);
	highest = GetHighest(score,NUM);
	average = Getaverage(score,NUM);
	printf("highest is %f,\naverage is %f\n",highest,average);
	return 0;
}
void Input(float*array,int number)
{
	int i;
	printf("please input ten scores:");
	for(i=0;i<number;i++)
	{
		scanf("%f",&array[i]);
	}
}
float GetHighest(float*array,int number)
{
	int i; 
	float highest=*array;
	for(i=0; i<number;i++,array++)
	{
		if(*array>highest)
		{
			highest=*array;
		}
	}
	return highest;
}
float Getaverage(float*array,int number)
{
	int i;
	float average;
	float sum=0;
	for(i=0;i<number;i++,array++)
	{
		sum=sum+(*array);
	}
	average=(sum)/NUM;
	return average;
}
运行结果

四、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。(要求用指针方法处理)

#include<stdio.h>
#define NUM 10
void input(int*,int);
void swap(int*,int);
void output(int*,int);
int main()
{
	int a[NUM];;
	input(a,NUM);
	swap(a,NUM);
	output(a,NUM);
	return 0;
}
void input(int*array,int number)
{
	int i;
	printf("please enter %d scores:\n",NUM);
	for(i=0;i<number;i++)
	{
		scanf("%d",array+i);
	}
}
void swap(int*array,int number)
{
	int i,j,temp,min,max;
	max=min=0;
	for(i=0;i<number;i++)
	{
		for(j=0;j<number-i;j++)
		{
			if(*(array+i)>*(array+max))
			{
				max=i;//找出最大数的位置
			}
		}
	}
	temp=*(array+max);
	*(array+max)=*(array+number-1);
	*(array+number-1)=temp;//使最大数与最后一个数调换
	for(i=0;i<number;i++)
	{
		for(j=0;j<number-i;j++)
		{
			if(*(array+i)<*(array+min))
			{
				min=i;//找出最大数调换后最小数的位置
			}
		}
	}
	temp=*(array+min);
	*(array+min)=*array;
	*array=temp;//使最小数与第一个数调换
}

void output(int*array,int number)
{
	int i;
	printf("swapping......\n");
	for(i=0;i<number;i++)
	{
		printf("%d ",array[i]);
	}
	putchar('\n');
}
运行结果

五、写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度?(要求用指针方法处理)

#include<stdio.h>
int c(char*);
int main()
{
	int length;
	char a[]="i love china!";
	length=c(a);
	printf("The length of string is %d\n",length);
	return 0;
}
int c(char*n)
{
	int i ;
	for(i=0;*(n+i)!='\0';)
	{
		i++;
	}
	return i;
}
运行结果

六、有一个班4个学生,5门课。(1)求第一门课程的平均分;(2)找出两门以上课程不及格的学生,输出他们课程的学号和全部课程成绩及平均成绩。(3)找出平均成绩在90分以上或者全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求

#include<stdio.h>
void getaverage(float(*)[5],int); 
void fail(float a[][5]);
void excellence(float a[][5]);
int main()

{
	int i,j;
	float a[4][5];
	for(i=0;i<4;i++)
	{
		printf("请输入第%d名成绩:",i+1);
		for(j=0;j<5;j++)
		{
			scanf("%f",&a[i][j]);
		}
	}
	getaverage(a,0);//第一门课程下标为0 
	fail(a);
	excellence(a);
	return 0;
}
void  getaverage(float(*m)[5],int n)
{
	int i;
	float average,sum=0;
	for(i=0;i<4;i++)
	{
		sum=sum+*(*(m+i)+n);//类比于一维数组*(p+i)=a[i] 
	}
	average=sum/4;
	printf("第%d门课程平均分为:%5.2f\n",n+1,average);
}
void fail(float a[][5])
{
	int i,j,k;
	for(i=0;i<4;i++)
	{
		k=0;
		for(j=0;j<5;j++)
		{
			if(a[i][j]<60)
			{
				k++;
			}
		}
		if(k>2)
		{
			printf("第%d名学生超过两门以上课程不及格:",i+1);
			float sum=0;
			for(j=0;j<5;j++)
			{
				sum+=a[i][j];
				printf("%5.2f ",a[i][j]);
			}
			putchar('\n');
			printf("平均分为:%5.2f\n",sum/5);
		}
		
	}
}
void excellence (float a[][5])
{
	int i,j,k;
	float average,sum;
	for(i=0;i<4;i++)
	{
		k=0;
		sum=0;
		for(j=0;j<5;j++)
		{
			sum+=a[i][j];
			if(a[i][j]>85)
			{
				k++;
			}
		}
		average=sum/5;
		if(average>90)
		{
			printf("第%d名学生平均分在90以上,平均分为%5.2f\n",i+1,average);
		}
		if(k==5)
		{
			printf("第%d名学生全部课程在85分以上,成绩为:",i+1);
			for(j=0;j<5;j++)
			{
				printf("%5.2f ",a[i][j]);
			}
			printf("\n");
		}
	}
}
运行结果

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

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

相关文章

墨菲安全在软件供应链安全领域阶段性总结及思考

向外看&#xff1a;墨菲安全在软件供应链安全领域的一些洞察、思考、行动 洞察 现状&挑战&#xff1a; 过去开发安全体系是无法解决软件供应链安全问题的&#xff1b;一些过去专注开发安全领域的厂商正在错误的引导行业用开发安全思维解决软件供应链安全问题&#xff0c;治…

ResNet目标检测算法实现交通灯分类

红绿灯识别方案&#xff1a;https://zhuanlan.zhihu.com/p/674791906 目录 一、制作数据集二、ResNet算法三、pytorch转onnx文件四、onnx推理测试五、onnx转mnn 一、制作数据集 1、数据集划分 将红绿灯数据集大文件夹中不同类别的小文件夹中的图片按照9&#xff1a;1进行划分…

【Flutter】文件选择器(file_picker)的用法

Flutter 没有提供内置的文件选择器&#xff0c;但社区内有人贡献了一个比较完整的解决方案——file_picker。 file_picker 的 API 简洁易用&#xff0c;支持全平台&#xff08;Android / iOS / Mac / Linux / Windows&#xff09;&#xff0c;是我开发桌面应用时的首选。 这边…

MySql实战--一条SQL查询语句是如何执行的?

平时我们使用数据库&#xff0c;看到的通常都是一个整体。比如&#xff0c;你有个最简单的表&#xff0c;表里只有一个ID字段&#xff0c;在执行下面这个查询语句时&#xff1a; select * from T where ID10&#xff1b; 我们看到的只是输入一条语句&#xff0c;返回一个结果…

Chain of Note-CoN增强检索增强型语言模型的鲁棒性

Enhancing Robustness in Retrieval-Augmented Language Models 检索增强型语言模型&#xff08;RALMs&#xff09;在大型语言模型的能力上取得了重大进步&#xff0c;特别是在利用外部知识源减少事实性幻觉方面。然而&#xff0c;检索到的信息的可靠性并不总是有保证的。检索…

阿里云99元服务器40G ESSD Entry系统盘够用吗?

阿里云99元服务器40G ESSD Entry云盘够用吗&#xff1f;够用&#xff0c;操作系统占15GB左右&#xff0c;还有25G富余。如果是40G ESSD Entry系统盘不够用&#xff0c;还可以为云服务器另外挂载数据盘&#xff0c;所以不用担心40G系统盘不够用。可以在阿里云CLUB中心查看 aliyu…

基于SpringBoot实现WebSocket实时通讯的服务端和客户端

实现功能 服务端注册的客户端的列表&#xff1b;服务端向客户端发送广播消息&#xff1b;服务端向指定客户端发送消息&#xff1b;服务端向多个客户端发送消息&#xff1b;客户端给服务端发送消息&#xff1b; 效果&#xff1a; 环境 jdk&#xff1a;1.8 SpringBoot&#x…

some/ip CAN CANFD

关于SOME/IP的理解 在CAN总线的车载网络中&#xff0c;通信过程是面向信号的 当ECU的信号的值发生了改变&#xff0c;或者发送周期到了&#xff0c;就会发送消息&#xff0c;而不考虑接收者是否需要&#xff0c;这样就会造成总线上出现不必要的信息&#xff0c;占用了带宽 …

get_local_ip.bat:快速获取IPv4地址

批处理脚本&#xff0c;用于在Windows命令提示符下获取本地计算机的IPv4地址。 echo off ipconfig | findstr IPv4 pause - echo off&#xff1a;这会关闭命令提示符窗口中的命令回显&#xff0c;使得在运行脚本时不会显示每条命令的执行结果。 - ipconfig&#xff1a;这是一…

流畅的 Python 第二版(GPT 重译)(十三)

第二十四章&#xff1a;类元编程 每个人都知道调试比一开始编写程序要困难两倍。所以如果你在编写时尽可能聪明&#xff0c;那么你将如何调试呢&#xff1f; Brian W. Kernighan 和 P. J. Plauger&#xff0c;《编程风格的要素》 类元编程是在运行时创建或自定义类的艺术。在 P…

元素定位之xpath和css

元素定位 xpath绝对路径相对路径案例xpath策略&#xff08;路径&#xff09;案例xpath策略&#xff08;层级、扩展&#xff09;属性层级与属性层级与属性拓展层级与属性综合 csscss选择器&#xff08;id、类、标签、属性&#xff09;id选择器类选择器标签选择器属性选择器案例-…

按面积筛选填充二值图中的孔洞-python源码

目录 &#x1f64b;&#x1f64b;需求 &#x1f345;&#x1f345;解决方案 &#x1f64b;&#x1f64b;需求 前提条件是二值图中0是背景&#xff0c;255是前景。 二值化后的影像中有很多小孔洞&#xff0c;现在需要按孔洞面积进行筛选&#xff0c;填充面积小于阈值的孔洞&…

何恺明重提十年之争——模型表现好是源于能力提升还是捕获数据集偏见

2011年,知名学者Antonio Torralba和Alyosha Efros提出了“数据集偏差之战”&#xff0c;他们发现机器学习模型很容易“过拟合”到特定的数据集上&#xff0c;导致在其他数据集上表现不佳。过去十年&#xff0c;随着深度学习革命的到来&#xff0c;建立多样化、大规模、全面且尽…

三级数据库技术考点(详解!!)

1、 答疑:【解析】分布式数据库系统按不同层次提供的分布透明性有:分片透明性;②位置透明性;③局部映像透明性&#xff0c;位置透明性是指数据分片的分配位置对用户是透明的&#xff0c;用户编写程序时只需 要考虑数据分片情况&#xff0c;不需要了解各分片在各个场地的分配情…

GitHub配置SSH Key(详细版本)

GitHub配置SSH Key的目的是为了帮助我们在通过git提交代码是&#xff0c;不需要繁琐的验证过程&#xff0c;简化操作流程。比如新建的仓库可以下载, 但是提交需要账号密码。 步骤 一、设置git的user name和email 如果你是第一次使用&#xff0c;或者还没有配置过的话需要操作…

zookeeper底层细节

zk 临时节点和watch机制实现注册中心自动注册和发现&#xff0c;数据都在内存&#xff0c;nio 多线程模型&#xff1b; cp注重一致性&#xff0c;数据不一致时集群不可用 事务请求处理方式 1.all事务由唯一服务器处理 2.将客户端事务请求转成proposal分发follower 3.等待半…

基于Jenkins + Argo 实现多集群的持续交付

作者&#xff1a;周靖峰&#xff0c;青云科技容器顾问&#xff0c;云原生爱好者&#xff0c;目前专注于 DevOps&#xff0c;云原生领域技术涉及 Kubernetes、KubeSphere、Argo。 前文概述 前面我们已经掌握了如何通过 Jenkins Argo CD 的方式实现单集群的持续交付&#xff0c…

Maven,pom.xml,查找 子jar包

在IDEA打开pom.xml&#xff0c;会看到这里&#xff1a; 然后如果有需要&#xff0c;把相关的 子jar包 去掉 <dependency><groupId>XXX</groupId><artifactId>XXX</artifactId><exclusions><exclusion><artifactId>xxx</a…

Node.js核心命令与工具:提升开发效率的实用指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

HarmonyOS NEXT应用开发之Web组件预览PDF文件实现案例

介绍 本案例通过Web组件实现预览本地PDF文件和预览网络PDF文件&#xff0c;代码为Tabs容器组件包含了两个独立的TabContent子组件&#xff0c;分别标示为预览本地PDF文件和预览网络PDF文件。每个子组件内部构建一个Web组件。第一个Web组件利用resource协议关联本地PDF文件路径…