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

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

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

相关文章

Python 深度学习第二版(GPT 重译)(三)

七、使用 Keras&#xff1a;深入探讨 本章涵盖 使用 Sequential 类、功能 API 和模型子类创建 Keras 模型 使用内置的 Keras 训练和评估循环 使用 Keras 回调函数自定义训练 使用 TensorBoard 监控训练和评估指标 从头开始编写训练和评估循环 您现在对 Keras 有了一些经…

零基础入门多媒体音频(4)-GENIVIProjectAudioManager总览

GENIVI Project的AudioManager是一个专门设计用于汽车信息娱乐系统的音频管理解决方案。它负责管理和控制车辆内的音频源和音频路径&#xff0c;确保各种音频信号能够正确、高效地在车辆的音响系统中传输和播放。 AudioManager的核心功能包括音频源的管理、音频路径的控制以及音…

【Spring Cloud】微服务通信概述

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;人生乏味啊&#xff0c;我欲令之光怪陆离 本文封面由 凯楠&#x1f4f7; 友情赞助播出 目录 前言 1. Dubbo&#xff08;Spring Cloud Alibaba&#xff09;和 Spring Cloud 的适…

Python利用pygame实现飞机大战游戏

文章目录&#xff1a; 一&#xff1a;运行效果 1.演示 2.思路和功能 二&#xff1a;代码 文件架构 Demo 必备知识&#xff1a;python图形化编程pygame游戏模块 一&#xff1a;运行效果 1.演示 效果图◕‿◕✌✌✌ Python利用pygame实现飞机大战游戏运行演示 参考&#x…

AMPQ和rabbitMQ

RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;标准实现的。 AMPQ的网络部分 AMQP没有使用HTTP&#xff0c;使用TCP自己实现了应用层协议。 AMQP实现了自己特有的网络帧格式。 一个Connection…

[网鼎杯 2020 朱雀组]Think Java

[网鼎杯 2020 朱雀组]Think Java swagger [[swagger]] 首先下载源码&#xff0c;查看之后发现 查找swagger资料&#xff0c;或者扫描&#xff0c;得到&#xff1a;swagger-ui.html swagger-ui 提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以…

[激光原理与应用-76]:光束指向性与影响因素

目录 一、光束指向性 1.1 概述 2.2 光束指向性与光斑大小的区别 2.3 光束指向性与时间的关系 二、激光器的光束指向性的测量方法 2.1 概述 2.2 计算方法 三、激光器中影响光束指向性的因素 一、光束指向性 1.1 概述 光束指向性是指光束传播方向的特性&#xff0c;也可…

Java与Go:对象

对象是面向对象编程的核心概念之一&#xff0c;它具有封装、抽象、继承、多态等特性&#xff0c;能够帮助程序员更好地组织和管理程序&#xff0c;提高代码的可读性、可维护性和可重用性。今天我们来聊一聊Java中的class和Go语言的struct。 Java的class 在Java中&#xff0c;…

【Linux】进程通信

目录 一、管道通信 二、共享内存 三、消息队列 一、管道通信 管道是由操作系统维护的一个文件&#xff0c;管道通信的本质就是将管道文件作为临界资源&#xff0c;实现不同进程之间的数据读写&#xff0c;但是管道只允许父子进程或者兄弟进程之间的通信。 管道文件本身是全…

刷题DAY29 | LeetCode 491-递增子序列 46-全排列 47-全排列 II

491 递增子序列&#xff08;medium&#xff09; 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也…

开放签开源电子签章白皮书-简版

开放签开源电子签章白皮书-简版 一、摘要&#xff1a; 开放签电子签章团队源自于电子合同SaaS公司&#xff0c;立志于通过开源、开放的模式&#xff0c;结合团队十多年的行业经验&#xff0c;将电子签章产品更简单、更低门槛的推广到各行各业中。让电子签章应用更简单&#x…

Fetch、Axios 和 jQuery(Ajax) 三种常用的网络请求技术

Fetch、Axios 和 jQuery(Ajax) 是三种常用的网络请求技术&#xff0c;它们各自有着不同的特点和优势。本文将对这三种技术进行详细的介绍和比较&#xff0c;以帮助开发者更好地选择和使用合适的网络请求技术。 一、Fetch Fetch(浏览器自带) 是一种现代的网络请求 API&#xff…

Design Data Sheet for user shoppingcart in mysql

当设计用户的购物车模型表时: 1:购物车是订单的一种状态 订单的状态&#xff1a; 【待购买】&#xff1a;也就是购物车—超市中放置到购物篮 【待支付】&#xff1a;已经从购物车中确认–去到收银台中结算&#xff0c;但未给钱 【已支付】&#xff1a;已经支付过的订单----已经…

Vue3组件的注册

组件是Vue.js中的一个重要概念&#xff0c;它是一种抽象&#xff0c;是一个可以复用的Vue.js实例。它拥有独一无二的组件名称&#xff0c;可以扩展HTML元素&#xff0c;以组件名称的方式作为自定义的HTML标签。 在大多数系统网页中&#xff0c;网页都包含header、body、footer…

unlogged 分析

目录 实现原理示例 实现原理 以 Agent 的方式运行&#xff0c;启动了一个 Http Server&#xff0c;默认监听 12100 端口&#xff0c;支持执行某个类的某个方法&#xff0c;在执行方法的时候支持 mock 方法内的接口调用 示例 POST http://127.0.0.1:12100/command Body {&q…

Debezium vs OGG vs Tapdata:如何实时同步 Oracle 数据到 Kafka 消息队列?

随着信息时代的蓬勃发展&#xff0c;企业对实时数据处理的需求逐渐成为推动业务创新和发展的重要驱动力。在这个快速变化的环境中&#xff0c;许多企业选择将 Oracle 数据库同步到 Kafka&#xff0c;以满足日益增长的实时数据处理需求。本文将深入探讨这一趋势的背后原因&#…

数学建模(熵权法 python代码 例子)

目录 介绍&#xff1a; 模板&#xff1a; 例子&#xff1a;择偶 极小型指标转化为极大型&#xff08;正向化&#xff09;&#xff1a; 中间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 区间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a…

力扣每日练习(3.18)补

200. 岛屿数量 岛屿是指上下左右都是被0包起来的。使用递归的方式&#xff0c;也就是深度优先搜索&#xff0c;需要确定终止条件&#xff0c;也就是badcase是什么情况出现的。 二叉树是递到叶子节点的时候&#xff0c;因为下面是空子树了&#xff1b;矩阵就是越界&#xff0c;…

基于BusyBox的imx6ull移植sqlite3到ARM板子上

1.官网下载源码 https://www.sqlite.org/download.html 下载源码解压到本地的linux环境下 2.解压并创建install文件夹 3.使用命令行配置 在解压的文件夹下打开终端&#xff0c;然后输入以下内容&#xff0c;其中arm-linux-gnueabihf是自己的交叉编译器【自己替换】 ./config…

PyTorch 深度学习(GPT 重译)(三)

六、使用神经网络拟合数据 本章内容包括 与线性模型相比&#xff0c;非线性激活函数是关键区别 使用 PyTorch 的nn模块 使用神经网络解决线性拟合问题 到目前为止&#xff0c;我们已经仔细研究了线性模型如何学习以及如何在 PyTorch 中实现这一点。我们专注于一个非常简单…