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.rhkb.cn/news/280504.html

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

相关文章

U-Net代码复现--更新中

本文记录自己的学习过程&#xff0c;内容包括&#xff1a; 代码解读&#xff1a;Pytorch-UNet 深度学习编程基础&#xff1a;Pytorch-深度学习&#xff08;新手友好&#xff09; UNet论文解读&#xff1a;医学图像分割&#xff1a;U_Net 论文阅读 数据&#xff1a;https://hack…

Java与Go:指针

在计算机内存中&#xff0c;每个变量都有一个唯一的地址&#xff0c;指针就是用来保存这个地址的变量。通过指针&#xff0c;我们可以间接地访问和修改存储在该地址处的数据。今天我们来聊一聊Java和Go指针&#xff0c;预告一下&#xff0c;我们需要借助C语言做一些小小的比较。…

基于cnn深度学习的yolov5+pyqt+分类+resnet+骨龄检测系统

往期热门博客项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 YOLOv5与骨龄识别 YOLOv5&a…

容器中的大模型(三)| 利用大语言模型:容器化高效地部署 PDF 解析器实践...

作者&#xff1a;宋文欣&#xff0c;智领云科技联合创始人兼CTO 01 简介 大语言模型&#xff08;LLMs&#xff09;正逐渐成为人工智能领域的一颗璀璨明星&#xff0c;它们的强大之处在于能够理解和生成自然语言&#xff0c;为各种应用提供了无限可能。为了让这些模型更好地服务…

网络编程:数据库

一、作业 1> 创建一个工人信息库&#xff0c;包含工号&#xff08;主键&#xff09;、姓名、年龄、薪资。 2> 添加三条工人信息&#xff08;可以完整信息&#xff0c;也可以非完整信息&#xff09; 3> 修改某一个工人的薪资&#xff08;确定的一个&#xff09; 4> …

[C++]20:unorderedset和unorderedmap结构和封装。

unorderedset和unorderedmap结构和封装 一.哈希表&#xff1a;1.直接定址法&#xff1a;2.闭散列的开放定址法&#xff1a;1.基本结构&#xff1a;2.insert3.find4.erase5.补充&#xff1a;6.pair<k,v> k的数据类型&#xff1a; 3.开散列的拉链法/哈希桶&#xff1a;1.基…

【计算机网络】计算机网络概述

文章目录 一、计算机网络的概念二、 计算机网络的功能1. 数据通信2. 资源共享3. 分布式处理4. 提高可靠性5. 负载均衡 补充&#xff1a; 计算机的发展阶段小结三、计算机网络的组成1. 组成部分2. 工作方式3. 功能组成 四、 计算机网络的分类1. 按分布范围2. 按使用者3. 按交换技…

零拷贝原理+kafka中的零拷贝

零拷贝原理kafka中的零拷贝 kafka性能之零拷贝传统IO零拷贝mmp优化sendfile优化sendfile DMA scatter/gather优化Kafka是怎么使用零拷贝的 kafka性能之零拷贝 kafka中的零拷贝并不是说完全避免了上下文切换与cpu拷贝的次数, 而是减少这种拷贝次数 传统IO 传统的一次IO流程 rea…

学习开发小程序的起航日记

2024年3月16日 不知不觉中三月份还只剩了一半的光景&#xff0c;我想写的内容还很多没有写&#xff0c;或者更应该说&#xff0c;是想积累的还有很多。现在最应该去完善Java的内容&#xff0c;可还是想先等等。想等搞清楚小程序部分&#xff0c;想等积累完小程序的内容。 这几…

华为综合案例-普通WLAN全覆盖配置(2)

组网图 结果验证 在AC_1和AC_2上执行display ap all命令&#xff0c;检查当前AP的状态&#xff0c;显示以下信息表示AP上线成功。[AC_1] display ap all Total AP information: nor : normal [1] ExtraInfo : Extra information P : insufficient power supply ---…

