几道C语言考研真题,谁帮我看一下?

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:19:37
我使用TC++调试,请帮我看一下这几道题目。麻烦大家了
1这个程序:
#include<stdio.h>
struct s1{char *s;
struct s1 *ptr;};
struct s1 a[]={
{"efgh",a+1},{"ijkl",a+2},{"mnop",a}};
struct s1 *p=a;
void main()
{int i;
for(i=0;i<3;i++)
printf("%s %s %c %s\n",a[i].s,a[i].ptr->s,a[i].s[i]++,++p++->ptr->s+1);}
我明白TC++的printf()里面是从右到左的,但我不明白]++p++->ptr->s+1到底怎么运行的?我加的括号是:(++(((p++)->ptr)->s))+1是这样的么?能不能给我解释一下这里这四个式子的具体运行?

2运动会连续开了n天,一共发了m枚奖章,第一天发1枚并留下(m-1)枚的1/7,其余用于第二天,第二天发2枚,其余用于第三天,以后照此办理,最后一天发完,求解开的天数合共发的奖章数。
#include<stdio.h>
void main()
{char m,n,x,b;
x=0;
do{x++;【1】}
n=1;b=0xff;
while((m>n)&&b){
【2】
if(!(m%7))m=(int)(m/7)*6;
else b=0;
n++;}}while【3】;
printf("n=%6d m=%8d",n,7*x+1);}
其中【1】、【2】、【3】是填空,请帮我看一下。

3下列函数调用语句中含有()个实参?
sub(f1,(f2,f3),f4,(f5,f6,f7))
【A】6【B】4【C】3【D】以上都不对<

1,p是*a = a[0],++p++就是a+1,一个先加,一个先算.a[a+1]->ptr = a[1] ->ptr = a[1+1]=a[2]; a[2]->s = ("mnop")的第0项 s+1 即第2项,'n'
a[i].s 即几个字符串.
a[i].ptr->s ptr指向的字符串.
a[i].s[i]++ 当前a[i]的s的第i 个字符自增,不过先用再算,输出不变.(++没用)

2

1.++p++->ptr->s+1
应该是
++p;
p->ptr->s+1;
p++;

3.4个