关于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);
} 展开
{
char t;
t=*x;*x=*y;*y=t;
}
main()
{
char *s1="abc",*s2="123";
swap(s1,s2);
printf("%s%s\n",s1,s2);
} 展开
7个回答
展开全部
输出?它能输出?不会报错?我看着怎么感觉就像要报错呢,输出之前就报错了。
*s1="abc",*s2="123";
这么定义的话 s1 和 s2 是两个指针,分别指向两个常量字符串
即便你扔进函数里面交换,它应该会给你报错成内存不可写。
"abc" 和 "123" 都应该在常量区。。。。
不过你的意思我大概懂了
按照你的意思,结果看着像 1bc 和 a23
因为函数里面只交换了字符串的第一个元素。
*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个了。
你那种理解方法就不正确,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是1bc,a23;你可以试试单独输入printf("%c",s1); 输出的是a,对吗?也就是说如果只接收一个字符的话,他是第一个字符,在swap中,t为char型的,只接受一个,故只交换第一个。也就是1和a交换。懂点了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二层循环,只要有数不能被整除,就输出。
经过优化,目前效率个人认为最好的,如有更好方法,望指教。
大一的孩,鼓励下。
#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);
}
经过优化,目前效率个人认为最好的,如有更好方法,望指教。
大一的孩,鼓励下。
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
swap函数就是将两个值交换的函数,
s2变成s1,s1,变成s2
所以会显示 123 abc
s2变成s1,s1,变成s2
所以会显示 123 abc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询