冒泡排序的原理及其实现

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 目录 前言 一、冒泡排序的原理 二、代码实现 总结 前言 本篇详细介绍了冒泡排序的原理及其实现&#xff0c;让使用者对冒泡排序的原理及其实现有进一步认识&#xff0c;而不是仅仅停留在表面&#xff0c;更好的模…

xercesc库保存XML功能实现

目录 一 参考链接 二 运行结果 三 代码 一 参考链接 DOM Programming Guide (apache.org) Xerces-c DOM XML文件的构造_xerces-c domimplementation-CSDN博客 Xerces-c库的使用-CSDN博客 二 运行结果 三 代码 #if 1//参考链接&#xff1a; https://blog.csdn.net/RGBMa…

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

第四部分&#xff1a;控制流 第十七章&#xff1a;迭代器、生成器和经典协程 当我在我的程序中看到模式时&#xff0c;我认为这是一个麻烦的迹象。程序的形状应该只反映它需要解决的问题。代码中的任何其他规律性对我来说都是一个迹象&#xff0c;至少对我来说&#xff0c;这表…

【数据可视化】Echarts中的其它图表

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 绘制散点图2.1 绘制基本散点图2.2 绘制两个序列的散点图2.3 绘制带涟漪特效的散点图 3. 绘制气泡图3.1 绘制标准气泡图3.2 绘制各国人均寿命与GDP气泡图3.3 绘制城市A、城市B、城市C三个城市空气污染指数气…

Tech Talks技术讲座中文培训-报名学习LPWAN、Matter、蓝牙和Wi-Fi最新开发技能!

Silicon Labs&#xff08;亦称“芯科科技”&#xff09;主办新一轮2024年“亚太区Tech Talks在线技术讲座”即将在5月9日至8月8日&#xff08;中文系列场次&#xff09;&#xff0c;以及4月24日至8月7日&#xff08;英文系列场次&#xff09;正式展开&#xff0c;现正热烈报名中…

uniapp使用Canvas给图片加水印把临时文件上传到服务器

生成的临时路径是没有完整的路径没办法上传到服务器 16:37:40.993 添加水印后的路径, _doc/uniapp_temp_1710923708347/canvas/17109238597881.png 16:37:41.041 添加水印后的完整路径, file://storage/emulated/0/Android/data/com.jingruan.zjd/apps/__UNI__BE4B000/doc/…

ES 常见面试题及答案

目录 es 写入数据流程 es 删除数据流程 es 读数据流程 es 部署的服务有哪些角色 es 的实现原理 es 和lucence 关系 如何提高写入效率 提高搜索效率 es doc value指的啥 分片指的啥&#xff0c;定义后可不可义再修改 深分页如何优化 对于聚合操作是如何优化的 元数据…

adobe animate 时间轴找不到编辑多个帧按钮

如题&#xff0c;找了半天&#xff0c;在时间轴上找不到编辑多个帧按钮,导致无法批量处理帧 然后搜索发现原来是有些版本被隐藏了&#xff0c;需要再设置一下 勾选上就好了

POI和EasyExcel区别和操作Excel

POI和EasyExcel操作Excel 常用场景 1、将用户信息导出为excel表格&#xff08;导出数据… &#xff09; 2、将Excel表中的信息录入到网站数据库&#xff08;文件数据上传… &#xff09; 开发中经常会设计到excel的处理&#xff0c;如导出Excel&#xff0c;导入Excel到数据库…

鸿蒙Harmony应用开发—ArkTS-转场动画(组件内隐式共享元素转场)

geometryTransition用于组件内隐式共享元素转场&#xff0c;在组件显示切换过程中提供平滑过渡效果。通用transition机制提供了opacity、scale等转场动效&#xff0c;geometryTransition通过id绑定in/out组件(in指入场组件、out指出场组件)&#xff0c;使得组件原本独立的trans…