1)#include
char *ss(char *s)
{
char *p,t;
p=s+1;t=*s; //p的地址初始化,指向s首地址的下一位,t暂存*s里的第一个值
while(*p) //当p地址的值不为空时,执行循环
{*(p-1)=*p;p++;}//p地址里的每个值向前移动一个地址存储
*(p-1)=t; //将t赋值给p存储空间的最后一个地址上,即把*s的第一个值放到*p的最后一位
return s;}
main()
{
char *p,str="abcdefgh";
p=ss(str); //传入 str首地址到ss函数,执行ss函数后,str="bcdefgha";
printf("%s\n",p); //所有输出:bcdefgha
}
2)#include
void fun(char *s,int p,int k)
{
int i;
for(i=p;i
}
main()
{
char s[]="abcdefg";
fun(s,3,strlen(s)); //传入字串s首地址,给指针*s,参数3给p
//strlen(s)计算字串长度得7,给k
// 执行函数,结果d和e分别被f和g替换
puts(s); //输出为abcfg
}
3)题目不完整
4)#define SA(i) i*i
#define SB(j) (j)*(j)
main()
{
int a,b,x,y;
a=3; b=7;
x=SA(a+b)/SA(a+b); // x=a+b*a+b/a+b*a+b
y=SB(a+5)/SB(b+2); // y=(a+5)*(a+5)/(b+2)*(b+2)
printf("x=%d,y=%d\n",x,y); //x=54,y=63
}
5)#define f(x) (x*x)
main()
{ int i1,i2;
i1=f(8)/f(4); //带进去(8*8)/(4*4)=4
i2=f(4+4)/f(2+2); //带进去(4+4*4+4)/(2+2*2+2)=4
printf('%d,%d\n",i1,i2);
}
4,3是对的
6)#define f(x) x*x
main()
{
int i;
i=f(4+4)/f(2+2); //带进去4+4*4+4/2+2*2+2=28
printf(“%d\n",i);
}
结果为:28
7)#define s(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",s(i+j));//s(6+8)=4*6+8*6+8+1=81
}
希望能帮助到你