0726作业

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=&num;       //取奇数之和的地址 
	m=&sum;		 //取偶数之和的地址 
	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;
} 
	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值