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

猜你喜欢

转载自blog.csdn.net/linzetao233/article/details/78920256