2017/12/28C语言作业
2017-12-28 10:21
169 查看
1、设有下面的结构体和结构变量定义:
关于结构体类型变量赋值正确的是(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结构体类型只有一种。请问这句话的说法是正确的吗?(B)
A. 正确
B. 错误
3、当说明一个结构体变量时系统分配给它的内存是(A)
A. 各成员所需内存的总和
B. 结构中第一个成员所需内存量
C. 成员中占内存量最大者所需的容量
D. 结构中最后一个成员所需内存量
4、在结构体中,成员的缺省存取权限是 1 有的.
9
· 12
· 16
· 20
6、下列代码的功能包括:定义一个x数组,说明一个结构体,同时对变量t进行初始化,使得t的a成员的值为50,b成员的值为x数组的首地址。
请在空白处(方框内)填入合适的内容,一完成上述功能。
7、开发C代码时,经常见到如下类型的结构体定义:
请问在32位系统中,sizeof(list_t)的值为? 8byte
8、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出 。
#include <stdio.h>
typedef struct data
{
int year;
int month;
int day;
}S;
int days(struct data p)
{
intarr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(p.year%4==0&&p.year%100!=0||p.year%400==0)
{
arr[2]=29;
}
int i=1;
int a=0;
for(i;i<p.month;i++)
{
a=a+arr[i];
}
a=a+p.day;
return a;
}
int main(void)
{
printf("请输入你要计算的年月 日:\n");
struct data date;
scanf("%d %d%d",&date.year,&date.month,&date.day);
int day=0;
day=days(date);
printf("计算所得天数为:%d",day);
return 0;
}
9、假设有如下的关于职工信息的结构体:
struct Employee
{
long eID;
char eName[10];
struct Employee *pNext;
};
其中eID表示职工编号,请编写一个函数:
struct Employee *eIDSequence(int eID, char *sName)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Employee
{
long eID;
char eName[10];
struct Employee *pNext;
};
struct Employee *eIDSequeue(long eID,char *sName)
{
struct Employee *p;
p=(struct Employee *)malloc(sizeof(struct Employee));
p->eID=eID;
strcpy(p->eName,sName);
p->pNext=NULL;
return p;
free(p);
}
int main(void)
{
long eID=0;
char sName[10];
printf("请输入成员eID;\n");
scanf("%d",&eID);
printf("请输入成员的姓名:\n");
scanf("%s",sName);
struct Employee *p;
p=(struct Employee *)malloc(sizeof(struct Employee));
p=eIDSequeue(eID,sName);
return 0;
}
10、请设计一个名为student的结构体类型,该类型的成员有一个名为sex的字符类型变量,有一个名为id的int类型,有个名为name的字符数组的变量,请在主函数中创建一个struct student类型的数组,数组长度为10,然后再设计一个自定义函数实现该结构体数组的输入,再设计一个自定义函数,求出该结构体数组中id值最大的元素并显示其各成员的值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
char sex;
int id;
char name[5];
}S;
void creat_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
printf("请输入学生性别:\n");
scanf("%d",&p->sex);
printf("请输入学生id:\n");
scanf("%d",&p->id);
printf("请输入学生姓名:\n");
scanf("%s",&p->name);
p=p+1;
}
}
void show_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
printf("sex=%d,id=%d,name=%s\n",p->sex,p->id,p->name);
p=p+1;
}
}
void id_max_show_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
if(p->id<arr[i].id)
{
p=&arr[i];
}
}
printf("sex=%d,id=%d,name=%s\n",p->sex,p->id,p->name);
}
int main(void)
{
struct student arr[10];
creat_infor(arr,10);
// show_infor(arr);
id_max_show_infor(arr,10);
return 0;
}
11、编程计算两点间的直线距离。
要求:点坐标采用结构体类型,屏幕获取输入两点,并输出距离(小数点后保留两位)。
#include <stdio.h>
#include <math.h>
typedef struct zuobiao
{
double x;
double y;
}S;
double juli(struct zuobiao a,struct zuobiao b)
{
double temp=pow((b.x-a.x),2)+pow((b.y-a.y),2);
return sqrt(temp);
}
int main(void)
{
struct zuobiao a,b;
printf("请输入你要计算的坐标(x,y):\n");
scanf("%lf,%lf",&a.x,&a.y);
printf("请输入你要计算的坐标(x,y):\n");
scanf("%lf,%lf",&b.x,&b.y);
double temp=juli(a,b);
printf("%.2lf",temp);
//sqrt开根号 //pow求平方
}
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
#include <stdio.h>
typedef struct user
{
charname[20];
charnum[10];
}U;
void creat_infor(struct user arr[])
{
U*p=arr;
inti=0;
for(i=0;i<5;i++)
{
printf("请输入用户信息\n");
scanf("%s",&p->name);
printf("请输入用户电话:\n");
scanf("%s",&p->num);
p=p+1;
}
}
void paixu(struct user arr[])
{
inti=0,j=0;
structuser temp;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(arr[j].name[0]>arr[j+1].name[0])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
void show_infor(struct user arr[])
{
U*p=arr;
inti=0;
for(i=0;i<5;i++)
{
printf("name=%s\nnum=%s\n",p->name,p->num);
p=p+1;
}
}
int main(void)
{
structuser arr[5];
creat_infor(arr);
// show_infor(arr);
paixu(arr);
show_infor(arr);
return0;
}
关于结构体类型变量赋值正确的是(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结构体类型只有一种。请问这句话的说法是正确的吗?(B)
A. 正确
B. 错误
3、当说明一个结构体变量时系统分配给它的内存是(A)
A. 各成员所需内存的总和
B. 结构中第一个成员所需内存量
C. 成员中占内存量最大者所需的容量
D. 结构中最后一个成员所需内存量
4、在结构体中,成员的缺省存取权限是 1 有的.
5、在32位cpu上选择缺省对齐的情况下,有如下结构体定义: struct A{ unsigned a : 19;4 unsigned b : 11;4 unsigned c : 4;4 unsigned d : 29;4 char index;4 }; 则sizeof(struct A)的值为(20) |
· 12
· 16
· 20
6、下列代码的功能包括:定义一个x数组,说明一个结构体,同时对变量t进行初始化,使得t的a成员的值为50,b成员的值为x数组的首地址。
请在空白处(方框内)填入合适的内容,一完成上述功能。
1 2 3 4 5 | int x[5]={1,2,3,4,5}; struct { int a; int *b; }t{ (50),(&x) }; |
1 2 3 4 5 | typedef struct list_t { struct list_t *next; struct list_t *prev; char data[0]; }list_t; |
4byte
· 8byte
· 5byte
· 9byte
8、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出 。
#include <stdio.h>
typedef struct data
{
int year;
int month;
int day;
}S;
int days(struct data p)
{
intarr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(p.year%4==0&&p.year%100!=0||p.year%400==0)
{
arr[2]=29;
}
int i=1;
int a=0;
for(i;i<p.month;i++)
{
a=a+arr[i];
}
a=a+p.day;
return a;
}
int main(void)
{
printf("请输入你要计算的年月 日:\n");
struct data date;
scanf("%d %d%d",&date.year,&date.month,&date.day);
int day=0;
day=days(date);
printf("计算所得天数为:%d",day);
return 0;
}
9、假设有如下的关于职工信息的结构体:
struct Employee
{
long eID;
char eName[10];
struct Employee *pNext;
};
其中eID表示职工编号,请编写一个函数:
struct Employee *eIDSequence(int eID, char *sName)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Employee
{
long eID;
char eName[10];
struct Employee *pNext;
};
struct Employee *eIDSequeue(long eID,char *sName)
{
struct Employee *p;
p=(struct Employee *)malloc(sizeof(struct Employee));
p->eID=eID;
strcpy(p->eName,sName);
p->pNext=NULL;
return p;
free(p);
}
int main(void)
{
long eID=0;
char sName[10];
printf("请输入成员eID;\n");
scanf("%d",&eID);
printf("请输入成员的姓名:\n");
scanf("%s",sName);
struct Employee *p;
p=(struct Employee *)malloc(sizeof(struct Employee));
p=eIDSequeue(eID,sName);
return 0;
}
10、请设计一个名为student的结构体类型,该类型的成员有一个名为sex的字符类型变量,有一个名为id的int类型,有个名为name的字符数组的变量,请在主函数中创建一个struct student类型的数组,数组长度为10,然后再设计一个自定义函数实现该结构体数组的输入,再设计一个自定义函数,求出该结构体数组中id值最大的元素并显示其各成员的值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
char sex;
int id;
char name[5];
}S;
void creat_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
printf("请输入学生性别:\n");
scanf("%d",&p->sex);
printf("请输入学生id:\n");
scanf("%d",&p->id);
printf("请输入学生姓名:\n");
scanf("%s",&p->name);
p=p+1;
}
}
void show_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
printf("sex=%d,id=%d,name=%s\n",p->sex,p->id,p->name);
p=p+1;
}
}
void id_max_show_infor(struct student arr[],int lenth)
{
S *p=arr;
int i=0;
for(i=0;i<lenth;i++)
{
if(p->id<arr[i].id)
{
p=&arr[i];
}
}
printf("sex=%d,id=%d,name=%s\n",p->sex,p->id,p->name);
}
int main(void)
{
struct student arr[10];
creat_infor(arr,10);
// show_infor(arr);
id_max_show_infor(arr,10);
return 0;
}
11、编程计算两点间的直线距离。
要求:点坐标采用结构体类型,屏幕获取输入两点,并输出距离(小数点后保留两位)。
#include <stdio.h>
#include <math.h>
typedef struct zuobiao
{
double x;
double y;
}S;
double juli(struct zuobiao a,struct zuobiao b)
{
double temp=pow((b.x-a.x),2)+pow((b.y-a.y),2);
return sqrt(temp);
}
int main(void)
{
struct zuobiao a,b;
printf("请输入你要计算的坐标(x,y):\n");
scanf("%lf,%lf",&a.x,&a.y);
printf("请输入你要计算的坐标(x,y):\n");
scanf("%lf,%lf",&b.x,&b.y);
double temp=juli(a,b);
printf("%.2lf",temp);
//sqrt开根号 //pow求平方
}
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
#include <stdio.h>
typedef struct user
{
charname[20];
charnum[10];
}U;
void creat_infor(struct user arr[])
{
U*p=arr;
inti=0;
for(i=0;i<5;i++)
{
printf("请输入用户信息\n");
scanf("%s",&p->name);
printf("请输入用户电话:\n");
scanf("%s",&p->num);
p=p+1;
}
}
void paixu(struct user arr[])
{
inti=0,j=0;
structuser temp;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(arr[j].name[0]>arr[j+1].name[0])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
void show_infor(struct user arr[])
{
U*p=arr;
inti=0;
for(i=0;i<5;i++)
{
printf("name=%s\nnum=%s\n",p->name,p->num);
p=p+1;
}
}
int main(void)
{
structuser arr[5];
creat_infor(arr);
// show_infor(arr);
paixu(arr);
show_infor(arr);
return0;
}
相关文章推荐
- 2017/12/28C语言笔记整理
- 安徽科技学院2017-2018-1学期15电信12班《Java编程技术》课下作业~解题报告
- 寒假汇编语言作业(12)
- 22017/12/7C语言作业
- 2017/10.14/C语言作业
- C程序设计语言 作业1-12
- 软件工程实践 2017 第二次作业(部分)
- c程序设计语言 习题1-12
- PL/0语言编译程序整理实现:(12)、测试代码
- 2017秋-软件工程第十二次作业(三)-版本控制报告(个人)
- 12春《现代广告学》第四次作业
- [Coursera 计算导论与C语言基础] 第六周作业
- 2017-2018-1 20155229 《信息安全系统设计基础》课下作业
- C语言课程设计第二次作业
- Java语言基础作业
- # 20155337 2017-2018 1 课上测试、课下作业、实验
- 2017 ACM-ICPC 亚洲区(沈阳赛区)网络赛 - 02 04 05 08 12
- c语言基础1的作业
- C语言博客作业—字符数组
- HPUOJ---2017寒假作业--专题-1/M-人见人爱A^B