C语言题帮忙解下 急!!!谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:23:21
第八套试题
一、程序修改考试题(8分)
给定程序中 fun 函数的功能是:判断两个指针所指存储单元中的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

#include
#include
fun ( double *a, *b )
{
if ( a * b > 0.0 )
return 1;
else return 0;
}
main( )
{ double n , m;
printf ("Enter n , m : "); scanf ("%lf%lf", &n, &m );
printf( "\nThe value of function is: %d\n", fun ( &n, &m ) );
}
二、程序设计考试题(12分)
请编一个函数fun(int *a, int n, int *odd, int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给出数组中数据的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:数组中的值依次为: 1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even 返回偶数之和 8。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include
#include
#define N 20
fun ( int *a, int n, int *odd, int *even )
{//
}
main( )
{ int a[N]={1,9,2,3,11,6}, i, n=6, odd, even;
printf ( "The original data is :

一、
int fun ( double *a, *b ) //指明返回值类型
{
if ( (*a) * (*b) > 0.0 ) //a,b是指针的地址,带*号才是它的值
return 1;
else return 0;
}
二、
fun ( int *a, int n, int *odd, int *even )
{
int i;
*odd=0;
*even=0;
for(i=0;i<n;i++)
{
if(*a%2==0)
*odd=*odd + *(a+i);
else
*even=*even + *(a+i);
}
}

#include
#include
fun ( double *a, *b )
{
if ( a * b > 0.0 ) //应为if(*a**b>0.0)
return 1;
else return 0;
}
main( )
{ double n , m;
printf ("Enter n , m : "); scanf ("%lf%lf", &n, &m );
printf( "\nThe value of function is: %d\n", fun ( &n, &m ) );
}
题二:
#include
#include
#define N 20
fun ( int *a, int n, int *odd, int *even )
{
int i,k;
*odd=*even=0;
for(i=0;i<n;i++)
{
k=*(a+i)%2;
if(k)
*odd+=*(a+i);