您的位置:首页 > 编程语言

《C Primer Plus 第五版》第十章(数组和指针)编程练习

2012-11-22 16:06 423 查看
1、找不到

2、编写一个程序,初始化一个double数组,然后把数组内容复制到另外…………

3、编写一个函数,返回一个int数组中储存最大的数值,并在一个简单的程序中测试这个函数

4、编写一个函数,返回一个double数组中存储的最大数值的索引,并在一个简单程序中测试函数

5、编写一个函数,返回一个double数组中最大值和最小值的差值

6、编写一个函数,初始化一个二维数组…………

----------------------------------------------------------------代码分割线----------------------------------------------------------

//第2题的代码

#include <stdio.h>

void cpp(double source[], double den1[], int len) ;
void cpp_2(double * source, double * denp, int len) ;

int main (void)
{
double source[5] = {1.0, 2.2, 3.8, 4.11, 5.335} ;
double den1[5] ;
double denp[5] ;

cpp(source, den1, 5) ;
cpp_2 (source, denp, 5) ;

return 0 ;
}

void cpp(double source[], double den1[], int len)
{
int i ;

for (i=0;i<len;++i)
{
den1[i] = source[i] ;
printf("den1[%d] = %.3lf\n", i+1,den1[i]) ;
}
printf("\n\n") ;
}

void cpp_2(double * source, double * denp, int len)
{
int i ;
for (i=0;i<len;++i)
{
* (denp + i) = * (source + i) ;
printf("denp[%d] = %.3lf\n", i+1, denp[i]) ;
}
}


//第3题

#include <stdio.h>

int compare(int ar[], int len) ;

int main (void)
{
int i_arry[5] = {5, 18, 4, 28, 23} ;
int back ;

back = compare(i_arry,5) ;
printf("数组的最大值为:%d\n",back) ;

return 0 ;
}

int compare(int ar[], int len)  //比较大小函数
{
int i , t ;

for (i=0;i<len-1;++i)
{
if ( ar[i] > ar[i + 1] )
{
t = ar[i] ;
ar[i] = ar[i + 1] ;
ar[i + 1] = t ;
}
}

return ar[4] ;
}


//第4题

#include <stdio.h>

int a_index(double ar[], int len) ;

int main (void)
{
double d_arry[7] = {9.3, 11.5, 5.44, 12.6, 39.643, 40.05, 1.39} ;
int back ;

back = a_index(d_arry, 7) ;
printf("最大值的索引为%d",back) ;

return 0 ;
}

int a_index(double ar[], int len)
{
double aa ;
int back, i ;

for (i=1,aa=ar[0];i<len;++i)
{
if (aa < ar[i])
{
aa = ar[i] ;
back = i ;
}
}

return back ;
}


//第5题

#include <stdio.h>

int sort(double ar[], int len) ;

int main (void)
{
double ld_arry[6] = {11.2, 12.5, 10.11, 10.660, 43.654, 30.124} ;

sort(ld_arry, 6) ;
printf("数组的最大值和最小值的差值为:%.3lf", (ld_arry[5] - ld_arry[0]) ) ; //注意!浮点数相减会损失精度,因此存在误差

return 0 ;
}

int sort(double ar[], int len)  //冒泡排序找出最小值和最大值,分别放置数组第一个int和最后一个int
{
int i, j, t ;

for(i=0;i<len-1;++i)
{
for(j=0;j<len-i-1;++j)
if ( ar[j] > ar[j+1] )
{
t = ar[j] ;
ar[j] = ar[j+1] ;
ar[j+1] = t ;
}
}

}


//第6题

#include <stdio.h>
#define CLOS 2

void cpp(double ar[][2], double cp[][2], int len) ;

int main (void)
{
double arry[3][2] = { {1, 3}, {5, 7}, {9,11} } ;
double by[3][2] ;

cpp(arry, by, 3) ;

return 0 ;
}

void cpp(double ar[][2], double cp[][2], int rows)
{
int i, j ;
for (i=0;i<rows;++i)
{
for(j=0;j<CLOS;++j)
{
cp[i][j] = ar[i][j] ;
printf("cp[i][j] = %lf\n", cp[i][j]) ;
}
}
}


//第7题

#include <stdio.h>

void cpp(int ar[], int ar2[], int len) ;

int main (void)
{
int se_arry[7] = {1, 2, 3, 4, 5, 6, 7} ;
int thr_arry[3] ;

cpp( (se_arry + 2), thr_arry, 3 ) ;

return 0 ;
}

void cpp(int ar[], int ar2[], int len)
{
int i;

for (i=0;i<len;++i)
{
ar2[i] = ar[i] ;
printf("ar2[%d] = %d\n", i+1, ar2[i]) ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: