设为首页 加入收藏

TOP

C语言结构体基础练习
2017-12-29 06:06:40 】 浏览:244
Tags:语言 结构 基础 练习

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结构体类型只有一种。请问这句话的说法是正确的吗?

错误 3、当定义一个结构体变量时系统分配给它的内存是(A)

A. 各成员所需内存的总和//包括内存补齐

B. 结构中第一个成员所需内存量

C. 成员中占内存量最大者所需的容量

D. 结构中最后一个成员所需内存量 4、在结构体中,成员的缺省存取权限是(公)有的. 5、在32位cpu上选择缺省对齐的情况下,有如下结构体定义:

struct A{

unsigned a : 19;

unsigned b : 11; //四字节

unsigned c : 4; //四字节

unsigned d : 29;//四字节

char index; //四字节

};

则sizeof(struct A)的值为(C)

A. 9

B. 12

C. 16

D. 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)的值为? (B)

A. 4byte

B. 8byte

C. 5byte

D. 9byte

- 8、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出 。

#include 
  
   

int days(int year, char month, char day);

struct data
{
    int year;
    char month;
    char day;
}d = {2000, 3, 1};

int mon[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

void main (void)
{
    int day = days(d.year, d.month, d.day);
    printf("%d\n", day);
}

int days(int year, char month, char day)
{
    int i = 0, days = 0;
    if((year%100!=0 && year%4==0) || (year%400==0))
        mon[1] += 1;
    for(i=0; i
   
     9、假设有如下的关于职工信息的结构体: struct Employee { long eID; char eName[10]; struct Employee *pNext; }; 其中eID表示职工编号,请编写一个函数: struct Employee *eIDSequence(int eID, char *sName)
    
这里写代码片

10、请设计一个名为student的结构体类型,该类型的成员有一个名为sex的字符类型变量,有一个名为id的int类型,有个名为name的字符数组的变量,请在主函数中创建一个sruc student类型的数组,数组长度为10,然后再设计一个自定义函数实现该结构体数组的输入,再设计一个自定义函数,求出该结构体数组中id值最大的元素并显示其各成员的值。

#include 
     
      

typedef struct student
{ 
char sex;
int id;
char name[10];
}S;

void strin(S *p);
void idmax(S *p);

void main (void)
{
    S s[10];
    int i = 0;
    for(i=0; i<10; i++)
        strin(&s[i]);
    idmax(s);
    return;
}

inline void strin(S *p)
{
    scanf("%d %d %s", &(p->sex), &(p->id), &(p->name));
    return;
}

void idmax(S *p)
{
    int num = 0, i = 0;
    for(i=1; i<10; i++)
    {
        if((p+i)->id > (p+num)->id)
        {
            num = i;
        }
    }
    printf("%d\n%d\n%s\n", (p+num)->sex, (p+num)->id, (p+num)->name);
    return;
}
     

11、编程计算两点间的直线距离。

要求:点坐标采用结构体类型,屏幕获取输入两点,并输出距离(小数点后保留两位)。

这里写代码片

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇教你如何用C语言实现的一个万年历 下一篇PAT训练:1006. 换个格式输出整数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目