// int (*p ) ( int , int) = maxValue; or
int (*p) ( int ,int)= NULL;
p = maxValue;
重命名:
typedef int (*PFUN) (int ,int ) ; PFUN p= NULL;
动态排序
函数指针数组
返回值是函数指针
动态调用
输入一句英文句子,将其中所有的单词首字母转换成大写,用回调函数实现。
动态函数调用实现下列操作:输入两个数以及操作符计算结果。@求最大公约数 ¥ 求最小公倍数
main .m
printf(" 题目一 : \n");
char str[] = "i want a pencil";
zheng(str);
for ( int i = 0 ; i < strlen(str) ; i ++ ) {
printf("%c" , str[i]);
}
printf("\n");
printf( " 题目二 : \n");
int a = 0 ,b = 0 ;
scanf("%d,%d" , &a , &b ) ;
printf("%d\n" , dongtai(a, b, '$'));
.h
char hange(char s );
typedef char (*PF) (char);
void zheng(char * s );
int maxGY(int a , int b ) ;
int minGB(int a , int b ) ;
typedef int (*PFU) (int , int ) ;
struct func{
char a ;
PFU b ;
};
typedef struct func Choose;
PFU changefun(char *s) ;
int dongtai ( int a , int b , char c ) ;
.m
char hange(char s )
{
char t = s - 32;
s = t ;
return s ;
}
void zheng(char *s )
{
PF p = hange;
if (s[0] >= 'a' || s[0] <= 'z') {
s[0] = p (s[0]);
}
int i = 1 ;
while (s[i] != '\0') {
if (s[i] == ' ' )
{
s[i+1] = p( s[i + 1 ] );
i ++ ;
}
i ++ ;
}
}
int maxGY(int a , int b )
{
while (a%b != 0 ) {
int temp = a%b;
a = b ;
b = temp ;
}
return b ;
}
int minGB(int a , int b )
{
return a*b/maxGY(a, b);
}
PFU changefun(char *s)
{
Choose xuan[2] = {{'@' , maxGY} , { '$' , minGB}};
PFU pp = NULL ;
for (int i = 0 ; i < 2 ; i ++ ) {
if (*s == xuan[i] . a) {
pp = xuan[i] . b;
break;
}
}
return pp;
}
int dongtai ( int a , int b , char c )
{
PFU p = changefun(&c );
int dd = p(a,b);
return dd;
}
printf(" 杨辉三角\n\n");
int array[9][9] = { 0 } ;
for (int i = 0 ; i < 9 ; i ++ ) {
array[i][0] = 1 ;
array[i][i] = 1;
for (int j = 1 ; j
array[i][j] = array[i-1][j-1] + array[i-1][j];
}
}
for (int i = 0 ; i < 9 ; i ++ ) {
for (int j = 9 ; j > i ; j --) {
printf(" ");
}
for (int k = 0 ; k <= i ; k ++ ) {
printf("- " , array[i][k]);
}
printf("\n");
}
}