C语言基础练习13


1.有两个整数a和b,由用户输入1,2或3.如输入1,程序就给出a和b中大者,输入2,就给出a和b中小者,输入3,则求a与b之和

#include "stdafx.h"
#include<stdio.h>

int main()
{
	int fun(int x, int y, int(*p)(int, int));
	int max(int, int);
	int min(int, int);
	int add(int, int);
	int a = 34, b = -21, n;
	printf("please choose 1,2 or 3:");
	scanf_s("%d", &n);
	if (n == 1) fun(a, b, max);
	else if (n == 2) fun(a, b, min);
	else if (n == 3) fun(a, b, add);
    return 0;
}

int fun(int x, int y, int(*p)(int, int))
{
	int result;
	result = (*p)(x, y);
	printf("%d\n", result);
	return(result);
}

int max(int x, int y)
{
	int z;
	if (x > y)z = x;
	else z = y;
	printf("max=");
	return(z);
}

int min(int x, int y)
{
	int z;
	if (x < y)z = x;
	else z = y;
	printf("min=");
	return(z);
}

int add(int x, int y)
{
	int z;
	z = x + y;
	printf("sum=");
	return(z);
}
运行结果:

选择1:

选择2:

选择3:


2.有a个学生,每个学生有b门课程的成绩。找出其中有不及格的课程的学生及其学生号

#include "stdafx.h"
#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++)
	{
		p = search(score + i);
		if(p==*(score+i))
		{
			printf("No.%d score:", i);
			for (j = 0; j < 4; j++)
				printf("%5.2f  ", *(p + j));
			printf("\n");
		}
	}
    return 0;
}

float *search(float(*pointer)[4])
{
	int i = 0;
	float *pt;
	pt = NULL;
	for (; i < 4; i++)
		if (*(*pointer + i) < 60) pt = *pointer;
	return(pt);
}
运行结果:




猜你喜欢

转载自blog.csdn.net/huaweiran1993/article/details/78430378