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