結構體與聯合體習題含答案_第1頁
結構體與聯合體習題含答案_第2頁
結構體與聯合體習題含答案_第3頁
結構體與聯合體習題含答案_第4頁
結構體與聯合體習題含答案_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2013年 結構體與聯合體習題選擇題1、若程序中有以下的說明和定義:struct abc int x;char y; 花括號后少了分號。struct abc s1,s2;則會發(fā)生的情況是_。A) 編譯時錯B) 程序將順序編譯、連接、執(zhí)行C) 能順序通過編譯、連接、但不能執(zhí)行D) 能順序通過編譯、但連接出錯2、有以下程序段struct st int x; int *y;*pt;int a=1,2;b=3,4;struct st c2=10,a,20,b;pt=c;以下選項中表達式的值為11的是A) *pt->yB) pt->xC) +pt->xD) (pt+)->x3、有

2、以下說明和定義語句struct student int age; char num8;struct student stu3=20,"200401",21,"200402",19,"200403"struct student *p=stu;以下選項中引用結構體變量成員的表達式錯誤的是_。A) (p+)->numB) p->numC) (*p).numD) stu3.age4、設有如下枚舉類型定義 enum language Basic=3,Assembly=6,Ada=100,COBOL,Fortran;枚舉量Fortra

3、n的值為_。A) 4B) 7C) 102D) 103 5、以下敘述中錯誤的是_。A)可以通過typedef增加新的類型B)可以用typedef將已存在的類型用一個新的名字來代表C)用typedef定義新的類型名后,原有類型名仍有效D)用typedef可以為各種類型起別名,但不能為變量起別名6、有以下程序段typedef struct NODE int num; struct NODE *next; OLD;以下敘述中正確的是A)以上的說明形式非法B) NODE是一個結構體類型C) OLD是一個結構體類型D) OLD是一個結構體變量7、以下選項中不能正確把cl定義成結構體變量的是_。1typed

4、ef struct int red; int green; int blue; COLOR; COLOR cl;2struct color cl int red; int green; int blue; ;3struct color int red; int green; int blue; cl;4struct int red; int green; int blue; c1;A) 1B) 2C) 3D) 48、設有以下語句typedef struct S int g; char h; T;則下面敘述中正確的是_。A)可用S定義結構體變量B)可以用T定義結構體變量C) S是struct類型

5、的變量D) T是struct S類型的變量9、設有如下說明typedef struct ST long a;int b;char c2; NEW;則下面敘述中正確的是_。A)以上的說明形式非法B) ST是一個結構體類型C) NEW是一個結構體類型D) NEW是一個結構體變量10、以下對結構體類型變量td的定義中,錯誤的是_。A) typedef struct aaB) struct aa int n; int n; float m; float m; AA; ; AA td; struct aa td;C) structD) struct int n; int n; float m; floa

6、t m; aa; td; struct aa td;11、根據下面的定義,能打印出字母M的語句是_。struct person char name9; int age;struct person class10="John",17, "Paul",19,"Mary",18, "Adam",16;A) printf("%cn",);B) printf("%cn",1);C) printf("%cn",class2.

7、name1);D) printf("%cn",0);12、設有以下語句: struct st int n; struct st *next; static struct st a3=5,&a1,7,&a2,9,'0',*p; p=&a0;則表達式 的值是6。A) p+ ->nB) p->n+C) (*p).n+D) +p->n13、下面程序的輸出結果為這里是設了一個結構體指針變量*p。這個結構體中又嵌套了一個指針變量*y。然后再設了一個普通數數組dt4。然后下一步是給結構體定義的一個變量數組:d

8、e4,并且分別給結構體內的成員直接賦值:里面分別賦了四次。 struct st int x; int *y; *p;int dt4=10,20,30,40;struct st aa4= 50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;這里面是給結構體里的x和*y直接賦值。因為是dt4所以賦了四次。第一次:x對應50;*y對應的是地址de0也就是10.然后這樣一次下去。main() p=aa; printf("%dn", +p->x ); printf("%dn", (+p)->x); prin

9、tf("%dn", +( *p->y);A) 10 B) 50 C) 51 D) 6020 60 60 7020 21 21 3114、若已建立下面的鏈表結構,指針p、s分別指向圖中所示的結點,則不能將s所指的結點插入到鏈表末尾的語句組是_。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).n

