《C语言程序设计》习题集
for(j=1;j if(a[k][i]>a[j][i]) k=j; s+= ; } =s; } void main() { int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin( ); printf(\} 6、以下程序运行后的输出结果是 void main() { char s[ ]=“9876”,*p; for ( p=s ; p 。 7、若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。 p和s是基类型为int的指针变量。请对以下问题进行填空。 a[0] 22 a[1] a[2] a[3] 33 44 55 a[4] 66 (1)若p已指向存储单元a[1]。通过指针p,给s赋值,使s指向最后一个存储单元a[4]的 语句是 。 (2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是 。 三、编程题 1、利用指针编写求字符串长度的函数strlen()。 2、利用函数和指针编写一个程序,在main函数中输入一个字符串,在pcopy函数中将此字符串从第n个字符开始到第m个字符为止的所有字符全部显示出来。 3、利用函数和指针编写一个程序,从键盘输入三个字符串,并按由小到大的顺序显示出来。 - 40 - 《C语言程序设计》习题集 第十一章 结构体与共用体 一、选择题 1、有以下程序段 typedef struct NODE { int num; struct NODE *next; } OLD; 以下叙述中正确的是( )。 A)以上的说明形式非法 B)NODE是一个结构体类型 C)OLD是一个结构体类型 D)OLD是一个结构体变量 2、有以下程序 # include float TotalScore; }; void f(struct STU p) { struct STU s[2]={{20044,550},{20045,537}}; p.num = s[1].num; p.TotalScore = s[1].TotalScore; } void main() { struct STU s[2]={{20041,703},{20042,580}}; f(s[0]); printf(\ %3.0f\\n\ } 程序运行后的输出结果是( )。 A)20045 537 B)20044 550 C)20042 580 D)20041 703 3、有以下程序 # include int num; }; void f(char *name, int num) { struct STU s[2]={{\ num = s[0].num; strcpy(name, s[0].name); } void main() { struct STU s[2]={{\ p=&s[1]; f(p->name, p->num); printf(\ %d\\n\ } 程序运行后的输出结果是( )。 A)SunDan 20042 B)SunDan 20044 - 41 - 《C语言程序设计》习题集 C)LiSiGuo 20042 D)YangSan 20041 4、有以下程序 struct STU { char name[10]; int num; float TotalScore; }; void f(struct STU *p) { struct STU s[2]={{\ ++p ; ++q; *p=*q; } void main() { struct STU s[3]={{\ f(s); printf(\ %d %3.0f\\n\ } 程序运行后的输出结果是( )。 A)SunDan 20044 550 B)Penghua 20045 537 C)LiSiGuo 20042 580 D)SunDan 20041 703 5、设有如下说明 typedef struct ST { long a; int b; char c[2]; } NEW; 则下面叙述中正确的是( )。 A)以上的说明形式非法 C)NEW是一个结构体类型 B)ST是一个结构体类型 D)NEW是一个结构体变量 6、有以下结构体说明和变量定义,如图所示,指针pqr分别指向此链表中三个连续结点。 struct node { int data; struct node *next; } *p,*q,*r; 现要将q所指结点从链表中删除,同时保持链表的连续,以下不能完成指定操作的语句是( )。 A)p->next=q->next; B)p->next=p->next->next; C)p->next=r; D)p=q->next; 7、以下对结构体类型变量td的定义中,错误的是( )。 B)struct aa A)typedef struct aa { { int n; int n; float m; float m; } td; }AA; struct aa td; AA td; - 42 - 《C语言程序设计》习题集 C)struct { int n; float m; }aa; struct aa td; D)struct { int n; float m; }td; 8、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,\struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )。 A) (p++)->num B) p->num C) (*p).num D) stu[3].age 9、设有以下语句 typedef struct S { int g; char h;} T; 则下面叙述中正确的是( )。 A) 可用S定义结构体变量 C)S是struct类型的变量 B)可以用T定义结构体变量 D)T是struct S类型的变量 10、有以下程序 struct STU { char name[10]; int num; int Score; }; void main( ) { struct STU s[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580}, {“wangYin”,20043,680},{“SunDan”,20044,550}, {“Penghua”,20045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) { t=p[i];p[i]=p[j];p[j]=t;} printf(“5d %d\\n”,s[1].Score,p[1]->Score); } 执行后输出结果是( )。 A) 550 550 B) 680 680 C) 580 550 D) 580 680 11、有以下程序 #include - 43 -