1.编写一个函数fun,函数的功能是分别求出数组中所有奇数之和,以及所有偶数之和,形参N给了数组中数据的个数;利用指针变量odd返回奇数之和,利用指针变量even返回偶数之和;
主函数打印结果
提示:fun(int *arr, int n, int *odd, int *even)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
fun(int *arr, int n, int *odd, int *even);
/*1.编写一个函数fun,函数的功能是分别求出数组中所有奇数之和,以及所有偶数之和,形参N给了数组中数据的个数;利用指针变量odd返回奇数之和,利用指针变量even返回偶数之和;
主函数打印结果
提示:fun(int *arr, int n, int *odd, int *even)
*/
int main()
{
int ar[10]={0};
int *a;
a=&ar;
int i;
int num=0,sum=0;
int *n,*m;
n=# //取奇数之和的地址
m=∑ //取偶数之和的地址
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
ar[i]=rand()%10; //随机生成整数
printf("%d ",ar[i]);
}
printf("\n");
fun(ar,10,n,m);
printf("偶数之和为:%d\n",*m);
printf("奇数之和为:%d",*n);
return 0;
}
fun(int *arr, int n, int *odd, int *even)
{
int i;
for(i=0;i<n;i++)
{
if(arr[i]%2==0)
{
*even += *(arr+i); //求出偶数之和
}
}
for(i=0;i<n;i++)
{
if(arr[i]%2!=0)
{
//printf("%d ",arr[i]);
*odd += *(arr+i); //求奇数之和
}
}
}
2.编写一个程序,声明一个3*5的数组并初始化,具体数值可随意,程序打印出
数值,然后数值翻一番,接着再次打印出新值,编写-一个函数来显示数组内容,
在编写另一个函数执行翻倍功能,数组名和数组行数作为参数由程序传递给函数
#include <stdio.h>
void fun(int (*a)[5],int i,int j);
int main()
{
int arr[3][5]={0};
int i,j;
srand((unsigned)time(NULL));
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
arr[i][j]=rand()%10; //随机生成整数
}
}
fun(arr,3,5); //调用函数
fanbei(arr,3,5);
fun(arr,3,5);
return 0;
}
void fun(int (*a)[5],int i,int j)
{
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",*(*(a+i)+j)); //打印第一次输出的值和打印翻倍后的值
}
printf("\n");
}
printf("\n");
}
void fanbei(int (*b)[5],int i,int j)
{
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
*(*(b+i)+j)=*(*(b+i)+j)*2; //让数组每个数翻倍
}
}
}
3.计算器程序修改,主调函数使用函数名做为实参,被调函数形参使用函数指针类型。
#include <stdio.h>
int jia(int i,int j);
int jian(int i,int j);
int cheng(int i,int j);
int chu(int i,int j);
int process(int (*fun)(int i,int j),int i,int j);
//函数指针----指针保存函数的地址
int main()
{
int a,b;
int c=0;
printf("请随机输入两个整数:\n");
scanf("%d %d",&a,&b);
printf("请输入加减乘除中的一个运算符号:\n");
getchar();
char ch;
ch=getchar();
switch(ch)
{
case '+':
{
c=process(jia,a,b); //process()被调函数,max()回调函数
printf("相加 c=%d\n",c);
break;
}
case '-':
{
c=process(jian,a,b); //process()被调函数,min()回调函数
printf("相减 c=%d\n",c);
break;
}
case '*':
{
c=process(cheng,a,b); //process()被调函数,min()回调函数
printf("相乘 c=%d\n",c);
break;
}
case '/':
{
c=process(chu,a,b); //process()被调函数,min()回调函数
printf("相除 c=%d\n",c);
break;
}
default:
break;
}
return 0;
}
int process(int (*fun)(int i,int j),int i,int j)
{
int ret;
ret = fun(i,j);
return ret;
}
int jia(int i,int j)
{
int sum=0;
sum=i+j;
}
int jian(int i,int j)
{
int sum=0;
sum=i-j;
}
int cheng(int i,int j)
{
int sum=0;
sum=i*j;
}
int chu(int i,int j)
{
int sum=0;
sum=i/j;
}