我是靠谱客的博主 高挑花生,最近开发中收集的这篇文章主要介绍C语言小题,有a个学生,每个学生有b门课程的成绩。要求找出其中有不及格的学生及其全部成绩。(返回指针值的函数),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言:
此篇接上篇做出一点点改动,依然是针对 返回指针值的函数 方面的练习。

解题思路:
在上篇文章的基础上修改。main 函数不是只调用一次 search 函数,而是先后调用3次 search 函数,在 search 函数中检查3个学生有无不及格的课程,如果有,就返回该学生的0号课程的地址 &score[i][0] ,否则返回NULL。在 main 函数中检查返回值,输出有不及格学生4门课程的成绩。

正文:

#include<stdio.h>
int main() {
	float score[][4]= {{60,70,80,90},{56,89,67,88},{34,78,90,66}};//定义数组,存放成绩
	float * search(float( * pointer)[4]);//函数声明
	float * p;
	int i,j;
	for(i=0; i<3; i++) {					//循环3次
		p=search(score+i);
						//调用search函数,如果不及格返回score[i][0]的地址,否则返回NULL
		if(p==*(score+i)) {		//如果返回的是score[i][0]的地址,表示p的值不是NULL
			printf("No.%d score:",i);
			for(j=0; j<4; j++)
				printf("%5.2f ",*(p+j));//输出score[i][0]~score[i][3]的值
			printf("n");
		}
	}
	return 0;
}

float * search(float( * pointer)[4]) {//定义函数,形参pointer是指向一维数组的指针变量
	int i=0;
	float * pt;
	pt=NULL;								//先使pt的值为NULL
	for(; i<4; i++)
		if(*(*pointer+i)<60) pt=*pointer;	//如果有不及格课程,使pt指向score[i][0]
	return(pt);
}

程序分析:
函数 search 的作用使检查一个学生有无不及格的课程。在search函数中的pointer 是指向一维数组(有4个元素)的指针变量。pt 为指向 float 型变量的指针变量。从实参传给形参 pointer 的是 score+i,它是 score 第 i 行的首地址,见图8.35(a)

在search 函数中,先使pt=NULL(即pt=0)。用 pt 作为区分有无不及格课程的标志。若经查4门课中有不及格的,就使 pt 指向本行0列元素,即 pt=&score[i][0] ;若无不及格则保持 pt 的值为 NULL,见图8.35(b)。将 pt 返回 main 函数中,在 main 函数中,把调用 search 得到的函数值(指针变量 pt 的值)赋给 p 。用 if 语句判断 p 是否等于 * (score+i),若相等,表示所查的序号为 i 的学生有不及格课程(p 的值为 *(score+i),即 p 指向 i 行0列元素),就输出该学生(有不及格课程的学生)4门课程成绩。若无不及格,p 的值是NULL,不输出。
在这里插入图片描述
总结:
运行结果:
在这里插入图片描述

最后

以上就是高挑花生为你收集整理的C语言小题,有a个学生,每个学生有b门课程的成绩。要求找出其中有不及格的学生及其全部成绩。(返回指针值的函数)的全部内容,希望文章能够帮你解决C语言小题,有a个学生,每个学生有b门课程的成绩。要求找出其中有不及格的学生及其全部成绩。(返回指针值的函数)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部