国家开放大学C语言程序设计形考任务4

C语言程序设计形考任务4答案
一、选择题(共30分,每小题2分)  
题目1  
假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,
则不正确的语句为(    )。
选择一项:  
a. struct BOOK *x=malloc(book);   
b. struct BOOK x={“C++ Programming”,27.0};  
c. struct BOOK *x=malloc(sizeof(struct BOOK));  
d. struct BOOK *x=&book;   
正确答案是:struct BOOK *x=malloc(book);  
题目2  
假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语
句为(    )。
选择一项:  
a. struct BOOK x= &book;  
b. struct BOOK *x=&book;  
c. struct BOOK x=calloc(BOOK);  
d. struct BOOK *x=BOOK;  
正确答案是:struct BOOK *x=&book;  
题目3  
在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是(    )。
选择一项:  
a. 句点  
b. 冒号   

c. 分号  
d. 逗号  
正确答案是:分号  
题目4  
假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为(    )。
选择一项:  
a. 8  
b. 10  
c. 12  
d. 16  
正确答案是:16  
题目5  
假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长
度为(    )。
选择一项:  
a. 4  
b. 8  
c. 12  
d. 16  
正确答案是:8  
题目6  
假定要访问一个结构指针变量x中的数据成员a,则表示方法为(    )。  

选择一项:  
a. x.a  
b. x->a  
c. x(a)  
d. x{a}  
正确答案是:x->a  
题目7  
与结构成员访问表达式x.name等价的表达式为(    )。
选择一项:  
a. x->name  
b. &x->name  
c. (&x)->name  
d. (*x)->name  
正确答案是:(&x)->name  
题目8  
假定一个链表中结点的结构类型为“struct AA{int data, struct AA
*next;};”,则next数据成员的类型为(    )。
选择一项:  
a. struct AA  
b. struct AA*  
c. AA  
d. int   
正确答案是:struct AA*  

题目9  
假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表
头插入一个地址为p的结点时,应执行的操作为(    )。
选择一项:  
a. p->next=f  
b. p->next=f和f=p  
c. f=p->next  
d. f->next=p和f=p  
正确答案是:p->next=f和f=p  
题目10  
标准输入设备键盘的文件流标识符是(    )。
选择一项:  
a. stdin  
b. stdout  
c. stderr  
d. stdio  
正确答案是:stdin  
题目11  
表示文件结束符的符号常量为(    )。
选择一项:  
a. eof  
b. Eof  
c. EOF   

d. feof  
正确答案是:EOF  
题目12  
C语言中打开一个数据文件的系统函数为(    )。
选择一项:  
a. fgetc()  
b. fputc()  
c. fclose()  
d. fopen()  
正确答案是:fopen()  
题目13  
从一个数据文件中读入以换行符结束的一行字符串的系统函数为(    )。
选择一项:  
a. gets()  
b. fgets()  
c. getc()  
d. fgetc()  
正确答案是:fgets()  
题目14  
向一个二进制文件中写入信息的函数fwrite()带有的参数个数为(    )。
选择一项:  
a. 1  
b. 2   

c. 3  
d. 4  
正确答案是:4  
题目15  
在C语言中,为只写操作打开一个文本文件的方式为(    )。
选择一项:  
a. “a”  
b. “r+”  
c. “r”  
d. “w”  
正确答案是:”w”  
二、判断题(共40分,每小题2分。叙述正确则回答“是”,否则回答“否”)  
题目16  
在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。
选择一项:  
对  
错   
正确的答案是“错”。  
题目17  
在结构类型的定义中,允许出现结构类型不完整的超前定义。
选择一项:  
对  
错   

正确的答案是“对”。  
题目18  
定义结构类型的变量时,不能够同时进行初始化。
选择一项:  
对  
错   
正确的答案是“错”。  
题目19  
使用一个结构类型时,必须一起使用关键字struct和类型标识符。
选择一项:  
对  
错   
正确的答案是“对”。  
题目20  
假定一个结构类型的定义为 “struct A{int a,b; A* c;};”,则该类型的长度为12。
选择一项:  
对  
错   
正确的答案是“对”。  
题目21  
假定一个结构类型的定义为 “struct B{int a[5]; char* b;};”,则该类型的长度为20。  

