?2022年湖北專升本C語言結(jié)構(gòu)體與共用體模擬題
摘要:本文是2022年湖北專升本C語言結(jié)構(gòu)體與共用體模擬題,共有22道選擇題和6道填空題,供大家參考。具體詳細(xì)內(nèi)容見下文。
一、單項(xiàng)選擇題
1.以下程序的輸出結(jié)果是( D )。
struct student
{char name[20];
char sex;
int age;
}stu[3]={“Li Lin”,‘M’, 18, “Zhang Fun”,‘M’, 19, “Wang Min”,‘F’, 20};
main()
{struct student *p;
p=stu;
printf(“%s, %c, %d\n”, p->name, p->sex, p->age);
}
A) Wang Min,F,20
B) Zhang Fun,M,19
C) Li Lin,F,19
D) Li Lin,M,18
2.設(shè)有以下語句:
struct st{int n; struct st *next;};
static struct st a[3]={5, &a[1], 7, &a[2], 9,‘\0’},*p;
p=&a[0];
則表達(dá)式(D)的值是 6。
A) p++ ->n
B) p->n++
C) (*p).n++
D) ++p->n
3.以下四個(gè)程序中,( C )不能對兩個(gè)整型變量的值進(jìn)行交換。
A) #include
main()
{int a=10,b=20;
swap(&a,&b);
printf(“%d %d\n”,a,b);
}
swap(int *p,int *q)
{int *t;
t=(int *)malloc(sizeof(int));
*t=*p; *p=*q; *q=*t;
}
B) main()
{int a=10,b=20;
swap(&a,&b);
printf(“%d %d\n”,a,b);
}
swap(int *p,int *q)
{int t;
t=*p; *p=*q; *q=t;
}
C) main()
{int *a,*b;
*a=10; *b=20;
swap(a,b);
printf(“%d %d\n”,*a,*b);
}
swap(int *p,int *q)
{int t;
t=*p; *p=*q; *q=t;
}
D) main()
{int a=10,b=20;
int *x=&a,*y=&b;
swap(x,y);
printf(“%d %d\n”,a,b);
}
swap(int *p,int *q)
{int t;
t=*p; *p=*q; *q=t;
}
4.下面程序的輸出結(jié)果是( C)。
struct st
{int x;
int *y;
}*p;
int dt[4]={10, 20, 30, 40};
struct st aa[4]={50, &dt[0], 60, &dt[1], 70, &dt[2], 80, &dt[3]};
main()
{p=aa;
printf(“%d”, ++p->x);
printf(“%d”, (++p)->x);
printf(“%d\n”, ++(*p->y));
}
A) 10 20 20
B) 50 60 21
C) 51 60 21
D) 60 70 31
5.若要用下面的程序片段使指針變量 p 指向一個(gè)存儲(chǔ)整型數(shù)據(jù)的動(dòng)態(tài)存儲(chǔ)單元,則應(yīng)填入( D )。
int *p;
p= malloc(sizeof(int));
A) int
B) int *
C) (* int)
D) (int *)
6.若已建立下面的鏈表結(jié)構(gòu),指針 p、s 分別指向圖中所示的結(jié)點(diǎn),則不能將 s 所指的結(jié)點(diǎn)插入到鏈表末尾的語句組是( C)。
A) s->next=NULL; p=p->next; p->next=s;
B) p=p->next; s->next=p->next; p->next=s;
C) p=p->next; s->next=p; p->next=s;
D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;
7.以下程序的輸出結(jié)果是( D)。
#include
void fun(float *p1,float *p2, float *s)
{s=(float *)calloc(1, sizeof(float));
*s=*p1+*(p2++);
}
main()
{float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
fun (a, b, s);
printf(“%f\n”, *s);
}
A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000
8.字符‘0’的 ASCII 碼的十進(jìn)制數(shù)為 48,且數(shù)組的第 0 個(gè)元素在低位,則以下程序的輸出結(jié)果是( B )。
A) 39
B) 9
C) 38
D) 8
9.若有說明:long *p, a; 則不能通過 scanf 語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是( A )。
A) *p=&a; scanf(“%ld”,p);
B) p=(long *)malloc(8); scanf(“%ld”,p);
C) scanf(“%ld”,p=&a);
D) scanf(“%ld”,&a);
10.以下選項(xiàng)中,能定義 s 為合法的結(jié)構(gòu)體變量的是(B)。
A) typedef struct abc
{double a;
char b[10];
}s;
B) struct
{double a;
char b[10];
}s;
C) struct ABC
{double a;
char b[10];
}
ABC s;
D) typedef ABC
{ double a;
char b[10];
}
ABC s;
11.設(shè)有以下定義和語句,則輸出結(jié)果是(指針變量占 2 個(gè)字節(jié))( D)。
struct date
{long *cat;(2 字節(jié))
struct date *next;(2 字節(jié))
double dog;(8 字節(jié))
}too;
printf(“%d”, sizeof(too));
A) 20
B) 16
C) 14
D) 12
12.以下程序的輸出結(jié)果是(D)。
#include
int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p;
main()
{p=(int *)malloc(sizeof(int));
f(p, a);
printf(“%d\n”,*p);
}
f(int *s, int p[][3])
{*s=p[1][1];}
A) 1
B) 4
C) 7
D) 5
13.設(shè)有如下定義:
struct
sk
{int a; float b;} data, *p;
若有 p=&data,則對 data 中的成員 a 的正確引用是( B )。
A) (*p).data.a
B) (*p).a C) p->data.a
D) p.data.a
14.以下程序的輸出結(jié)果是( B )。
#include
struct stu
{int num;
char name[10];
int age;
};
void fun(struct stu *p)
{printf(“%s\n”, (*p).name);}
main()
{struct stu students[3]={{9801, “Zhang”, 20}, {9802, “Wang”, 19}, {9803, “Zhao”, 18}};
fun (students+2);
}
A) Zhang
B) Zhao
C) Wang
D) 18
15.以下程序運(yùn)行后,輸出結(jié)果是( C)。
fut(int **s, int p[2][3])
{**s=p[1][1];}
main()
{int a[2][3]={1, 3, 5, 7, 9, 11}, *p;
p=(int *)malloc(sizeof(int));
fut(&p, a);
printf(“%d\n”, *p);
}
A) 1
B) 7
C) 9
D) 11
16.下列程序的輸出結(jié)果是( B)。
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a + s[1].b;
printf("%d \n", t);
}
A) 5
B) 6
C) 7
D) 8
17.有以下結(jié)構(gòu)體說明和變量的定義,且如下圖所示指針 p 指向變量 a,指針 q 指向變量 b。則不能把結(jié)點(diǎn) b 連接到結(jié)點(diǎn) a 之后的語句是( B)。
struct node
{char data;
struct node *next;
} a, b, *p=&a,*q=&b;
A) a.next=q;
B) p.next=&b;
C) p->next=&b;
D) (*p).next=q;
18.變量 a 所占內(nèi)存字節(jié)數(shù)是(C)。
A) 4
B) 5
C) 6
D) 8
19.有如下定義:
struct person{char name[9]; int age;};
struct person class[10]={“Johu”, 17, “Paul”, 19 , “
Mary”, 18, “Adam”, 16};
根據(jù)上述定義,能輸出字母 M 的語句是( D)。
A) printf(“%c\n”, class[3].name);
B) printf(“%c\n”, class[3].name[1]);
C) printf(“%c\n”, class[2].name[1]);
D) printf(“%c\n”, class[2].name[0]);
20.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是( C)。
A) typedef struct aa
{int n;
float m;
}AA;
AA td1;
B) #define AA struct aa
AA{int n;
float m;
}td1;
C) struct
{ int n;
float m;
}aa;
struct aa td1;
D) struct
{ int n;
float m;
}td1;
21.設(shè)有以下說明語句:
struct ex
{int x; float y; char z;} example;
則下面的敘述中不正確的是( B )。
A) struct 是結(jié)構(gòu)體類型的關(guān)鍵字
B) example 是結(jié)構(gòu)體類型名
C) x, y, z 都是結(jié)構(gòu)體成員名
D) struct ex 是結(jié)構(gòu)體類型名
22.以下程序的輸出結(jié)果是( D)。
union myun
{ struct
{ int x, y, z; } u;
int k;
} a;
main()
{a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n", a.u.x);
}
A) 4
B) 5
C) 6
D) 0
二、填空題
1.設(shè)有以下結(jié)構(gòu)體類型說明和變量定義,則變量 a 在內(nèi)存中所占的字節(jié)數(shù)是22,變量 p 在內(nèi)存中所占的字節(jié)數(shù)是2。
struct stud
{char num[6];
int s[4];
double ave;
}a, *p;
2.若有如下結(jié)構(gòu)體說明:
struct STRU
{int a, b ; char c; double d:
struct STRU p1, p2;
};
請?zhí)羁?,以完成?t 數(shù)組的定義,t 數(shù)組的每個(gè)元素為該結(jié)構(gòu)體類型:struct STRU t[20];
3.以下程序段用于構(gòu)成一個(gè)簡單的單向鏈表,請?zhí)羁铡?/p>
struct STRU
{int x, y ;
float rate;
struct STRU * p;
} a, b;
a.x=0; a.y=0; a.rate=0; a.p=&b;
b.x=0; b.y=0; b.rate=0; b.p=NULL;
4.建立并輸出 100 個(gè)同學(xué)的通訊錄,每個(gè)通訊錄包括同學(xué)的姓名、地址、郵政編碼。
#include
#define N 100
struct communication
{char name[20];
char address[80];
long int post_code;
}commun[N];
main()
{int i;
for(i=0; i<100; i++)
{set_record(commun+i);
print_record(commun+i);
}}
set_record(struct communication *p)
{printf(“Set a communication record\n”);
scanf(“%s %s %ld”, p->name, p->address, p->post-code);
}
print_record ( strut communication*p)
{printf(“Print a communication record\n”);
printf(“Name: %s\n”, p->name);
printf(“Address: %s\n”, p->address);
printf(“Post_code: %ld\n”, p->post-code);
}
5.以下函數(shù) creatlist 用來建立一個(gè)帶頭節(jié)點(diǎn)的單鏈表,新的結(jié)點(diǎn)總是插入在鏈表的末尾。鏈表的頭指針作為函數(shù)值返回,鏈表最后一個(gè)節(jié)點(diǎn)的 next 成員中放入 NULL,作為鏈表結(jié)束標(biāo)志。讀入時(shí)字符以#表示輸入結(jié)束(#不存入鏈表)。請?zhí)羁铡?/p>
struct node
{char data;
struct node * next;
};
struct node * creatlist( )
{struct node * h,* s,* r;char ch;
h=(struct node *)malloc(sizeof(struct node));
r=h;
ch=getchar( );
while(ch!=‘#’)
{s=(struct node *)malloc(sizeof(struct node));
s->data=ch;
r->next=s; r=s;
ch=getchar( );}
r->next=NULL;
return h;
}
6.有以下定義和語句,則 sizeof(a)的值是10,而 sizeof(a.share)的值是 4。
struct date
{int day;
int month;
int year;
union
{int share1;
float share2;
}share;
} a;
延伸閱讀
- 2022年湖北專升本電路模擬題(四)
- 2022年湖北專升本電路模擬題(三)
- 2022年湖北專升本電路模擬題(二)
- 2022年湖北專升本電路模擬題(一)
- 2022年湖北專升本高等數(shù)學(xué)模擬題(三)
- 2022年湖北專升本高等數(shù)學(xué)模擬題(二)
專升本微信公眾號(hào)
掃碼添加
專升本備考資料免費(fèi)領(lǐng)取
去領(lǐng)取