C语言程序设计指针雨数组三道题?

   更新日期:2024.05.02

第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
",*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("
");

 }

}

将程序第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("
");

 }

}



第一题:
不能达到目的,修改如下
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都可以

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("
");

    }



  • 18855658516 :C语言程序设计指针雨数组三道题?
    厉竿柿2473 :答:应该把指向int型的指针p改成int型,只需改变相应的交换程序,其它不用变.改正后的完整的C语言程序如下(改动的地方见注释)include<stdio.h> void swap(int *p1,int *p2){ int p;//这里定义int型变量p p=*p1;*p1=*...
  • 18855658516 :C语言关于指针的三道简单选择题,来个大神解释下,谢谢
    厉竿柿2473 :答:第三题A x[3]为3无疑问,B p1为x[3]的地址 ++是后++不需考虑 也是3 C p1为x[2]地址,后面的++无论括号与否都是表达式执行完最后执行,D 先++之后也是x[3]的地址 明显正确。所以只有C错误 答案为C 这个题库...
  • 18855658516 :C语言数组指针的题
    厉竿柿2473 :答:第一题 :这里边数组的指针变量的每加1是指地址指向下一个数组元素 p首先指向a 即a的首元素a[0]的地址 由于a数组是int变量 int变量占2字节 故a数组的下一个元素即a[1]的地址值就是194+2 ,也就是p+1的值, 当然...
  • 18855658516 :计算机。C+语言作业。。。三个程序,写出答案加分。
    厉竿柿2473 :答:数组是指针常量,是不可以自增或自减的,因为常量的值不可以改变。而指针是指针变量,和其他变量的概念一样,只不过指针存放的值是地址值。数组和指针实现一个1-10的加法:main(){ int str[10];int *p;int i,j=0;...
  • 18855658516 :C语言,3个题,多维数组和指针
    厉竿柿2473 :答:int sum[3][5],s;init(sum,3,5);dsp(sum,3,5);s=max(sum,3,5);printf("\n%d\n",s);mult2(sum,3,5);dsp(sum,3,5);getch();} 3 include <stdio.h> include <malloc.h> int dsp(int s[],int...
  • 18855658516 :C语言指针数组问题
    厉竿柿2473 :答:1. int (*p)[3], p = a + 2 ()优先级先于[],因此p先是指针,是什么指针呢?由[]知道是一个指向数组的指针,因此他其实简单来说就是个指向长度为三的一维数组的指针。如果是数组b[3],那么b实际上代表的就...
  • 18855658516 :C语言,做4个题,用数组和指针
    厉竿柿2473 :答:max = *(array+i);else min = *(array+i);} return (max-min);} //第四题函数,两个等长数组相加,保存在第三个数组 void add( double result[], double arg1[], double arg2[], int len ){ int i=0;...
  • 18855658516 :想要一些 c程序有关数组或指针的选择题并且有正确答案的
    厉竿柿2473 :答:指针一、选择题1、以下程序的运行结果是( B ) sub(int x,int y,int *z) { *z=y-x; } void main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%4d,%4d,%4d\n",a,b,c); }...
  • 18855658516 :C语言指针数组问题 求高手详解
    厉竿柿2473 :答:首先m[12]={0,2,4,6,8,10,12,14,16,18,20,22} 语句 if(k<3) p[k]=m+2*k*k;的计算过程序,当k=0时,p[0]=m也就是指针p[0]指向的是数组m的开始 当k=1时,p[1]=m+2;因此p[1]指向m+2的...
  • 18855658516 :C语言选择题,关于指针数组。求详解
    厉竿柿2473 :答:int (*pt)[3]; 定义了一个数组指针,也就是定义了一个指向有三个元素的指针,即该指针,每次自加1,地址跳过三个int pt=a; 就是让pt指向a[0],注意a[0]是一个数组地址,里面有三个元素 对于A选项,pt[0][0...
  • 相关链接

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