我在计算机二级考试中遇到一操作题,要用指针来把“1234”中的“1”和“4”换位置,“2”和“3”换位置

[复制链接]
查看11 | 回复5 | 2011-5-22 10:54:51 | 显示全部楼层 |阅读模式
当时这道题做的好些的话就过了。现在请高手说说怎么做的。
刚忘了说了,要用函数来做的。

回复

使用道具 举报

千问 | 2011-5-22 10:54:51 | 显示全部楼层
这个其实跟普通的调换数字差不多,只不过换成指针就行了。定义三个指针,比如*a,*b,*c。然后a=&1;b=&4,c=a;a=b;b=c;就行了,2和3同理。输出时一定要记得是*a,*b,*c,不是a,b,c,否则输出的是地址,不是4321了。
回复

使用道具 举报

千问 | 2011-5-22 10:54:51 | 显示全部楼层
这道题就相当于逆序输出字符串,我用C编了一个:#includechar fun(char *s){char *p=s;//指针p指向数组s的首字符 int i; while(*s!=0) *p++=*s++;//将数组中的字符付给pp--;//由于最后一个p自增了,但没赋值,所以减掉一个1 for(i=1
回复

使用道具 举报

千问 | 2011-5-22 10:54:51 | 显示全部楼层
设数组为a,则char tmp;tmp = *a;*a = *(a + 3);*(a+3) = tmp;tmp= *(a + 1);*(a + 1) =*(a + 2);*(a + 2) = tmp;
回复

使用道具 举报

千问 | 2011-5-22 10:54:51 | 显示全部楼层
#includevoid main(){char numstr[]="1234";char *p=numstr,tmp;tmp = *p;*p = *(p+3);*(p+3) = tmp;tmp = *(p+1);*(p+1) = *(p+2);*(p+2) = tmp;
回复

使用道具 举报

千问 | 2011-5-22 10:54:51 | 显示全部楼层
当成字符串来处理就好嘛,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行