选择一项:  
对  
错   
正确的答案是“错”。  
题目22  
执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。
选择一项:  
对  
错   
正确的答案是“对”。  
题目23  
执行malloc(sizeof(struct BB))函数调用时,得到的动态存储空间能够保存具有struct BB结构类型的一个对象。
选择一项:  
对  
错   
正确的答案是“对”。  
题目24  
假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。
选择一项:  
对  
错   
正确的答案是“错”。  
题目25  

假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。
选择一项:  
对  
错   
正确的答案是“错”。  
题目26  
与结构成员访问表达式(*fp).score等价的表达式是fp->score。
选择一项:  
对  
错   
正确的答案是“对”。  
题目27  
在C语言中,对二进制文件的所有不同打开方式共有6种。
选择一项:  
对  
错   
正确的答案是“对”。  
题目28  
C语言中的标准输入和输出设备文件都属于字符文件。
选择一项:  
对  
错   
正确的答案是“对”。  

题目29  
在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。
选择一项:  
对  
错   
正确的答案是“错”。  
题目30  
在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、
写和追加方式。
选择一项:  
对  
错   
正确的答案是“对”。  
题目31  
一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。
选择一项:  
对  
错   
正确的答案是“对”。  
题目32  
C语言系统中提供一个用来描述文件属性的类型标识符为FILE。
选择一项:  
对   

错   
正确的答案是“对”。  
题目33  
每次只能向文本文件中写入一个字符,不能一次写入一个字符串。
选择一项:  
对  
错   
正确的答案是“错”。  
题目34  
对二进制文件进行读和写操作将使用相同的系统函数。
选择一项:  
对  
错   
正确的答案是“错”。  
题目35  
在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。
选择一项:  
对  
错   
正确的答案是“对”。  
三、写出下列每个程序运行后的输出结果(共15分,每小题5分)  
题目36  

#include<stdio.h>  
       struct Worker {  
           char name[15];  //姓名
           int age;        //年龄
           float pay;      //工资
       };  
       void main() {  
           struct Worker x={“wanghua”,52,4300};
           struct Worker y, *p;
           y=x; p=&x;  
           printf(“%s  %d  %6.2f\n”,x.name,y.age,p->pay);
       }  
wanghua   52   4300  
题目37  
#include<stdio.h>  
       #include<string.h>
       struct Worker {  
           char name[15];  //姓名
           int age;        //年龄
           float pay;      //工资
       };  
       void main() {  
           struct Worker x;  

           char *t=”liouting”;
           int d=38; float f=3493;
           strcpy(x.name,t);
           x.age=d; x.pay=f;  
           printf(“%s  %d  %6.0f\n”,x.name,x.age,x.pay);
       }  
liouting   39   2493  
题目38  
#include<stdio.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,2420},{“def”,58,4638},  
                        {“ghi”,49,4260},{“jkl”
,36,3750}};  
           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.0f\n”,x.name,x.age,x.pay);
       }  

def   58   4638  
四、写出下列每个函数的功能(共15分,每小题5分)  
题目39  
void QA(struct Worker a[], int n) {
           int i;  
           for(i=1; i<n; i++)  
               scanf(“%s %d %f”,&a[i].name,&a[i].age,&a
[i].pay);
       }  
    假定结构类型struct Worker 的定义如下:  
       struct Worker { char name[15]; int age; float pay;};
从键盘输入n个Worker类型的记录到一维数组a中。  
题目40  
int Count(struct IntNode *f)  
        {      //f为指向一个单链表的表头指针
            int c=0;
            while(f) {
                c++;
                f=f->next;
            }
            return c;
        }  
    假定struct IntNode的类型定义为:  

        struct IntNode {int data; IntNode* next;};
统计出以表头指针为f的链表中结点的个数。  
题目41  
void xw1(char* fname) {  
           FILE* fout=fopen(fname,”w”);
           char a[20];  
           printf(“每个字符串长度小于20,字符串end作为结束
标志\n”);  
           while(1) {  
               scanf(“%s”,a);  
               if(strcmp(a,”end”)==0) break;
               fputs(a,fout);
               fputc(‘\n’,fout);
           }  
           fclose(fout);
       }  
把从键盘上输入的若干个字符串保存到由fname参数所指定的文本文件中。  

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享