一、選擇題(共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
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.2fn”,x.name,y.age,p->pay);
}
wanghua
4300
題目37
#include
#include
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.0fn”,x.name,x.age,x.pay);
}
liouting
2493
題目38
#include
struct
Worker
{char
name[15];
int
age;
float
pay;};
int
Less(struct
Worker
r1,struct
Worker
r2)
{
if(r1.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.0fn”,x.name,x.age,x.pay); } def 4638 四、寫出下列每個函數的功能(共15分,每小題5分) 題目39 void QA(struct Worker a[],int n) { int i; for(i=1; i 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參數所指定的文本文件中。