for(i=0;i<6;i++)
printf(“%d,”,a[i]);
printf(“\\n”); }
void invert(int *s,int i,int j) { int t; if(i { invert( s, i+1, j-1); t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; } } 3.下面程序的运行结果是____Coble dBase C language Pascal_____。 #include char *a[]={\ char **p; int j; p=a+3; for(j=3;j>=0;j--)printf(\ } 4. void main() { int a[2][3]={1,2,3,4,5,6}; int m,*ptr; ptr=&a[0][0]; m=(*ptr)*(*(ptr+2))*(*(ptr+4)); printf(\ } 15 六、结构体 1、下面程序的输出结果为() #include char name[10]; int age; }; 16 void display(struct student *p) { printf(\\\n\, (*p).name); } int main() { struct student students[3] = {{9801, \, 20}, {9802, \, 21}, {9803, \, 19}}; display(students + 1); return 0; } 2. 以下程序的输出结果为(7120) #include struct sp { int a; int *b; } *p; int d[3] = {10, 20, 30}; struct sp t[3] = {70, &d[0], 80, &d[1], 90, &d[2]}; int main() { p = t; printf(\%d%d\\n\, ++(p->a), *++p->b); return 0; } 3. 如果有如下定义: struct student { int num; float score; struct student *next; }; 并且在主函数中已经建立了如下图所示的链表,并由head指针指向表头结点: 105 107 101 103 head 78.5 85 89.5 90 Null 如果主函数中的调用语句为:ff(head,105);请写出执行下列函数后的输出结果。 void ff(struct student *head,int sn) { struct student *p1,*p2,*p; p1=head; while(p1->num!=sn && p1!=Null) { p2=p1;p1=p1->next; 17 } if (p1->num==sn) p2->next=p1->next; else printf (“%ld is not found.\\n”, sn); p=head; while ( p!=Null ) { printf(“%ld:%5.1f\\n”,p->num, p->score); p=p->next ; } } 运行结果:101: 89.5 103: 90.0 107: 85.0 ********************************************************* 4、若有定义: struct num {int a; int b; float f; }n={1,3,5.0}; struct num *pn=&n; 则表达式pn->b/n.a*++pn->b的值是___12_____,表达式(*pn).a+pn->f的值是____6.0____。 Ⅳ 程序填空题 1.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名 和年龄。请在_______内填入正确内容。 #include char name[20]; int age; }person[]={\ \ \ }; void main() { struct man *p,*q; int old=0 p=person; for( ;p_< person + 3____;p++) if(old {q=p;__old = p->age____;} printf(\ q->age____); } 18 2、以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表不带头结点)。请在______内填入正确内容。 struct link {char data ; struct link *next; }; .... struct link *p,*first; int c=0; p=first; while(__p!=NULL___) {_c++______; p=__p->next_____; } 3、有四名学生,每个学生包括学号、姓名、成绩, 要求找出成绩最高者的学号、姓名和成绩(用指针方法)。 main() { struct student { int num; char name[20]; float score; }; struct student stu[4]; struct student *p; int i,temp=0; float max; for( p=stu;p scanf(\ p->name ,& p->score); } for(max=stu[0]. score,i=1; i<4;i++) 19 { if(stu[i].score>max) { max=stu[i].score; temp=i; } } p=stu+temp ; printf(\ } Ⅴ 编程题: 1、输入一行字符,统计并输出其中单词的个数。 2、写一函数,判断一字符串是否回文(回文是指正反序相同,如LeveL),在主函数中输入字符串,并输出是否回文的信息,若是,输出“Yes”,否则,输出“No”。 3、编写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。 4、定义一结构体数组表示分数(比如1/3),并求两个分数相加之和(以最简分数形式表示)。 5、设某大学有下列登记表,采用最佳方式对它进行类型定义,并用该类型保存一个班30个学生的成绩,然后统计计算每个学生的平均分。 出生日期 年 月 日 姓名 struct date { int year; int month; int day; }; struct person { char name[20]; char sex; struct date birthday; float score[4]; }; 性别 20