C语言 指针与数组 求程序输出结果

1.#include<stdio.h> void main(void) { char str[]="xyz",*ps=str; while(*ps ) ps++; for(ps--; ps-str>=0; ps--) putchar(*ps); } 2. #include<stdio.h> void f(int *a, int b) { (*a)++; b++; } void main(void ) { int a=3, b=5; f (&a, b); printf("a=%d,b=%d\n", a, b ); } 3. #include<stdio.h> void main(void) { int x[7]={2,3,4,5,6,7,8}; int i=0,a=0; while(i<7) { if(i%2==1) a+=x[i]; i++; } printf("a=%d\n", a); } 4. #include<stdio.h> void main(void) { char a[ ]="12345", *p; int i=0; p=a; while(*p!='\0') { if(i%2==0) *p='*'; p++; i++; } puts(a); } 5. #include<stdio.h> #define N 4 void fun(int x[ ],int n) { int i; for(i=0;i<n;i++) x[n]+=x[i]; } void main(void ) { int a[N+1]={2,5,8,10,0},i; fun(a,N); for(i=0;i<=N;i++) printf("%5d",a[i]); printf("\n"); }

第1个回答  2020-05-19
第一题你好象写错了;
#include
<iostream>
using
namespace
std;
int
main()
{
char
str[]="xyz",*ps;
ps=str;
while(*ps)
ps++;
for(ps--;ps-str>=0;ps--)
putchar(*ps);
return
0;
}
ps=str是正确的,因为你的ps在上边定义的是一个指针。那么下边的赋值运算中就应该是地址之间的传递,str作为数组名,它本身就是一个地址。同时ps也是一个指针。结果就是
xyz
第二题的答案是:
4
5
因为作为形式参数的b在传递到你的调用函数f之后虽然做了++操作但是这个b却只是一个副本,不是真正的b,等这个f函数执行完毕之后就会把这个副本释放掉,对主函数的b并不产生影响。要想修改主函数中的数值,在传递参数的时候只有传递指针,就像你的a那样,给函数传递一个指针就可以。
第三题答案是17
这个题就是把这个数组中的所有奇数项想加
第四题
答案是*2*4*
就是把所有偶数的元素都设置成*
第五题就是
2
5
8
10
0
整个题目就是把a[4]=a[0]+a[1]+a[2]+a[3]+a[4]