中央电大《C语言程序设计》形考册(4)

时间:2024-04-30 09:33:40 5A范文网 浏览: 平时作业 我要投稿

一、选择题

1.       假定有“struct BOOK{char title[40];float price;};struct BOOK *book;”,则不正确的语句为( A )。

A.struct BOOK *x=malloc(book);     B.struct BOOK x={“C++ Programming”,27.0};     C.struct BOOK *x=malloc(sizeof(BOOK));       D.struct BOOK **x=&book;

2.       假定有“struct BOOK{char title[40];float price;} book;”,则正确的语句为( B )。

A.struct BOOK x=&book;            B.struct BOOK *x=&book;

C.struct BOOK x=calloc(BOOK);      D.struct BOOK *x=BOOK;

3.表示文件结束的符号常量为( C )。

A.eof      B.Eof        C.EOF       D.feof

4.C语言中系统函数fopen()是( D )一个数据文件的函数。

A.读取     B.写入       C.关闭       D.打开

5.从一个数据文件中读入以换行符结束的一行字符串的函数为( B )。

A.gets()     B.fgets()     C.getc()       D.fgetc()

6.向一个二进制文件写入信息的函数fwrite()带有( D )参数。

A.1         B.2         C.3           D.4

 

二、填空题

1.假定一个结构类型的定义为“struct A{int a,b;A*c;};”,则该类型的大小为___12___字节。  

2.假定一个结构类型的定义为“struct B{int a[5],char *b;};”,则该类型的大小为__24__字节。  

3.假定一个结构类型的定义为“struct D{int a;union{int b;double c;};struct D* d[2];};”,则该类型的大小为___20_____字节。

4.假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用语句的表达式为struct Worker* r=__(Worker*)malloc(n*sizeof(Worker));_____。

5.假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为__x.(*a)___。

6.假定要访问一个结构指针p所指向对象中的b指针成员所指的对象,则表示方法为_____ *(p->b)___

7.与结构成员访问表达式(*fp).score等价的表达式是__fp->score______。

 

三、写出下列每个程序运行后的输出结果

1. #include<stdio.h>

struct Worker{

char name[15]; //姓名

int age;  //年龄

float pay; //工资

};

void main(){

struct Worker x={"wanghua",52,23.50};

struct Worker y,*p;

y=x;p=&x;

printf("%s %d %6.2f/n",y.name,y.age,y.pay);

printf("%s %d %6.2f/n",p->name,p->age,p->pay);

}

输出结果为:

wanghua 52  23.50

wanghua 52  23.50

Press any key to continue

 

2. #include<stdio.h>

#include<string.h>

struct Worker{

char name[15]; //姓名

int age;  //年龄

float pay; //工资

};

void main(){

struct Worker x;

char *t="louting";

int d=38;float f=493;

strcpy(x.name,t);

x.age=d;x.pay=f;

x.age++;x.pay*=2;

printf("%s %d %6.2f/n",x.name,x.age,x.pay);

}

输出结果为:

louting 39 986.00

Press any key to continue

 

3. #include<stdio.h>

#include<string.h>

struct Worker{

char name[15]; //姓名

int age;  //年龄

float pay; //工资

};

int Less(struct Worker r1,struct Worker r2){

if(r1.age<r2.age)return 1;

else return 0;

}

 

void main(){

struct Worker a[4]={{"abc",25,420},{"def",58,638},{"ghi",49,560},{"jkl",36,375}};

struct Worker x=a[0];

int i;

for(i=1;i<4;i++)

if(Less(x,a[i]))x=a[i];

printf("%s %d %6.2f/n",x.name,x.age,x.pay);

}

输出结果为:

def 58 638.00

Press any key to continue

 

四、写出下列每个函数的功能

1. void QA(struct Worker a[],int n){

int i;

for(i=0;i<n;i++)

scanf("%s %d %f",&a[i].name,a[i].age,a[i].pay);

}

假定结构struct Worker的定义如下:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct Worker{

char name[15]; //姓名

int age;  //年龄

float pay; //工资

};

函数功能为:

输入struct Worker 类型的对象a[n]的各个元素的值

 

2. struct StrNode *QB(int n){

StrNode * f,*p;

if(n==0)return NULL;

f=(StrNode*)malloc(sizeof(struct StrNode));

scanf("%s",f->name);

p=f;

while(--n){

p=p->next=(StrNode*)malloc(sizeof(struct StrNode));

scanf("%s",p->name);

}

p->next=NULL;

return f;

}

假定结构struct StrNode的定义如下:

struct StrNode{

char name[5];

struct StrNode *next;

};

 

函数功能为:

建立一个具有n个结点,每个结点的类型是StrNode的链表

 

3. struct IntNode* FindMax(struct IntNode *f)

{

struct IntNode *p=f;

if(!f)return NULL;

f=f->next;

while(f){

if(f->data < p->data)p=f;

f=f->next;

}

return p;

}

假定结构struct StrNode的定义如下:

struct IntNode{

int data;

struct IntNode * next;

};

函数功能为:

在一个具有n个结点,每个结点的类型是IntNode的链表中寻找data值最大的结点

 

4. int Count(struct IntNode *f)

{

int c=0;while(f){

c++;

f=f->next;

}

return c;

}

假定结构struct StrNode的定义如下:

struct IntNode{

int data;

struct IntNode * next;

};

函数功能为:

计算一个结点的类型是IntNode的链表的结点数

 

5. struct IntNode* Input(int n)

{

struct IntNode *f,*p;

f=(IntNode*)malloc(sizeof(struct IntNode));

if(n==0)return NULL;

f->next=NULL;

printf("从键盘输入 %d 个整数:",n);

while(n--){

scanf("%d",&(f->data));

p=f;

f=(IntNode*)malloc(sizeof(struct IntNode));

f->next=p;

}

return f->next;

}

假定结构struct StrNode的定义如下:

struct IntNode{

int data;

struct IntNode * next;

};

函数功能为:

在类型为IntNode的链表后输入n个结点的数据

 

6. #include<stdio.h>

#include<stdlib.h>

#include<string.h>

void JA(char* fname)

{

FILE* fout=fopen(fname,"w");

char a[20];

printf("");

while(1){

scanf("%s",a);

if(strcmp(a,"end")==0)break;

fputs(a,fout);

fputc('/n',fout);

}

fclose(fout);

}

void main()

{

char *p="d://xxk//xuxk1.txt";

JA(p);

}

函数功能为:

在已经存在的d:/xxk文件夹下(如不存在此文件夹程序运行会出错)打开xuxk1.txt文件,并向其中输入一系列长度小于20的字符串,直到输入字符串end结束。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

荆棘是什么意思解释04-30

入门是什么意思04-30

罗密欧与朱丽叶作者04-30

甲乙两队进行拨河比赛甲胜,问甲拉乙的力与乙拉甲的力04-30

风雨是什么意思04-30

突然想起一个物理的问题两个人前高后矮抬一个东西,支04-30

手机A的号码为1234567002,手机B的号码是1234567008,手机04-30

艳丽无双什么意思04-30

出自速度和速率择优选取答案小王看到闪电12.3s后听到04-30

花之歌的作者04-30

热搜文章
最新文章