当前位置: 首页 > news >正文

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.lryc.cn/news/323050.html

相关文章:

  • 【力扣 TOP100】 无重复字符的最长子串
  • K8S node磁盘清理
  • 2024年上半年软考,现在开始学真的来得及吗?
  • SfM——八点法计算F矩阵(基础矩阵)与三角测量
  • 分布式事务的解决方案--Seata架构
  • 【 React 】React JSX 转换成真实DOM的过程?
  • [Open3d]: 知识记录
  • css面试题
  • vscode调试launch.json常用格式
  • 巨细!Python爬虫详解
  • 项目中如何进行限流(限流的算法、实现方法详解)
  • https在win7的环境下如何配置
  • Day69:WEB攻防-Java安全JWT攻防Swagger自动化算法签名密匙Druid泄漏
  • Python Windows系统 虚拟环境使用
  • 栈和队列的学习
  • 【机器学习】基于机器学习的分类算法对比实验
  • 民航电子数据库:mysql与cae建表语法差异
  • (学习日记)2024.03.15:UCOSIII第十七节:任务的挂起和恢复
  • 聚类分析 | Matlab实现基于NNMF+DBO+K-Medoids的数据聚类可视化
  • Unity类银河恶魔城学习记录11-3 p105 Inventory UI源代码
  • Vue3 + Vite + ts引入本地图片
  • 图斑或者道路如何单独显示名称在图斑上或者道路上
  • docker 修改默认存储位置
  • Springboot+vue的医疗挂号管理系统+数据库+报告+免费远程调试
  • 【Effective C++】39 明智而审慎地使用private继承
  • 2024年卫生巾行业市场分析报告(京东天猫淘宝线上卫生巾品类电商数据查询)
  • MySQL之表的记录操作
  • 一种动态联动的实现方法
  • kotlin中使用ViewBinding绑定控件
  • 知识积累(五):Transformer 家族的学习笔记