C语言基础练习13

来源:互联网 发布:webstorm格式化js代码 编辑:程序博客网 时间:2024/06/05 15:02

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