调用形参为数组的函数的程序
2017-02-05 20:44
363 查看
1、 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。
#include <stdio.h>
void stat(int a[],int n,int c[][2]);
int main()
{
int n;
int a[100];
int c[20][2];
int i,j;
printf("Please input a num: ");
scanf("%d",&n);
printf("Please input %d nums: \n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
stat(a,n,c);
return 0;
}
void stat(int a[],int n,int c[][2])
{
int i,k;
int j = 0;
int count = 1;
int num = 0;
for(i = 0;i < n;i+=2) //算出合并后新的数据
{
c[j++][0] = a[i] * 10 + a[i+1];
}
for(i = 0;i < (n/2 - num);i++) // 计算数据出现的次数
{
for(j = i + 1;j < (n/2 - num);j++)
{
if(c[i][0] == c[j][0])
{
count++;
num++;
for(k = j;k < n/2 - 1;k++) // 去除数组中重复的数据
{
c[j][0] = c[j+1][0];
c[j][1] = c[j+1][0];
}
}
}
c[i][1] = count;
count = 1;
}
for(i = 0;i < n/2 - num;i++) // 输出最后的结果
{
for(j = 0;j < 2;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
}
注意:(1)去除数组中重复数据的方法 (2)调用参数为一维或二维数组的方法
2、编写函数fun(int *a, int n, int *odd, int *even),功能是:求出数组a[]中所有奇数之和以及所有偶数之和。并利用指针odd返回奇数之和,利用指针even返回偶数之和。 例如:a[]的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even 返回偶数之和 8。
#include <stdio.h>
void fun(int * a,int n,int * odd,int * even);
int main()
{
int a[100];
int n;
int i;
int * odd;
int * even;
printf("Please input a num: ");
scanf("%d",&n);
printf("Please input %d nums:\n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
fun(a,n,odd,even);
return 0;
}
void fun(int * a,int n, int * odd,int * even)
{
int sum_odd = 0;
int sum_even = 0;
int i;
for(i = 0;i < n;i++)
{
if(a[i] % 2 == 0)
{
sum_odd += a[i];
}
else
sum_even += a[i];
}
odd = & sum_odd;
even = & sum_even;
printf("odd=%d even=%d\n",*odd,*even);
}
注意:odd = & sum_odd; printf("odd=%d even=%d\n",*odd,*even); fun(a,n,odd,even);
#include <stdio.h>
void stat(int a[],int n,int c[][2]);
int main()
{
int n;
int a[100];
int c[20][2];
int i,j;
printf("Please input a num: ");
scanf("%d",&n);
printf("Please input %d nums: \n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
stat(a,n,c);
return 0;
}
void stat(int a[],int n,int c[][2])
{
int i,k;
int j = 0;
int count = 1;
int num = 0;
for(i = 0;i < n;i+=2) //算出合并后新的数据
{
c[j++][0] = a[i] * 10 + a[i+1];
}
for(i = 0;i < (n/2 - num);i++) // 计算数据出现的次数
{
for(j = i + 1;j < (n/2 - num);j++)
{
if(c[i][0] == c[j][0])
{
count++;
num++;
for(k = j;k < n/2 - 1;k++) // 去除数组中重复的数据
{
c[j][0] = c[j+1][0];
c[j][1] = c[j+1][0];
}
}
}
c[i][1] = count;
count = 1;
}
for(i = 0;i < n/2 - num;i++) // 输出最后的结果
{
for(j = 0;j < 2;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
}
注意:(1)去除数组中重复数据的方法 (2)调用参数为一维或二维数组的方法
2、编写函数fun(int *a, int n, int *odd, int *even),功能是:求出数组a[]中所有奇数之和以及所有偶数之和。并利用指针odd返回奇数之和,利用指针even返回偶数之和。 例如:a[]的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even 返回偶数之和 8。
#include <stdio.h>
void fun(int * a,int n,int * odd,int * even);
int main()
{
int a[100];
int n;
int i;
int * odd;
int * even;
printf("Please input a num: ");
scanf("%d",&n);
printf("Please input %d nums:\n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
fun(a,n,odd,even);
return 0;
}
void fun(int * a,int n, int * odd,int * even)
{
int sum_odd = 0;
int sum_even = 0;
int i;
for(i = 0;i < n;i++)
{
if(a[i] % 2 == 0)
{
sum_odd += a[i];
}
else
sum_even += a[i];
}
odd = & sum_odd;
even = & sum_even;
printf("odd=%d even=%d\n",*odd,*even);
}
注意:odd = & sum_odd; printf("odd=%d even=%d\n",*odd,*even); fun(a,n,odd,even);
相关文章推荐
- 指针真得比数组快吗?函数调用会拖慢程序多少?++i 比i = i+1 快吗?
- kotlin调用方法中有形参为数组的方法(函数)
- Win32程序函数调用时堆栈变化情况分析
- 使用sql Server 的函数功能返回 表,方便在程序中调用
- Win32程序函数调用时堆栈变化情况
- 在别人的程序的任意位置加上调用自己函数的代码,且不影响原程序执行的方法
- 函数返回数组怎么调用啊?
- 为什么c++程序调用c编译器编译的函数需要在调用前加上extern“C”
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?----转
- 关于C语言的函数调用过程和数组越界
- J2ME程序开发要注意函数调用对性能的影响
- 利用dbus-send在命令行下给程序发送消息,调用其相应的函数
- 调用控制台程序函数 RunProcess
- c语言写的程序里,调用C++写的库里的函数
- 有没有记录程序运行中所有的函数调用堆栈的工具?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- Win32程序函数调用时堆栈变化情况分析
- 一个DELPHI程序要调用DLL,而DLL中的函数名,参数个数,参数类型为不定
- C++程序中不同的函数调用方式
- Discuz! 7.0 模块调用脚本范例程序 - 数组