形考任務(wù)4
試卷總分:100 得分:100
一、選擇題(共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;
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;
3.在結(jié)構(gòu)類型的定義中,不同數(shù)據(jù)成員的定義項之間采用的分隔符是( )。
A.句點
B.冒號
C.分號
D.逗號
4.假定一個結(jié)構(gòu)類型的定義為 “struct A{int a,b; double c;};”,則該類型的長度為( )。
A.8
B.10
C.12
D.16
5.假定一個結(jié)構(gòu)類型的定義為 “struct D{int a; D* next;};”,則該類型的長度為( )。
A.4
B.8
C.12
D.16
6.假定要訪問一個結(jié)構(gòu)指針變量x中的數(shù)據(jù)成員a,則表示方法為( )。
A.a
B.x->a
C.x(a)
D.x{a}
7.與結(jié)構(gòu)成員訪問表達(dá)式x.name等價的表達(dá)式為( )。
A.x->name
B.&x->name
C.(&x)->name
D.(*x)->name
8.假定一個鏈表中結(jié)點的結(jié)構(gòu)類型為“struct AA{int data, struct AA *next;};”,則next數(shù)據(jù)成員的類型為( )。
A.struct AA
B.struct AA*
C.AA
D.int
9.假定一個鏈表的表頭指針為f,結(jié)點中包含有data和next域,則向該鏈表的表頭插入一個地址為p的結(jié)點時,應(yīng)執(zhí)行的操作為( )。
A.p->next=f
B.p->next=f和f=p
C.f=p->next
D.f->next=p和f=p
10.標(biāo)準(zhǔn)輸入設(shè)備鍵盤的文件流標(biāo)識符是( )。
A.stdin
B.stdout
C.stderr
D.stdio
11.表示文件結(jié)束符的符號常量為( )。
A.eof
B.Eof
C.EOF
D.feof
12.C語言中打開一個數(shù)據(jù)文件的系統(tǒng)函數(shù)為( )。
A.fgetc()
B.fputc()
C.fclose()
D.fopen()
13.從一個數(shù)據(jù)文件中讀入以換行符結(jié)束的一行字符串的系統(tǒng)函數(shù)為( )。
A.gets()
B.fgets()
C.getc()
D.fgetc()
14.向一個二進(jìn)制文件中寫入信息的函數(shù)fwrite()帶有的參數(shù)個數(shù)為( )。
A.1
B.2
C.3
D.4
15.在C語言中,為只寫操作打開一個文本文件的方式為( )。
A.”a”
B.”r+”
C.”r”
D.”w”
二、判斷題(共40分,每小題2分。敘述正確則回答“是”,否則回答“否”)
16.在結(jié)構(gòu)類型的定義中,其中的數(shù)據(jù)成員可以是本身類型的直接對象。
17.在結(jié)構(gòu)類型的定義中,允許出現(xiàn)結(jié)構(gòu)類型不完整的超前定義。
18.定義結(jié)構(gòu)類型的變量時,不能夠同時進(jìn)行初始化。
19.使用一個結(jié)構(gòu)類型時,必須一起使用關(guān)鍵字struct和類型標(biāo)識符。
20.假定一個結(jié)構(gòu)類型的定義為 “struct A{int a,b; A* c;};”,則該類型的長度為12。
21.假定一個結(jié)構(gòu)類型的定義為 “struct B{int a[5]; char* b;};”,則該類型的長度為20。
22.執(zhí)行calloc(n,8)函數(shù)調(diào)用時,將動態(tài)分配得到8*n個字節(jié)的存儲空間。
23.執(zhí)行malloc(sizeof(struct BB))函數(shù)調(diào)用時,得到的動態(tài)存儲空間能夠保存具有struct BB結(jié)構(gòu)類型的一個對象。
24.假定要訪問一個結(jié)構(gòu)對象x中的由a指針成員所指向的對象,則表示方法為x.a。
25.假定要訪問一個結(jié)構(gòu)指針p所指對象中的b指針成員所指的對象,則表示方法為p->b。
26.與結(jié)構(gòu)成員訪問表達(dá)式(*fp).score等價的表達(dá)式是fp->score。
27.在C語言中,對二進(jìn)制文件的所有不同打開方式共有6種。
28.C語言中的標(biāo)準(zhǔn)輸入和輸出設(shè)備文件都屬于字符文件。
29.在一個磁盤數(shù)據(jù)文件的文件名中,文件主名和擴(kuò)展名都是必須的,不可省略。
30.在數(shù)據(jù)文件打開方式字符串中,字符r、w和a具有確定的含義,分別代表讀、寫和追加方式。
31.一個磁盤數(shù)據(jù)文件的文件名由文件主名和擴(kuò)展名所組成,其中間用圓點分開。
32.C語言系統(tǒng)中提供一個用來描述文件屬性的類型標(biāo)識符為FILE。
33.每次只能向文本文件中寫入一個字符,不能一次寫入一個字符串。
34.對二進(jìn)制文件進(jìn)行讀和寫操作將使用相同的系統(tǒng)函數(shù)。
35.在C語言中,系統(tǒng)函數(shù)fseek()用來移動數(shù)據(jù)文件中的文件位置指針。
三、寫出下列每個程序運行后的輸出結(jié)果(共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);
}
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);
}
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);
}
四、寫出下列每個函數(shù)的功能(共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);
}
假定結(jié)構(gòu)類型struct Worker 的定義如下:
struct Worker { char name[15]; int age; float pay;};
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;};
41.void xw1(char* fname) {
FILE* fout=fopen(fname,”w”);
char a[20];
printf(“每個字符串長度小于20,字符串end作為結(jié)束標(biāo)志\n”);
while(1) {
scanf(“%s”,a);
if(strcmp(a,”end”)==0) break;
fputs(a,fout);
fputc(‘\n’,fout);
}
fclose(fout);
}
奧鵬,國開,廣開,電大在線,各省平臺,新疆一體化等平臺學(xué)習(xí)
詳情請咨詢QQ : 3230981406或微信:aopopenfd777

