c语言1道小问题

14.34

以下程序中的函数reverse的功能是将a所指数组重的内容进行逆置
void reverse(int a[], int n) {int i,t; for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} }
main() {int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}
程序运行后结果是:22
void reverse(int a[], int n)是什么意思
{int b[10]={1,2,3,4,5,6,7,8,9,10是什么意思
s+=b[i];是什么意思
reverse(b,8);是什么意思

void reverse(inta[] int n)定义一个函数reverse(\"重置\"的意思),它有两个参数 一个参数是一个整数数组,另一个参数是另一个整数.其实它与其它函数是一样的,例如sqrt()它就包含一个参数,这个函数的作用就是求那个参数的平方根.
int b[10]....那句是对b[]进行初始化,即,b[0]=1,b[1]=2,b[2]=3......b[9]=10.
s+=b[i]即s=s+b[i],S实现对b[i]的累加,在求1+2+3+4...+100时也用到了这样一个累加器.
以下是运行reverse(b,8)过程.
t=a[0]=1 a[0]=a[8-1-0]=b[7]=8 a[7]=t=1
t=a[1]=2 a[1]=a[8-1-1]=b[6]=7 a[6]=t=2
t=a[2]=3 a[2]=a[8-1-2]=b[5]=6 a[5]=t=3
t=a[3]=4 a[3]=a[8-1-3]=a[4]=5 a[4]=t=4
在上面,a[]即b[];
此时,a[0]=8 a[1]=7 a[2]=6 a[3]=5 a[4]=4 a[5]=3 a[6]=2 a[7]=1;
进入for 循环:
s=b[6]=2 s=b[6]+b[7]=3 s=b[6]+b[7]+b[8]=12
s=b[6]+b[7]+b[8]+b[9]=22
输出:
22
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-04-14
你写的代码太恶心了
要一条语句一行才好
void reverse(int a[], int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main() {
int b[10]={1,2,3,4,5,6,7,8,9,10};
int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf("%d\n",s);
}
第2个回答  2006-04-14
我看你是压根没有看C语言书的原因,自己还是老老实拭的看看书把!
第3个回答  2006-04-14
这种问题也要问???回去看看书再来吧

C语言 结构体的1道小题
m,n是struct aa的成员。文中定义了一个结构体数组s[2],定义了一个结构体指针指向s ++p->m 是指 p指向的结构中成员m自加后的值 ,此时p指向结构{1,2}因为 p->m = 1,所以该结果为2 (++p)->n 是指p指向的下一个结构中成员n的值,此时p指向结构{3,4}因为 p->n = 4,所以该...

一道C语言问题 麻烦帮我解释一下!
输出是321 这里主要涉及到ASC码表对应以及char和int类型隐式转换的问题,需要记住的是:一个字符类型的数据,在进行+、-、*、\\等运算时,编译器会隐式类型转换为该字符对应的ASC码值来计算。char x=123; 该句将x初始化为ASC码值为123的字符。开始循环时,x存放字符的ASC码值为123,因此x%10=3...

一个C语言问题
x=y==z,你应该知道后面的那个==号预算符高于赋值预算符,所以执行y==z,这里你就不能把看作简单的等号运算,应该看作一个判断,如果y和z的值相等,y==z它的值就是1,如果y和z的值不同,那么它的值就是0 ,你的题目里y和z都为5,所以y==z的值为1,再赋值给x,所以x=1.输出为1!这...

C语言的一道题。 这道题怎么算啊? x*=x+1怎么个运算过程。 还有for语句...
首先从main函数开始执行for循环,开始i=1,i小于x,即3,所以执行incre函数,在incre函数中,x2*=x2+1,展开就是 x2=x2*(x2+1),所以x2=1*(1+1)=2,下一行打印出x2的值2.然后执行i++,继续循环,i=2,仍然小于x,即3,所以继续执行incre函数,执行时因为x2是static变量,仍然保持...

C语言的一道题:下面程序段的运行结果是:__ for (a=1,i=-1;-1<=i<1...
i初值为-1,-1<=i成立,为1;1<1不成立,因而循环条件不满足,循环不会进行。执行printf("%2d", i),输出-1。

C语言的一道题~求解~最好有原因***
正确答案是B。A和D都很明显,c 不在赋值符号最左边,所以不可能正确把值赋给a,b。对于c,是一个逻辑与表达式,一旦运算符&&前面值为假(值为0)则不会继续运算后面部分,这里c为0 ,所以后面 b = c不会执行。综上,答案为B。

C语言的一道题,这答案是1还是0 最后要不要加1
答案是3,即原问题相当于:i=7;i%4;i++;是取余数运算。i++是先使用后加1

C语言的一道题,看了3个钟我都不知道错在哪~急死了,哥们帮帮忙~感激...
1. C 在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[...

关于C语言的一道题
当i=1,由于 case 1:case 2:a+=3;之后没break,所以a=0+3+5=8;当i=2,同理a算得16 当i=3,由于case 3:a+=2;之后没break,所以算完a+=2后还要算a+=3,a+=5所以a=26 当i=4,只算a+=5,所以a=26+5=31

c语言小问题,如图,这样难道不是a[i]=a[i+1]=t?这样有什么意义?
不一样,这个是实现排序,当a[i]大于它的相邻元素a[i+1]时,交换位置,变量t相当于临时空间,t=a[i]是将a[i]的值暂时放到t,a[i]=a[i+1]将a[i+1]的值放到a[i]的位置,a[i+1]=t是将原a[i]的值即t放到a[i+1]位置.实现了交换 ...

相似回答
大家正在搜