如何用指针比较js两个数组比较大小的大小

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
用C语言指针写一个两个数比较大小,相加减,输出最大,最小,两个数的和
jwSZ56LG36
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
#include "stdio.h"void main(){int *p,*q;int m,n;p=&m,q=&n;printf("请输入数据:");scanf("%d%d",&m,&n);printf("和:%d\n",*p-*q);printf("差:%d\n",*p+*q);printf("大:%d\n",*p>*q?*p:*q);printf("小:%d\n",*p
为您推荐:
其他类似问题
扫描下载二维码欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 4383 人关注过本帖
标题:利用指针进行字符串大小比较出现的问题
等 级:论坛游民
帖 子:86
专家分:30
结帖率:92.31%
&&已结贴√
&&问题点数:40&&回复次数:9&&&
利用指针进行字符串大小比较出现的问题
#include &stdio.h&
void sort(char *str1,char *str2,char *str3);//字符串大小比较的函数
void copyarray(char *strsrc,char* strdet);//字符串赋值的函数
int main()
&&& char str1[255],str2[255],str3[255];
&&& printf(&please input string:&);
&&& scanf(&%s%s%s&,str1,str2,str3);
&&& sort(str1,str2,str3);//调用字符串大小比较的函数
&&& printf(&min:%s\nmiddle:%s\nmax:%s\n&,str1,str2,str3);//将字符串按从小到大输出
&&& return 0;
void sort(char *str1,char *str2,char *str3)&&& //字符串大小比较函数的函数体,利用指针来进行对字符数组的接收&&&&&&&&&&&&&&&&&
&&& int i=0;
&&& char *str4,*str5,*str6;//三个字符指针,存放字符串首地址,str4存放最大的,str6存放最小的,str5为中间的
&&& for(i=0;;i++)//for循环,从字符串的第一个字符开始比较
&&&&&&&&if(str1[i]&str2[i])
&&&&&&&&&if(str2[i]&str3[i])
&&&&&&&&&{
&&&&&&&&& str4=str1;
&&&&&&&&& str5=str2;
&&&&&&&&& str6=str3;
&&&&&&&&&}
&&&&&&&&&else if(str1[i]&str3[i])
&&&&&&&&&{
&&&&&&&&& str4=str1;
&&&&&&&&& str5=str3;
&&&&&&&&& str6=str2;
&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&else
&&&&&&&&&{
&&&&&&&&& str4=str3;
&&&&&&&&& str5=str1;
&&&&&&&&& str6=str2;
&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&else if(str1[i]&str3[i])
&&&&&&&&&{
&&&&&&&&& str4=str2;
&&&&&&&&& str5=str1;
&&&&&&&&& str6=str3;
&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&else if(str2[i]&str3[i])
&&&&&&&&&{
&&&&&&&&& str4=str2;
&&&&&&&&& str5=str3;
&&&&&&&&& str6=str1;
&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&&&&&else
&&&&&&&&&{
&&&&&&&&& str4=str3;
&&&&&&&&& str5=str2;
&&&&&&&&& str6=str1;
&&&&&&&&&&&&&&
&&&&&&&&&}
&&&&&copyarray(str6,str1);//调用字符串复制函数将最小的字符串拷贝给str1;
&&&&&copyarray(str5,str2);//将中间的字符串拷贝给str2;
&&&&&copyarray(str4,str3);//将最大的字符串拷贝给str3;
&&& printf(&min:%s\nmiddle:%s\nmax:%s\n&,str6,str5,str4);
void copyarray(char *strsrc,char *strdst)//复制函数,strsrc为要复制的,strdst为接收复制内容的;
&&&&&&int i=0;
&&&&&&for(i=0;;i++)
&&&&&& strdst[i]=strsrc[i];
&&&&&& if(strsrc[i]=='\0')//到达字符串最后拷贝结束
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& }&&&&&&&&&&&&
我的问题是:
&&& 分别输入:ooo&&aaa&&bbb ,那么经过比较之后str4=&ooo&,str5=&bbb&,str6=&aaa&然而当跳出那个比较大小的循环后,str4=str6=&aaa&了;
&&& 请问如何解决该问题?谢谢你们
搜索更多相关主题的帖子:
等 级:蝙蝠侠
帖 子:356
专家分:954
你的比较是不是问题啊,如果你的输入字符里面包含不同的字母的话,你写的代码貌似就没有用了吧。如果你之比较首字母的话,你写的比较也太麻烦了,不知道你的要求是什么? 一般不是就要求之比较首字母的大小码?
重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
等 级:论坛游民
帖 子:86
专家分:30
回复 2楼 一个孩子
当首字母相等时就开始比较第二个字母,第二个字母相等时就比较第三个字母。
for循环会做这些的啊
与你我希望相处的快乐,你有不快可以向我发泄。
来 自:山东
等 级:黑侠
帖 子:223
专家分:643
我表示问题很严重strcmp
&&#include &string.h&
&&int strcmp( const char *str1, const char *str2 );
功能:比较字符串str1 and str2, 返回值如下:
less than 0
&str1 is less than str2
equal to 0
&str1 is equal to str2
greater than 0
&str1 is greater than str2
&&& printf( &Enter your name: & );
&&& scanf( &%s&, name );
&&& if( strcmp( name, &Mary& ) == 0 )
&&&&&&printf( &Hello, Dr. Mary!\n& );
等 级:业余侠客
帖 子:55
专家分:253
void sort(char *str1,char *str2,char *str3),在你的这个函数中,假如你输入的是ooo aaa bbb
你经过比较转换后,其中指针str1和str4都指向了ooo存储位置的首地址,同样的str2与str6指向了aaa
的首地址,str3和str5指向了bbb的首地址,因此你在进行复制的时候在str1中写入aaa后,原来存入的ooo就被覆盖了,因此输出不了ooo
你应该直接在void sort(char *str1,char *str2,char *str3)中输出,如下
#include &stdio.h&
void sort(char *str1,char *str2,char *str3);//字符串大小比较的函数
//void copyarray(char *strsrc,char* strdet);//字符串赋值的函数
int main()
&&& char str1[255],str2[255],str3[255];
&&& printf(&please input string:&);
&&& scanf(&%s%s%s&,str1,str2,str3);
&&& sort(str1,str2,str3);//调用字符串大小比较的函数
&&&// printf(&min:%s\nmiddle:%s\nmax:%s\n&,str1,str2,str3);//将字符串按从小到大输出
&&& return 0;
void sort(char *str1,char *str2,char *str3)&&& //字符串大小比较函数的函数体,利用指针来进行对字符数组的接收&&&&&&&&&&&&&&&&&
&&& int i=0;
&&& char *str4,*str5,*str6;//三个字符指针,存放字符串首地址,str4存放最大的,str6存放最小的,str5为中间的
&&& for(i=0;;i++)//for循环,从字符串的第一个字符开始比较
&&&&&&&&if(str1[i]&str2[i])
&&&&&&&&&&&&if(str2[i]&str3[i])
&&&&&&&&&&&&{
&&&&&&&&&&&&&&str4=str1;
&&&&&&&&&&&&&&str5=str2;
&&&&&&&&&&&&&&str6=str3;
&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&else
&&&&&&&&&&&&&&if(str1[i]&str3[i])
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&& str4=str1;
&&&&&&&&&&&&&&& str5=str3;
&&&&&&&&&&&&&&& str6=str2;
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&str4=str3;
&&&&&&&&&&&&&&&&&str5=str1;
&&&&&&&&&&&&&&&&&str6=str2;
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&}
&&&&&& else
&&&&&&&&&{
&&&&&&&&&&&& if(str1[i]&str3[i])
&&&&&&&&&&&& {
&&&&&&&&&&&&&&&str4=str2;
&&&&&&&&&&&&&&&str5=str1;
&&&&&&&&&&&&&&&str6=str3;
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&& }
&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&if(str2[i]&str3[i])
&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&str4=str2;
&&&&&&&&&&&&&&&&&&&&str5=str3;
&&&&&&&&&&&&&&&&&&&&str6=str1;
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&str4=str3;
&&&&&&&&&&&&&&&&&&&&str5=str2;
&&&&&&&&&&&&&&&&&&&&str6=str1;
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }
&&&&&&&&&}
&&&&&printf(&min:%s\nmiddle:%s\nmax:%s\n&,str6,str5,str4);
&&&&&str1=str6;
&&&&&str2=str5;
&&&&&str3=str4;
&&&&&&printf(&min:%s\nmiddle:%s\nmax:%s\n&,str1,str2,str3);//将字符串按从小到大输出
&&&&&//copyarray(str6,str1);//调用字符串复制函数将最小的字符串拷贝给str1;
&&& // copyarray(str5,str2);//将中间的字符串拷贝给str2;
&&& // copyarray(str4,str3);//将最大的字符串拷贝给str3;
/*void copyarray(char *strsrc,char *strdst)//复制函数,strsrc为要复制的,strdst为接收复制内容的;
&&&&&&int i=0;
&&&&&&for(i=0;;i++)
&&&&&& strdst[i]=strsrc[i];
&&&&&& if(strsrc[i]=='\0')//到达字符串最后拷贝结束
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& }&&
等 级:蝙蝠侠
帖 子:265
专家分:975
5楼正解啊.....厉害.....学习了....
&&&LZ 如果真想通过交换来得到最大、最小、居中的字符串
&&那就得将str4、str5、str6分配空间(有自己独立的空间,那样就不会出现上述问题),再将str1、str2、str3的
&&内容赋值给str4、str5、str6,最后再赋值str1、str2、str3......
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
还是用string.h库里有的比较函数(strcmp())好一点
马马虎虎 不吝赐教 我是路过蹭分滴
等 级:论坛游民
帖 子:86
专家分:30
回复 6楼 爱闹的娃
与你我希望相处的快乐,你有不快可以向我发泄。
等 级:论坛游民
帖 子:86
专家分:30
回复 7楼 zxd543
老师不让用
与你我希望相处的快乐,你有不快可以向我发泄。
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
回复 9楼 q510578
你们老师好负责呀
不让用就得自己写了
马马虎虎 不吝赐教 我是路过蹭分滴
版权所有,并保留所有权利。
Powered by , Processed in 0.069423 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved数组指针和数组引用做参数的区别(是否能够限定数组大小、数组降价) template&class T&void func1(T &, T &) {}template&class TT&void func2(TT, TT) {}int main(){&&& int a[10], b[10], c[20];
&&& func1(a, b); //OK, 数组引用&&& func1(b, c); //ERROR,形参为引用时, 数组不能转换为指针,&&& //b,c类型(数组长度)不匹配,参考C++ Primer P538&&& func2(a, b);& //OK,作为数组指针&&& func2(b, c);& //OK,作为数组指针&&& return 0;}
1 .在C++中可以定义数组的引用,用以解决C中无法解决的&数组降价&问题,我们先来看看什么是&数组降价&,先看如下代码:
void Test( char array[20] ){&& cout && sizeof(array) && // 输出 4}
char array[20] = { 0 };cout && sizeof(array) && // 输出 20Test( array );
&& 我们看到,对于同样的数组array,一个输出4,另一个输出20.这是因为void Test( char array[20] ) 中的array被降阶处理了,void Test( char array[20] ) 等同于 void Test( char array[] ) 也等同于void Test( char* const array ) 如果你原意,它甚至等同于void Test( char array[999] )
&void Test( char array[20] ){&& cout && sizeof(array) &&}
void Test( char* const array ){&& cout && sizeof(array) && // 既然是char*,当然输出4}
&& 这样以来,我们在函数声明中的数组大小限制是无效的,声明 void Test( char array[20] ) 并不能保证一定会接收到一个大小20的数组,即任何 char[] 都会被降价为 char* ,这样就增加了程序出错的可能性。要解决这样一个问题,我们可以用C++的数组引用作为参数,看以下代码:
void Test( char (&array)[20] )//是不是很像 char *p[20] 和 char (*p)[20] 的区别?{&& cout && sizeof(array) &&}
char array[20] = { 0 };cout && sizeof(array) &&Test( array );
&& 这样 Test 函数就只能接收大小为 20 的 char[],看如下代码:
char array1[10] = { 0 };char array2[20] = { 0 };Test(array1);//Error:实参不是大小为 10 的 char[]Test(array2);//OK
阅读(...) 评论()

我要回帖

更多关于 指针数组的大小 的文章

 

随机推荐