C语言 指针练习

news2024/11/28 0:54:47

一、 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");
		}
	}
}
运行结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考高级:类的分类(边界类、控制类、实体类)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【Java初阶(二)】分支与循环

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.顺序结构3.分支循环3.1if语句3.2switch语句 4.循环结构4.1while循环4.2 break和continue4.3 for循环4.4 do while循环 5.输入输出5.1输出5.2输…

记录C++中,子类同名属性并不能完全覆盖父类属性的问题

问题代码&#xff1a; 首先看一段代码&#xff1a;很简单&#xff0c;就是BBB继承自AAA&#xff0c;然后BBB重写定义了同名属性&#xff0c;然后调用父类AAA的打印函数&#xff1a; #include <iostream> using namespace std;class AAA { public:AAA() {}~AAA() {}void …

Django单表数据库操作

单表操作 测试脚本 当你只想测试django某一个py文件的内容,可以不用书写前后端的交互,直接写一个测试脚本即可 单表删除 数据库操作方法: 1.all():查询所有的数据 2.filter():带有过滤条件的查询 3.get():直接拿数据对象,不存在则报错 4.first():拿queryset里面的第一个元素…

【数据结构取经之路】栈

目录 引言 栈的性质 顺序栈 栈的基本操作 初始化 销毁 插入 删除 判空 取栈顶元素 栈的大小 完整代码&#xff1a; 引言 栈(stack)&#xff0c;可以用数组实现&#xff0c;也可以用链表实现。用数组实现的栈叫顺序栈&#xff0c;用链表实现的栈叫链式栈&#…

红外相机和RGB相机标定:实现两种模态数据融合

1. 前期准备 RGB相机&#xff1a;森云智能SG2-IMX390&#xff0c;1个红外相机&#xff1a;艾睿光电IR-Pilot 640X-32G&#xff0c;1个红外标定板&#xff1a;https://item.taobao.com/item.htm?_ujp3fdd12b99&id644506141871&spma1z09.2.0.0.5f822e8dKrxxYI 2.操作步…

C# 方法(函数)

文章目录 C# 方法&#xff08;函数&#xff09;简单示例程序代码运行效果 值传递和引用传递示例程序 运行效果按输出传递参数运行结果 C# 方法&#xff08;函数&#xff09; 简单示例 程序代码 访问的限制符 using System; using System.Collections.Generic; using Syste…

DevEco Studio 项目创建

安装DevEco Studio后开始使用&#xff0c;双击桌面DevEco Studio 快捷方式弹出界面&#xff1a; 选择Application —> Empty Ability&#xff0c;点击Next 项目配置 Project name&#xff1a;工程的名称&#xff0c;可以自定义&#xff0c;由大小写字母、数字和下划线组成。…

JavaSE——面向对象高级二(3/4)-接口(认识接口、接口的好处)以及接口的综合案例(设计班级学生的信息管理模块)

目录 接口 认识接口 接口的好处 接口的综合案例 需求 学生类 班级管理类 学生操作接口 学生操作类 完善班级管理类 测试 接口 认识接口 Java提供了一个关键字 interface&#xff0c;用这个关键字我们可以定义出一个特殊的结构&#xff1a;接口。 public interface…

个人网站制作 Part 13 添加搜索功能[Elasticsearch] | Web开发项目

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加搜索功能&#x1f528;使用Elasticsearch&#x1f527;步骤 1: 安装Elasticsearch&#x1f527;步骤 2: 配置Elasticsearch&#x1f527;步骤 3: 创建索引 &#x1f…

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声&#xff08;无关跨度&#xff09;的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…

长安链Docker Java智能合约引擎的架构、应用与规划

#功能发布 长安链3.0正式版发布了多个重点功能&#xff0c;包括共识算法切换、支持java智能合约引擎、支持后量子密码、web3生态兼容等。我们接下来为大家详细介绍新功能的设计、应用与规划。 在《2022年度长安链开源社区开发者调研报告》中&#xff0c;对Java合约语言支持是开…

ideaSSM 财务凭证管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 财务凭证管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff…

[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)

目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中&#xff0c;现在有很多通过电机去做相机的聚焦调节&#xff0c;对比手工调节&#xff0c;自动调节效果更好&#xff0c;而且其也能满足设备自动的需求&#xff0c;尤…

高效的Gitlab Flow最佳实践

文章目录 一、git flow二、github flow三、gitlab flow四、基于gitlab flow的最佳实践1.语义化版本号2.测试发布3.bug修复 参考 业界包含三种flow&#xff1a; Git flowGithub flowGitlab flow 三种工作流程&#xff0c;有一个共同点&#xff1a;都采用"功能驱动式开发&…

圆弧齿的模型怎么建立?

今天咱们聊一聊圆弧齿的相关内容&#xff0c;有兴趣的小伙伴一起来看看吧。 圆弧齿轮发展历史 早期齿轮传动的速度较低、传递的功率小&#xff0c;长期的生产实践使得人们开始意识到对齿轮单个轮齿形状&#xff08;轮齿齿形&#xff09;的研究的重要性&#xff0c;齿轮的齿形…

5G安全技术新突破!亚信安全5G安全迅龙引擎正式发布

5G专网应用飞速增长&#xff1a;2020年5G专网数量800个&#xff0c;2021年2300个&#xff0c;2022年5325个&#xff0c;2023年已经超过16000个&#xff0c;5G与垂直行业的融合快速加深&#xff0c;5G带来的变革正加速渗透至各行各业。 5G网络出现安全问题&#xff0c;将是异常严…

MNN createFromBuffer(一)

系列文章目录 MNN createFromBuffer&#xff08;一&#xff09; MNN createRuntime&#xff08;二&#xff09; MNN createSession 之 Schedule&#xff08;三&#xff09; MNN createSession 之创建流水线后端&#xff08;四&#xff09; MNN Session::resize 之流水线编码&am…

C语言例3-12:自增和自减运算的例子

i 先引用后加1--i 先减1后引用 代码如下&#xff1a; #include<stdio.h> int main(void) {int i2, j2;char c1d, c2D; //d(100) D(68)printf("i %d\n",i); //3, i3printf("j-- %d\n",j--); …

Design Script之案例练习:曲线组合

让我们来探索一下如何创建分组曲线函数。这个函数将取一个无序曲线列表(必须是连续的),并将它们组合成分组的循环。 在这个例子中,我们将采取一系列的9个爆炸矩形,并洗牌合成曲线。这给了我们36条单独的曲线,它们可以正确地组合回各自的矩形中。 一些分散的曲线显示在右边…