久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

結構與聯(lián)合

 running_to_you 2017-05-17

結構與聯(lián)合

一.選擇題

1.設有定義“struct {int x,;int y,;} d[2]{{13},,{2,, 7}};”,,則 

  printf(“%d\n”,, d[0].y/d[0].x*d[l].x);的輸出是(   

 0           l             3           

    

2.設有定義“enum term { my,, your4,, his herhis10},;”,,則printf(“%d%d,,%d,,%d\n”,my,, your,, his her),;的輸出是(    

 0,,l2,,3                  0,,40,,10   

 0,,45,,15              1,,4515 

    

3.以下對枚舉類型名的定義中,,正確的是()   

 enum a ={one,,twothree},;          enum a{a1,, a2a3},;   

 enum a ={1’,,‘2’,‘3},;          enum a {one”,,“two”,“three },;

   

 4.若有如下定義,,則 printf(“%d\n”, sizeofthem)),;的輸出是(  

  typedef union { long x[2],;int y[4]char z[8],;} MYTYPE,;MYTYPE them

 32                16                8            24 

    

5設有以下說明和定義:   

typedef union 

{

long i,;

int k[5],;

 char c

} DATE,;   

struct date 

{

int cat,; 

DATE cow 

double dog,;

} too,; 

 DATE max 

  則下列語句的執(zhí)行結果是(  

  printh(“%d”,,sizeofstruct date)+sizeofmax)),; 

   26                  30                  18                   8 

   

6.根據下面的定義,能打印出字母M的語句是(    

struct person 

{char name[9],; int age },; 

 struct person c[10] = {{John”,,17 }{Paul”,19 },,{Mary”,,18 }{Adam”,,16 }},;  

  printf(“%c”, c[3].name),; 

 printf(“%c”,, c[3].name[1] );   

printf(“%c”,,c[2].name[1]),; 

printf(“%c”,c[2].name[0] ),; 

    

7.設有如下定義,,則對data中的a成員的正確引用是(  

  struct sk{int afloat b,;} data,,*p & data

 (*p).data.a                    (*p).a            p->data.a              p.data.a 

  

二.填充題 

1.運算符“.”稱為__________運算符,,運算符“ -> ”稱為__________運算符,。 

   

2.設有定義“struct {int a float b,; char c,;} abc*p_abc&abc,;”,,則對結構體成員a的引用方法可以是abc_________ap_abc___________a.     

 

3.若有以下說明和定義語句,則變量w在內存中所占的字節(jié)數是__________. 

union aa {float x,;float y,; char c[6] },;   

struct st 

union aa v,; 

float w[5] 

double ave,;

} w,; 

 

三. 程序分析題 

 1.閱讀下列程序,寫出運行結果,。(字符0ASCII碼為十六進制的30   

main() 

  { 

union 

{ char c,; char i[4],; } z  

 z.i[0] 0x39,;z.i[1] 0x36,;  

 printf(“%c \n”, z.c),;   

  

2.閱讀下列程序,,寫出程序的運行結果。   

main ()   

struct student   

 {  

char name[10],;       

float k1,;       

float k2    

a[2]{ {zhang”,, 100,,70} {wang”,,70,,80 } }* pa,;   

int i,;   

printf(“\nname%s total%f”,p ->name,,p -> k1p -> k2),; 

          printf(“\nname%s total%f”,a[l].name,, a[1].k1a[l].k2),;  

  

3. 閱讀下列程序,寫出程序的運行結果,。  

 main   

  { 

enum em 

em13,, em2l em3 },;   

char * aa[] = {AA”,,“BB”,“CC”,,“DD } ,;   

printf(“%s%s%s\n”,aa[em1],,aa[em2],, aa[em3] );  

 } 

}

 

程序設計題 

  1.用結構體存放下表中的數據,,然后輸出每人的姓名和實發(fā)工資( 基本工資+浮動工資-支出),。   姓名 基本工資(元) 浮動工資(元) 支出(元) 

  Li 220.00 300.00 90.00 

  Xia 370.00 180.00 60.00   Wang 620.00 0.00 70.00 

 

2.編一個程序,,輸入10個職工的編號,、姓名,、基本工資、職務工資,,求出其中“基本工資十職務工資”最少的職工姓名并輸出,。

  

3.編一個程序,輸入10個學生的學號,、姓名,、3門課程的成績,求出總分最高的學生姓名并輸出,。   

 

4.編一個程序,,輸入下列學生成績表中的數據,并用結構體數組存放,,然后統(tǒng)計并輸出三門課程的名稱和平均分數,。 

  name foxbase pascal c   wang 98.0 87.0 77.0   qian 90.5 91.0 88.0   sun 74.0 77.5 66.5   li 84.5 64.5 55.0 

  

 

 

答案解析

1.④「解」結構數組d有兩個結構元素,每個結構又由兩個整型成分組成,,初始化后,,d[0].x1d[0].y3,,d[1].x2.所以表達式d[0].y/d[0].x* d[l].x的值是 6.所以正確解答是④,。

 

2.③「解」按枚舉類型定義的規(guī)定,枚舉類型team的枚舉常量對應的整數分別是my=0,、your4,、his5her15.所以語句輸出0,,4,,515.正確解答是③,。

 

3.②「解」枚舉類型定義的句法是: 

  enum 枚舉類型名 {枚舉類型常量1,,枚舉類型常量2,……},; 

  其中枚舉類型常量都是互不相同的標識符,。所以定義enum a {a1a2,,a3 },;是一個正確的定義。任何在枚舉類型名之后接上 =,,或用字符常量,,或用字符串常量作為枚舉類型常量都是不正確的定義,。解答應是②。

 

4.③「解」共用型變量的成分是覆蓋存儲,,為共用型變量分配存儲時,,以其中需要最多存儲字節(jié)的成分進行分配。設long型數據占4個字節(jié),、int型數據占2個字節(jié),。共用型MYTYPE有三個成分,第一個成分是有兩個long型元素的數組,,它需要8個字節(jié),;第二個成分是有4int型元素的數組,它也需要8個字節(jié),;第三個成分是有8個字符元素的數組,,也是8個字節(jié)。所以MYTYPE類型的共用型變量只需要8個字節(jié),。正確解答是③,。

 

5.②「解」設long型數據占4個字節(jié)、int型數據占2個字節(jié),,double數據占8個字節(jié),。共用型DATE有三個成分:long型成分i,有五個int型元素的數組k,,char型成分 c. 所以 DATE類型的變量需要10個字節(jié),。結構類型date有三個成分:int型成分catDATE共用類型cow,, double型成分dog. 所以結構類型 date需要20個字節(jié),。所以表達式 sizeofstruct date)+sizeofmax)的值是30. 正確解答是②。

 

6.④「解」結構類型struct person有兩個成分:九個元素的字符數組name和一個基本整型age元素類型為 struct person的數組c10個元素,,其中前四個元素被設定了初值,。在已設定初值的元素中,只有c[2].mame[0]的值是字符M. 其余元素及元素的成分都不是字符M,。正確解答是④,。 

 

7.②「解」結構變量data有兩個成分ab.結構指針變量p指向結構變量data. 引用結構變量data的成分a有兩種方法:一是直接由變量data引用其自己的成分a,寫成data.a,;二是通過指針變量p. 引用它所指的結構的成分a,,這又有兩種寫法,分別是p -> a(*p).a.正確解答是②,。

 

二.填空題

1.「解」引用結構變量或共用型變量的成分用成員運算符‘.’,,若某指針指向一個結構變量或共用型變量,通過指針引用它所指變量的成分用指向成員運算符‘ -> ’,。

 

2.「解」若有結構變量abc有成分a,,并有指針p_abc指向結構變量abc,,則引用變量abc成分a的標記形式有abc.ap_abc ->a. 

 

3.「解」共用型aa有三個成分,一個是float型成分x,,一個是float型成分y,,再一個是有六個元素的字符數組。若float型數據占4個字節(jié),,則類型aa數據要占用6個字節(jié),。結構變量w有三個成分,一個是共用型成分aa,,要占用6個字節(jié);一個是有5float型元素的數組w,,要占用20個字節(jié),;再一個是double型的ave. doube型數據要8個字節(jié),則結構變量w要占用34個字節(jié),。  

 

三.程序分析題

1.「解」共用型變量z有兩個成分,,一個是字符型的c,另一個是有4個字符的數組i. 由于共用型的成分是覆蓋存儲,,成分c的內容也是成分i的首元素,。程序給zi成分的首元素置十六進制代碼0x39,即十進制數57. 57是字符‘9’的ASCII代碼,。用字符輸出格式,,輸出該變量的值,將輸出字符‘9 . 

 

2.「解」結構數組有兩個元素,,每個元素有三個成分:10個元素的字符數組和兩個類型為float的成分k1,、k2.結構指針變量p指向結構數組a的首元素。其中初始化使a的兩個元素分別有值如下:   a[0].name=“zhang”,,a[0].k1 100.0,,a[0].k270.0a[1].name=“wang”,,a[l].k170.0,, a[1].k2 =80.0.所以程序運行后輸出: 

  namezhang total = 170.000000   name wang total 150.000000 

 

3.「解」由枚舉類型測的定義知,枚舉類型常量em1的值是3,,枚舉類型常量em2的值是1,,枚舉類型常量em3的值是2. 所以程序運行后輸出:   DD BB CC 

 

程序設計題 

  1.用結構體存放下表中的數據,然后輸出每人的姓名和實發(fā)工資( 基本工資+浮動工資-支出),。   姓名 基本工資(元) 浮動工資(元) 支出(元) 

  Li 220.00 300.00 90.00 

  Xia 370.00 180.00 60.00   Wang 620.00 0.00 70.00 

  「解」程序定義struct person結構類型,,包含人的姓名(<20個字符)、基本工資,、浮動工資和支出,,用這個struct person結構類型定義數組,。程序首先輸入人數n<100),再輸入n人的信息,,最后輸出各人的姓名和實發(fā)金額,。程序如下: 

