c語言作業(五)

1、設有下面的結構體和結構變量定義:

struct student
{
    int id;
    char* name;
    int math;
};
struct student studl;

關於結構體類型變量賦值正確的是(A)
A、studl.id=1001;studl.name=”Tom”;
B、id=1001;*studl.name=”Tom”;
C、studl.id=1001;studl.*name=”Tom”;
D、studl.id=1001L;*studl.name=”Tom”;

2、指向結構體對象的指針變量既可以指向結構體變量,也可以用來指向(結構體本身)。
2.1結構體類型只有一種。請問這句話的說法是正確的嗎?(錯誤)
A.正確
B.錯誤

3、當說明一個結構體變量時系統分配給它的內存是(A)
A.各成員所需內存的總和
B.結構中第一個成員所需內存量
C.成員中佔內存量最大者所需的容量
D.結構中最後一個成員所需內存量

4、在結構體中,成員的缺省存取權限是(公有)的.

5、在32位cpu上選擇缺省對齊的情況下,有如下結構體定義:
struct A{
unsigned a : 19;
unsigned b : 11;//1個word
unsigned c : 4;//1個word
unsigned d : 29;//一個word
char index;//1個word
};//一個word 32bite=4byte,4*4 16byete
則sizeof(struct A)的值爲(16)
9
12
16
20

6、下列代碼的功能包括:定義一個x數組,說明一個結構體,同時對變量t進行初始化,使得t的a成員的值爲50,b成員的值爲x數組的首地址。
請在空白處(方框內)填入合適的內容,一完成上述功能。

int x[5]={1,2,3,4,5};
struct {
int a;
int *b;
}t{ (50),(&x) };

7、開發C代碼時,經常見到如下類型的結構體定義:

typedef struct list_t
{
struct list_t *next;//4
struct list_t *prev;//4
char data[0];//0
}list_t;

請問在32位系統中,sizeof(list_t)的值爲? 8byte
4byte
8byte
5byte
9byte

8、定義一個結構體變量(包括年、月、日),計算該日在本年中爲第幾天?(注意考慮閏年問題),要求寫一個函數days,實現上面的計算。由主函數將年月日傳遞給days函數,計算後將日子傳遞迴主函數輸出 。

#include<stdio.h>

struct date
{
    int year;
    int month;
    int day;
}d={2017,12,28};

int days(int year,int month,int day)
{
    int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}
    if((year%4==0&&year%100!=0)||(year%400==0))
    {
        monnth[1]=29;
    }
    int i;
    int data = 0;
    for(i=0;i<month - 1;i++)
    {
        data = month[i]+data;
    }


}
int main(void)
{
    int day;
    day = days(d.year,d.month,d.day);
    day = day + data;
    printf("該日是本年的第%d天!.\n",day);
    return 0;
}

9、假設有如下的關於職工信息的結構體:
struct Employee
{
long eID;
char eName[10];
struct Employee *pNext;
};
其中eID表示職工編號,請編寫一個函數:
struct Employee *eIDSequence(int eID, char *sName)

struct Employee
{
    int eID;
    char *sName;
    struct Employee *pNext; 
}
struct  Employee *eIDSequence(int eID, char *sName)
{

}

10、請設計一個名爲student的結構體類型,該類型的成員有一個名爲sex的字符類型變量,有一個名爲id的int類型,有個名爲name的字符數組的變量,請在主函數中創建一個sruc student類型的數組,數組長度爲10,然後再設計一個自定義函數實現該結構體數組的輸入,再設計一個自定義函數,求出該結構體數組中id值最大的元素並顯示其各成員的值。

#include<stdio.h>
struct student
{
    char sex;
    int id;
    char name[10];
}s;
int mian(void)
{   

    return 0;
}

11、編程計算兩點間的直線距離。
要求:點座標採用結構體類型,屏幕獲取輸入兩點,並輸出距離(小數點後保留兩位)。

#include<stdio.h>
#include<math.h>
struct data
{
    int x;
    int y;
}d;

int main(void)
{
    typeof(d) A,B;
    printf("請輸入A點的座標x,y");
    scanf("%d,%d",&A.x,&A.y);
    printf("請輸入B點的座標x,y");
    scanf("%d,%d",&B.x,&B.y);
    int lenth;
    lenth = sqrt(((A.x - B.x)*(A.x - B.x))+((A.y - B.y)*(A.y - B.y)));
    printf("A,B兩點間的距離爲:%d.\n",lenth);
}

12、題目標題:
電話薄管理
題目描述:
利用結構體類型數組輸入五位用戶的姓名和電話號碼,按姓名的字典順序排列後(姓名相同保持原位置),輸出用戶的姓名和電話號碼。 已知結構體類型如下: struct user { char name[20]; char num[10]; };
輸入描述:
輸入姓名字符串和電話號碼字符串。
輸出描述:
輸出按姓名排序後的姓名字符串和電話號碼字符串。
樣式輸入:
aa
12345
dd
23456
cc
34567
bb
21456
ee
12456
樣式輸出:
aa
12345
bb
21456
cc
34567
dd
23456
ee
12456

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章