《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 -