10、ext=(*p).next; (*p).next=s;15、下面程序的輸出是main() enum team my,your=4,his,her=his+10;printf("%d %d %d %dn",my,your,his,her);A) 0 1 2 3 B) 0 4 0 10 C) 0 4 5 15 D) 1 4 5 1516、下面程序的輸出是main() struct cmplx int x; int y; cnum2=1,3,2,7;printf("%dn",cnum0.y /cnum0.x * cnum1.x);A) 0 B) 1 C) 3

11、D) 617、設有如下定義: struct skint a;float b;data,*p; 若有p=&data;,則對data中的a域的正確引用是_。A) (*p).data.a B)18、有以下程序: *#include<stdio.h>union pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf("%dn",a.i); 程序的輸出結果是 。(注意: ch0在低字節(jié),ch1在高字節(jié)。)A) 13 B) 14 C) 208 D) 20919、已知字符0的ASCII碼為十六進制的30,下面程序的

12、輸出是_。main() union unsigned char c;unsigned int i4; z;z.i0=0x39;z.i1=0x36;printf("%cn",z.c);A) 6 B) 9 C) 0 D) 320、字符'0'的ASCII碼的十進制數為48,且數組的第0個元素在低位,則以下程序的輸出結果是_。#include<stdio.h>main( ) union int i2; long k; char c4; r,*s=&r;s->i0=0x39;s->i1=0x38;printf("%cn&quo

13、t;,s->c0) ; A) 39 B) 9 C) 38 D) 8填空題1、以下函數creat用來建立一個帶頭結點的單向鏈表,新產生的結點總是插在鏈表的末尾。單向鏈表的頭指針作為函數值返回.請?zhí)羁?#include<stdio.h>struct list char data; struct list * next; ;struct list * creat() struct list * h,* p,* q;char ch;h=(struct list *) malloc(sizeof(struct list);p=q=h;ch=getchar();while(ch!=

14、9;?') p=(struct list *)malloc(sizeof(struct list);p->data=ch;p->next=p;q=p;ch=getchar();p->next='0'return(h); 2、有以下說明定義和語句,可用a.day引用結構體成員day, 請寫出引用結構體成員a.day的其它兩種形式 (*b).day 、 b->day 。structint day;char mouth;int year;a,*b; b=&a;datanextheaddatanextdatanext3、現有如圖所示的存儲結構,每

15、個結點含兩個域,data是指向字符串的指針域,next是指向結點的指針域。請?zhí)羁胀瓿纱私Y構的類型定義和說明。struct linkchar *data ; struct link *next; *head;4、若有以下說明和定義語句,則變量w在內存中所占的字節(jié)數是 40 。union aa float x, y;char c6;struct st union aa v; float w5; double ave; w;/325、設有以下結構類型說明和變量定義,則變量a在內存所占字節(jié)數是 32_ 。Struct stud char num6;int s4;double ave; a,*p;6、以

16、下程序用來輸出結構體變量ex所占存儲單元的字節(jié)數,請?zhí)羁?。struct st char name20; double score; ;main() struct st ex; printf(“ex size: %dn”,sizeof( _ex_ );7、以下程序段用于構成一個簡單的單向鏈表,請?zhí)羁铡truct 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;8、若有如下結構體說明:struct STRU in

17、t a, b ; char c; double d:struct STRU p1,p2;請?zhí)羁?,以完成對t數組的定義,t數組的每個元素為該結構體類型_ struct STRU_ t20;9、若以下定義和語句,則sizeof(a)的值是 _12_ ,而sizeof(b)的值是 _4_ struct int day; char mouth; int year; a, *b; b=&a; sp next data root 10、變量root有如圖所示有存儲結構,其中sp是指向字符串的指針域,next 是指向該結構的指針域,data用以存放整型數. 請?zhí)羁?, 完成此結構的類型說明和變量ro

18、ot的定義 struct list char *sp; _ struct list *next_; _int data_;root;11、設有以下定義 struct ss int info; struct ss *link;x,y,z; 且已建立如下圖所示鏈表結構: _ _ _| | | | | | | | | | -| | -| | |_|_| |_|_| |_|_| x y z請寫出刪除結點y的賦值語句_ x.link=z;_。12、以下程序的運行結果是 2002Shangxian # include <string.h>typedef struct student char name10; long sno; float score; STU;main( ) STU a=“zhangsan”,2001,95,b=“Shangxian”,2002,90,c=“Anhua”,2003,95,d,*p=&d; d=a; if(strc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論