一道关于C语言指针的题目(图片)

作者&投稿:大季府 (若有异议请与网页底部的电邮联系)
第一个问题
max第一个for循环中
if(*p+i>*p)这句话有问题,会始终成立,要得到p+i的值,需要用*(p+i)
第二个问题,同样在max第一个for循环中
p的值已经更改所以这里数组操作会越界。要想获得最大值,可以这样做
MAX = p;
for(i = 1; i < 25; i ++)
if(*(p+i) > *MAX) max = p + i;
第三个问题,由于在max最后赋值的时候还要用到p,所以在赋值为一维的时候不要改变p的值
或者说,自始至终都不要改变p的值
for(i = 1; i < 25; i ++)
copy[i] = p[i]; //或者 copy[i] = *(p + i);
第四个问题 排序
这部分你再看一下书上吧 这个排序不正确
第五个问题 也是最后一个了,最后在给四角赋值的时候,没有交换原来元素,这样会使得元素重复/丢失

综合第三个第四个问题,可以改成
建立一个指针数组,查找最小的四个值,把其指针存在这个数组中,然后类似于最大值赋值一些样,交换位置
注意 不要用copy 否则无法记住原始值位置

帮忙做一道c语言关于指针的题目~

x是传的地址,y是传值,所以在函数f中 只有对x的操作才会作用于函数作用域外的x上,而y的值不会变。
所以x=2+4+2 y=4

a=p1==&m
=> a = (p1 == &m) // p1是否指向m?当然不是,所以返回0。p1 == &k 就是1了。
=> a = 0

b = (-*p1) / (*p2) + 7 // p1指向k,p2指向m,*p1就是取k的值了
=> b = (-4) / (6) + 7 // C中整数的除法,结果是直接去掉小数点后取整
=> b = 0 + 7
=> b = 7

三道C语言题目,求大神(用指针的方法)。
答:=1 || n<1 || n>9999){printf("%d is out of range of valid values.\n",n);return 0;}k=0; for(i=1;i<=n;i++)k=(k+3)%i;printf("Last No. is: %d\n",k%n+1);return 0;}运行样例:(2)include "stdio.h"char *delchar(char *s,char c){int i,j;for(j=i=...

几道C语言指针方面的问题
答:3.D,printf("%d\n",*b);输入的值,printf("%d\n",b);输出的是地址。4.scanf('%d,pa); 其中pa是个地址,格式要求就得是地址,也可以表示为scanf('%d,&a);5.C 是对的,原因是*p=*q,表示的是*p=j。此时i的值也改变了,等于j;6.选项A,既然指针变量已经为NULL,怎么还可输入呢...

C语言指针问题(初学者)
答:0]时,才能省略为p=c 4.还有一些复杂的指针应用,比如指向指针的指针,或者指向函数的指针,那些更复杂,二级考试中很复杂的一般考的不多,建议将基本的学习好;这个东西要靠自己慢慢理解,理解了,其实简单,不理解,很难,呵呵。写了不少,希望能对你的学习有所帮助,不对的地方,请海涵!

C语言程序设计指针雨数组三道题?
答:第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;...

一道关于C语言指针的题目(图片)
答:for(i=0;i<25;i++){ if(*p+i>*p){ MAX=p+i;} } 改成 int *pp = p;for(i=0;i<25;i++){ if(*(pp+i)>*pp){ MAX=pp+i;pp++;} } 之后所有p++的地方全部换成pp,并且在合适的地方加上pp=p;还有问题麻烦把code直接贴过来,图片实在伤不起啊 ...

C语言指针,求题目详解
答:您好,很高兴回答您的问题。您的这个程序,主函数中的第一句话表示p1 和str都是数组名,指向数组中的第一个元素。p2是指针变量,指向的是字符型数据。第二句话表示p2这个指针变量指向的是包含有abc等三个元素的字符型数组。strcpy(str+1,strcat(p1,p2))表示现将p2所指向的内容添加到p1这个数组的...

请高手帮我解决一下这道C语言题目,谢谢!
答:1、1234567 s1指针指向1,s2指针指向7 t=*s1++ s1指针指向2(t得到1的值 1)s1=*s2-- s2指针指向6(值发生改变1734567)s2=t; (值发生改变1734517)2、s1指针指向2,s2指针指向6 t=*s1++ s1指针指向3(t得到2的值 7)s1=*s2-- s2指针指向5(值发生改变1714517)s2=t; ...

C语言关于指针的一道题求大家帮忙解答
答:,&m);第二个错误:if(m==a) x=reverse;else if(m==b) x=upper;a和b没有值,所以应该把这个改成 a='a';b='b';if(m==a) x=reverse;else if(m==b) x=upper;第三个错误:c=(*x)(*y,n);被调函数第一个参数是指针,传过去的应该是地址,所以应该改成 c=(*x)(y,n);...

关于c语言 指针
答:1、请注意一个原则,就是赋值语句必须假定等号两边的量具有相同的类型。2、我们来看题目,变量b的类型为int [5][4],变量p的类型为int (*)[4],仔细观察,它们两个的类型其实是一样的,只是使用了不同的定义方式而已。因此应该选择A。选择支B中,*b的类型为int [4];选择支C中,&b[0][0...

求帮看下这道C语言字符串排序题,指针法。
答:include <stdio.h>#include <stdlib.h>char stra[20];char strb[20];char strc[40]; //最终输出结果char strsum[40]; //用语连接两字符串//输入字符串void input(void){ printf("Input string a:\n"); gets(stra); //输入字符串最快捷的办法 printf("Input string b:\n...