c语言数组编程题目?

发布网友 发布时间:2022-04-20 08:01

我来回答

3个回答

热心网友 时间:2023-09-07 00:21

第1题

原程序不能实现pt1指向a和b的大者,pt2指向小者的目的,

应该把指向int型的指针p改成int型,只需改变相应的交换程序,其它不用变.

改正后的完整的C语言程序如下(改动的地方见注释)

#include<stdio.h>

void swap(int *p1,int *p2)

{

 int p;//这里定义int型变量p

 p=*p1;*p1=*p2;*p2=p;//这里改变相应的交换程序

}

void main(void)

{

 int a,b;int *pt1,*pt2;

 scanf("%d,%d",&a,&b);

 pt1=&a;pt2=&b;

 if(a<b) swap(pt1,pt2);

 printf("%d,%d \n",*pt1,*pt2);

}

第2题

第一空填 -1

第二空填 *sn

#include<stdio.h>

void fun(float *sn,int n)

{

 float s=0.0,w,f=-1.0;

 int i=0;

 for(i=0;i<=n;i++)

 {

  f=-1*f;//这里第一空填 -1

  w=f/(2*i+1);

  s+=w;

 }

 *sn=s;//这里第二空填 *sn

}

int main()//补充的主函数

{

 float sn;

 int n=10;

 fun(&sn,n);

 printf("数列的前%d项计算结果S=%f",n+1,sn);

 return 0;

}

第3题

分析 用二维数组指针p打印二维数组的每一行字符串

#include "stdio.h"

main()

{

 char a[4][5]={"ABCD","EFGH","IJKL","MNOP"};

 char (*p)[5];

 int i,j;

 p=a;

 for(i=0;i<4;i++)

 {

  for(j=0;j<4;j++) printf("%c",*(*(p+i)+j));

  printf("\n");

 }

}

将程序第9行中的"%c"改成"%s",则改变后的程序如下(改动的地方见注释)

#include "stdio.h"

main()

{

 char a[4][5]={"ABCD","EFGH","IJKL","MNOP"};

 char (*p)[5];

 int i,j;

 p=a;

 for(i=0;i<4;i++)

 {

  printf("%s",*(p+i));//这里去掉for_j循环

  printf("\n");

 }

}

热心网友 时间:2023-09-07 00:21

第一题:
不能达到目的,修改如下
void swap(int** p1, int** p2)
{
int *p = *p1;
*p1 = *p2;
*p2 = p;
}
相应的main里swap调用改成
swap(&pt1, &pt2);

第二题:
-1
*sn

主函数:
int main()
{
float sn;
fun(&sn, 10);
printf("前%d和为:%f\n", 10, sn);
return 0;
}

第三题:
第9行整行改成
printf("%s", p[i]); //a[i],p+i都可以

热心网友 时间:2023-09-07 00:22

1、reference of pointer as parameters


void swap1(int*& p1, int*& p2) {

    int *p;

    p = p1; p1 = p2; p2 = p;

}

2、

f = -1.0 *f; 

*sn = s;

3、

    for(i = 0; i < 4; ++i) {

        printf("%s ", *(p+i));

        printf("\n");

    }

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com