C语言,做4个题,用数组和指针

   更新日期:2024.05.17
#include<stdio.h>

//第一题函数,数组形参的复制
void copy_array( double source[], double destination[], int len)
{
int i=0;
for(; i<len; i++)
{
destination[i]=source[i];
}
}

//第一题函数,指针形参的复制
void copy_ptr( double *source, double *destination, int len)
{
int i=0;
for(; i<len; i++)
{
*(destination+i) = *(source+i);
}
}

//第二题函数,最大值最小值之差
double dif( double array[], int len )
{
double max=*array, min=*array;
int i=0;
for(; i<len; i++)
{
if( max<*(array+i) )
max = *(array+i);
else
min = *(array+i);
}
return (max-min);
}

//第四题函数,两个等长数组相加,保存在第三个数组
void add( double result[], double arg1[], double arg2[], int len )
{
int i=0;
for(; i<len; i++)
{
*(result+i)=*(arg1+i)+*(arg2+i);
}
}

int main(void)
{
double source[4] = {1,2.3,4.5,6.7};
double destination1[4];
double destination2[4];
double destination3[3][4];
double result[4];
int i, j;

//验证第一题,拷贝两个数组并分别输出
copy_array(source, destination1, 4);
copy_ptr(source, destination2, 4);

printf("1>>>>\n");
for(i=0; i<4; i++)
{
printf("%lf ", destination1[i]);
}
printf("\n");

for(i=0; i<4; i++)
{
printf("%lf ", *(destination2+i));
}
printf("\n\n");
//第一题验证结束

//第二题验证,打印数组source最大值最小值之差
printf("2>>>>\n");
printf("%lf\n\n", dif(source, 4));
//第二题验证结束

//第三题验证,将source数组的成员分次拷贝到二维数组destination3中,并打印
for(i=0; i<3; i++)
{
copy_ptr(source, destination3[i], 4);
}

printf("3>>>>\n");
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
printf("%lf ", *(*(destination3+i)+j));
}
printf("\n");
}
printf("\n\n");
//第三题验证结束

//第四题验证,将destination1与destination2相加并输出
add( result, destination1, destination2, 4);
printf("4>>>>\n");
for(i=0; i<4; i++)
{
printf("%lf ", result[i]);
}
//第四题验证结束

return 0;
}

我很懒,所以把所有的函数和验证都写到一个文件里了,如果实在需要,你自己分开一下吧,也就是多声明几个数组而已。

第三题好像是这样,哈哈,因为“the copy functions from exercise 5”我不知道是不是指第一题的函数之一,而且sub-arrays也不知道要不要转置。

看不懂英文,有没中文的?

  • 19588797988 :C语言指针数组问题 求高手详解
    樊光瑗791 :答:上面的计算如果你的理解能力强,你也可以用文字去描术,什么指针偏移多少个单位,又指向哪里,这样来描术,但本人认为文字描术容易出错,因此采用数学的计算方法,科学,安全,不易错。再来看p[k][4-k]究竟是什么,当k=0时,就是p[0][4-0]因此,因为p[0]是指向的数组m的开始,因此p[0][4]...
  • 19588797988 :求一篇用C语言编写的使用数组和指针统计成绩的程序代码
    樊光瑗791 :答:void main(){ int a[8] = {75, 80, 83, 85, 86, 30, 0, 0};string name[] = {"数学", "物理", "外语", "政治", "体育"};string MeanLow[4];a[6] = (a[0] + a[1] + a[2] + a[3] + a[4]) / 5;char* strAve = (char*)malloc(10);MeanLow[0] = itoa...
  • 19588797988 :C语言 用指针编写在数组中查找指定值指针的函数
    樊光瑗791 :答:printf("%x %d",find(c,n),*(find(c,n)));/*第一个为函数返回地址,第二个为函数返回地址里的值*/ getch();} 另外,我们测试一个程序或者函数是否正确不在于其能否正确运行,而在于其运行的结果是否符合我们的预期。针对上述程序,测试方法如下:输入任意一个数,如果这个数在数组C内,看是否...
  • 19588797988 :大一C语言问题?一维数组与指针函数?
    樊光瑗791 :答:include<stdio.h> void Input(int *a,int n){int i;for(i=0;i<n;i++)scanf("%d",a+i);} int Max(int *a,int n){int i,max=*a;for(i=1;i<n;i++)if(*(a+i)>max)max=*(a+i);return max;} int Min(int *a,int n){int i,min=*a;for(i=1;i<n;i++)if(*...
  • 19588797988 :C语言课程设计 使用数组和指针统计成绩 该班有五门课,分别为语文、数学...
    樊光瑗791 :答:"4. 显示学生记录","5. 按学号查找学生信息","6. 删除指定学号的学生信息","7. 按某一门课对学生成绩排序","8. 统计某门课程的学生成绩","9. 按姓名查找学生信息","10. 退出系统"};char s[3];int c,i;for(i=0;i<=11;i++)printf(" %s\n",menu[i]);do { printf("\n...
  • 19588797988 :C语言编程题用一维数组和指针变量作函数参数,编程打印某班一门课成 ...
    樊光瑗791 :答:你想得到的结果是最高分和学号,程序只能返回其中一个。你也可以定义pmaxScore存储求出来的最高分。这里指针调用的作用就是作为参数按址调用,你在这个函数外面声明一个long型的变量,可以直接传进去,函数运行之后这个变量会改变值。void FindMax( int score[],long num[],int n,long *PMaxNum,int...
  • 19588797988 :C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
    樊光瑗791 :答:()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int(*p)[4];//该语句是定义一个数组指针,指向含4个元素的一维数组。p=a;//...
  • 19588797988 :一个关于C语言的指针与二维数组的问题
    樊光瑗791 :答:C语言中,数组和指针是两类不同的类型——前者的定义需要明确被指向的类型,后者的定义需要明确元素类型和数组的长度。这样定义的原因是两者本身的语义不同。引用一个表示数组的标识符(数组名)具有两重含义,一是指整个数组,二是指指向数组首个元素(而不是整个数组)的指针。具体取两种含义是上下文...
  • 19588797988 :C语言,3个题,多维数组和指针
    樊光瑗791 :答:scanf("%d",s[x]);return 1;} void main(){ int *sum,s;printf(array size;);scanf("%d",s);sum=(int *)malloc(s*sizeof(int));if(sum){ init(sum,s);dsp(sum,s);s=max(sum,s);printf("\n%d\n",s);free(sum);} else printf("malloc failly!");getch();} ...
  • 19588797988 :用C语言编写一个程序,通过指针求一个数组中所有元素的和
    樊光瑗791 :答:include "stdio.h"void main(){ int a[10];int i,count=0;printf("请输入10个数组元素: \n");for(i=0;i<10;i++){ printf("%d : ",i+1);scanf("%d",&a[i]);} for(i=0;i<10;i++)count+=*(a+i);printf("数组元素和 = %d\n",count);} ...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网