# include<stdio.h> 

#include<string.h>   

# define N 100   

struct person 

{    

char name[20]     

float base,;    

float ds,;    

float pay   

} person[N],, *p,;   

void main ()   

int n    

float d,;    

char buf[120],; 

         printf(“輸入n<%d)! \n”,,N),;    

do 

                   scanf(“%d”, &n),;    

 ifn>0 && n<Nbreak,;    

 printf(“輸入n不合理! 請重新輸入,! \n ),; 

      } while1); 

         printf(“輸入%d個人的姓名,、基本工資,、浮動工資和支出 \n”, n),; 

          forpperson; p<person+n; p++  

{     

scanf(“%s”,, buf);  

strncpy p -> name,, buf,, 19); 

                   scanf(“%f”,, &d),;  

p -> based 

                   scanf(“%f”,,&d),;  

p -> dsd 

                   scanf(“%f”, &d ),;  

p -> pay d,; 

         } 

          forp = person p< personn,; p++     

printf(“%s %.2f\n”,,p-> namep->basep->ds-p-> pay),;   

 

2.編一個程序,,輸入10個職工的編號、姓名,、基本工資,、職務工資,求出其中“基本工資十職務工資”最少的職工姓名并輸出,。

|解」類似上一程序,,直接給出程序如下: 

