关于C语言的问题.这题输出结果是什么啊,为什么?求详解啊~~

voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1... void swap (char *x,char *y)
{
char t;
t=*x;*x=*y;*y=t;
}
main()
{
char *s1="abc",*s2="123";
swap(s1,s2);
printf("%s%s\n",s1,s2);
}
展开
 我来答
scookiem
2011-08-23 · TA获得超过839个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:66.7万
展开全部

这样写,答案输出为abc123,因为char *s1="abc",这样写,存储位置为静态存储区,不能修改值的。。如果要输出1bca23,初始化就必须是char s1[]=“abc",附上图一张

软件哲学
2011-08-22 · TA获得超过494个赞
知道小有建树答主
回答量:791
采纳率:100%
帮助的人:564万
展开全部
输出?它能输出?不会报错?我看着怎么感觉就像要报错呢,输出之前就报错了。
*s1="abc",*s2="123";
这么定义的话 s1 和 s2 是两个指针,分别指向两个常量字符串
即便你扔进函数里面交换,它应该会给你报错成内存不可写。
"abc" 和 "123" 都应该在常量区。。。。

不过你的意思我大概懂了
按照你的意思,结果看着像 1bc 和 a23
因为函数里面只交换了字符串的第一个元素。
追问
不知道,书上是这么写的,我没试过.答案是1bc,a23.为什么只交换第一个啊?我是初学者,有很多不懂的
追答
反正我没编译,我就这么一看,感觉它可能会出错,
正常写应该这么写char s1[]="abc",s2[]="123";
这才是数组,可以改变元素值的

原因嘛
char *x,char *y
x和y分别都是指向char类型的指针,或者说是char *类型变量
char t;
t=*x;*x=*y;*y=t;
一旦一个指针前面加上一个*,就是说,我们要取的不是指针的值,而是指针所对应的那块地址里面的值,按照指针所指向变量的类型,来取值
所以char *x="abc",char *y="123"
*x 和 *y分别是首元素的值(指针知识。。。都是基础。。。)
然后 t=*x;*x=*y;*y=t;它只是交换了首元素的值,后面都没变。。。。。
大致就这意思,其实都是指针的基础知识

我打了400来个字啊,是不是得多来点分阿。。。

喜鹊儿MM 朋友,如果按照你那么理解的话,char t;改成int t;的话,是不是就一次接受4个了。
你那种理解方法就不正确,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜鹊儿MM
2011-08-22 · TA获得超过160个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:126万
展开全部
答案是1bc,a23;你可以试试单独输入printf("%c",s1); 输出的是a,对吗?也就是说如果只接收一个字符的话,他是第一个字符,在swap中,t为char型的,只接受一个,故只交换第一个。也就是1和a交换。懂点了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弭冰枫0i1
2011-08-23 · TA获得超过441个赞
知道小有建树答主
回答量:922
采纳率:50%
帮助的人:426万
展开全部
第二层循环,只要有数不能被整除,就输出。
经过优化,目前效率个人认为最好的,如有更好方法,望指教。
大一的孩,鼓励下。
#include <stdio.h>
#include <math.h>
void main(void)
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m+=2)
{
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%-4d",m);h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2808proxy
2011-08-22 · 超过31用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:32万
展开全部
swap函数就是将两个值交换的函数,
s2变成s1,s1,变成s2
所以会显示 123 abc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式