阅读以下程序,输出结果为_________
#include<stdio.h>
#include <string.h>
void fun( char s[]);
int main()
{
char a[]="abcde";
int k;
fun(a);
puts(a);
return 0;
}
void fun( char s[])
{
int x,y;
char c;
x=0;
y=(strlen(s)-1)/2;
for( ; x<y; x++,y--)
{
c=s[y];
s[y]=s[x];
s[x]=c;
}
}
结果是cbade
原因如下:
首先,主函数只进行了一个fun操作,其他的就是定义和输出,所以字符串(或者说字符数组)的调整完全由fun决定
fun中首先定义了x和y,因为s的长度是5,所以y = (strlen(s) - 1) / 2=(5-1)/2=2
因此:
循环开始时,初始值是x=0,y=2,s="abcde",进入循环
第一次:0<2成立,可以进行,操作时交换了s[0]和s[2]的值,字符串变成了"cbade",结束时执行x++和y--,执行后x=1,y=1
第二次:1<1不成立,循环直接结束
所以函数返回的字符串为cbade
字符数组传递的就是地址,所以不管变量的名字如何,操作的都是那一串
求教C语言大神!!!最好讲一下理由,万分感谢
首先,主函数只进行了一个fun操作,其他的就是定义和输出,所以字符串(或者说字符数组)的调整完全由fun决定 fun中首先定义了x和y,因为s的长度是5,所以y = (strlen(s) - 1) \/ 2=(5-1)\/2=2 因此:循环开始时,初始值是x=0,y=2,s="abcde",进入循环 第一次:0<2成立,可以进行,...
...理解这个代码,求大神指教,最好能详细一点。万分感谢!!!
j <= sqrt(i); ++j) { \/\/从2~根号i检查就够了,因为因子必定是成对出现的if(i % j == 0) { \/\/如果j是i的较小的一个因子sum += j; \/\/累加jtemp = i \/ j; \/\/找出i的另一个因子 if(temp > j && temp < i) \/\/如果j与temp不相重sum += temp; \/\/就加入另...
C语言选择哈,并解释下,万分感谢。
if(item>=6)break;item不是已经是6了么,应该已经跳出循环体了啊,为什么还会输出15!!它输出15的时候,是item=4的时候进入的循环,然后++,item=5;因为item=4的时候进入循环。item++;item=5了。所以sum+=5;前面已经有1,2,3,4,加到sum了,所以 sum+=5;sum=15了,item=5进入循环,不会输...
C语言程序设计,求答案。万分感谢!
第一题的:include<stdio.h> int main(){ char c;scanf("%c",&c);if('a'<=c&&c<='z')printf("%c\\n",char(c-32));else if('A'<=c&&c<='Z')printf("%c\\n",char(c+32));else printf("what you input is not a letter! ");return 0;} 第二题的:include<stdio.h> ...
C语言。求大神解释一下x=fun(&a[1],n-1)这条,万分感谢!!
if(n==1) return a[0];else x=fun(&a[1],n-1);return x
关于c语言程序设计的问题求大神帮忙!万分感谢!
答:编制并运行程序的“四步曲”让我们用VC6先来编制一个最简单的程序,其功能是向屏幕上输出一个字符串“Hello World”。程序虽小,但与编制运行大程序的整个过程是相同的,都包含如下所谓的“四步曲”:(1)编辑(把程序代码输入,交给计算机)(2)编译(成目标程序文件.obj)编译是把高级语言变成计算机...
C语言程序中fun函数求解读,求大神附图讲解。万分感谢
\/\/函数用来反转链表 NODEfun(NODEh)NODEp,*q,*r;p=;\/指向链表的第一个结点 if(p=ULL)eturnULL;q-next;\/指向p的下一个结点 p-nextULL;\/第一个结点(反转后的最后结点)指向NULL while(q)r-next;\/时指针用来记录待要反转的结点 q-next;\/转q结点 p;\/指向刚反转的结点 q;\/指向待要反转的...
请求C语言的老师支高招啊。高分奖励!帮帮小弟呀!万分感谢
下面就是我给出的程序,任给一个3×3的矩阵都可以算出其对角线元素之和:include "stdio.h"include "conio.h"main(){ int i,j,b,aa[3][3],count=0,s=0;for(i=0;i<=2;i++)for(j=0;j<=2;j++){ scanf("%d",&b);aa[i][j]=b;} \/*输入3×3的矩阵*\/ for(i=0;i...
...求解方程组的,急啊,哪位高手帮下咯,万分感谢
;exit(1);} nu++;} while(fabs(dx)>1e-6);return x;} void main(){ int i;float *x;float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};float *GauseSeidel(float *,int);x=GauseSeidel(c,3);for(i=0;i<=2;i++)printf("x[%d]=%f\\n",i,x[i]);getch();} ...
一个c语言问题,万分感谢
您好,很高兴能为您解决问题。这儿得跟您说一声了。宏有个特性:他在用的时候C语言会直接把宏的名称替换成宏对应的值。外面不会加括号。所以v = LENGTH * 20是这样的:v = WIDTH + 40 * 20,进一步替换就是这样的:v = 80 + 40 * 20,那么直接算出80+40*20的值即可:= 80 + 800 = ...