# include<stdio.h> 

#include<string.h>   

# define N 10   

struct person 

{   

 char no[10]    

char name[20],;    

float base1    

float base2,; 

  } person[N],, *p *minp,;  

void main ()  

 { 

float d,;    

char buf[120] 

         printf(“輸入%d個人的編號,、姓名,、基本工資、職務工資 \n”,, N),; 

          forpperson p<person+N,; p++ 

{    

scanf(“%s”,, buf);  

strncpyp -> no,,buf,,9); 

                   scanf(“%s”,, buf),;  

strncpy p -> name buf 19),; 

                   scanf(“%f”,, &d); 

p -> base1 =d,; 

                   scanf(“%f”,,&d); 

p -> base2d,; 

         } 

         forminppperson,; p<personN p++    

if p -> baselp -> base2< minp -> basel minp -> base2 

minp =p,; 

         printf(“基本工資與職務工資和最少的職工是%s \n”,,minp -> name); 

         printf(“他的基本工資與職務工資和是%.2f \n”,,minp -> basel minp -> base2),;  

 } 

  

4.編一個程序,輸入10個學生的學號,、姓名,、3門課程的成績,求出總分最高的學生姓名并輸出,。   

「解」類似上一程序,,直接給出程序如下:  

 # include<stdio.h>   

# include<string.h>  

 # define N 10   

struct stu 

{    

char no[10]    

char name[20],;   

I nt score[3],; 

  } students[N]*p,, *maxp,;   

void main() 

{  

char buf[120]  

int maxs,; 

         printf(“輸入%d個學生的編號,、姓名、三門課程成績 \n”,, N),; 

         forp studentsp< studentsN,;p++ 

{        

scanf(“%s”,, buf);  

strncpyp -> no,, buf,, 9),; 

                   scanf(“%s”, buf),;  

strncpy p -> name,, buf19),; 

                   scanf(“%d%d%d”,,&p -> score[0] &p -> score[1],, &p -> score[2]),;     

         formaxp= p =students maxs-1,; p< studentsN,; p++ 

                   if p -> score[0] + p -> score[1]p -> score[2]> maxs

 { 

                   maxpp 

maxs=p ->score[0]p -> score[1]p >score[2],;         

}    

printf(“最高總分的學生是%s他的總分是 %d \n”,, maxp -> name maxs),;  

 } 

 

4.編一個程序,,輸入下列學生成績表中的數據,并用結構體數組存放,,然后統(tǒng)計并輸出三門課程的名稱和平均分數,。 

  name foxbase pascal c   wang 98.0 87.0 77.0   qian 90.5 91.0 88.0   sun 74.0 77.5 66.5   li 84.5 64.5 55.0 

  

「解」類似上一程序,直接給出程序如下:   

# include<stdio.h>   

# include<string.h>   

# define N 100   

struct stu 

{    

char namep[20],;   

 int foxbase    

int pascal,;   

 int c,; 

  } students[N] *p,;   

void main () 

  { 

int n,, sf sb,, sc,;    char buf[120] 

         printf(“輸入n< %d ,! \n”,, N);    

do 

                   scanf(“%d”,, &n),;

ifn>0 && n<N  break    

printf(“輸入n不合理!請重新輸入! \n”),;    

} while1),; 

         printf(“輸入%d個人的姓名、Foxbase成績,、Pascal成績,、C成績 \n”, n),; 

         for p students,;p< studentsn p++

{      

scanf(“%s”,,buf ),; 

strncpyp -> name buf,, 19),; 

                   scanf(“%d%d%d”, &p -> foxbase,,&p -> pascal,,&p -> c   

          sfsbsc 0 

         for pstudents,; p< studentsn,; p++ 

{    

sf+= p -> foxbase  

sb+= p -> pascal,;  sc+= p -> c,; 

         }   

printf(“Foxbase%.2f \t Pascal%.2f \t c%.2f \n”,  floatsf/n,,(floatsb/n,,(float  sc/n); 

}

 

 

 

 

  

 

 

 

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多