实验要求:
对一维数组中的元素进行逆序排列,请使用函数调用的方式
逆序操作示意图:
程序语言描述:
#include
#define N 10
void inverse(int arr[]){
//定义中间变量,循环变量
int temp,j;
//逆序操作
for(int i=0; i<N/2; i++){
j=N-i-1;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
int main(){
//定义数组
int arr[N];
printf("the original array is:\n");
//向数组输入元素
for(int i=0; i < N; i++){
printf("arr[%d]:",i);
scanf("%d",&arr[i]);
}
//逆序函数
inverse(arr);
printf("the after array is:\n");
//依次输出逆序后的数组值
for(int i=0; i<N; i++)
printf("arr[%d]:%d\n",i,arr[i]);
return 0;
}
实验要求:
依次输出各个数组元素的地址以及元素的值,在此基础上尝试一下,结构体类型的存储地址有何不同?
运行结果要求:
自然语言描述:
程序语言描述:
#include
int main(){
//定义数组
int arr[5];
//循环向数组输入元素
for(int i=0;i<5;i++){
printf("arr[%d]:",i);
scanf("%d",&arr[i]);
}
//循环输出数组元素的地址及其值
for(int i=0;i<5;i++)
printf("the address of arr[%d]:%d,the value of arr[%d]:%d\n",i,&arr[i],i,arr[i]);
}
运行结果:
一个整型 int 占 4byte
定义结构体类型观察存储地址有何不同
自然语言描述:
1.定义关于书的结构体(包含id,name,price)
2.定义指针(指向实例化的Book数组中每个元素)
3.实例化Book数组(存储多本书)
3.循环输入每本书的id,name,价格
4.指针指向每本书
5.循环打印每本书的id,name,价格
程序语言描述:
#include
#define N 3
typedef struct{
int id; //书编号 4bytes
char name[10]; //书名,10bytes,一本书的书名在10个字符以内包含10个字符
float price; //书价,4bytes
}Book;
int main(){
Book *p; //定义指针(指向每本书)
Book B[N]; //实例化Book数组,存储多本书
for(int i=0; i<N; i++){
//循环输入每本书的信息
printf("Please input book%d's id:",i); //输入第i本书的id
scanf("%d",&B[i].id);
printf("Please input book%d's name:",i); //输入第i本书的书名
scanf("%s",&B[i].name);
printf("Please input book%d's price:",i); //输入第i本书的书价
scanf("%f",&B[i].price);
p=&B[i]; //指针指向每本书
printf("book%d的存储地址:%d\n",i,p);
printf("book%d的编号:%d\n",i,B[i].id);
printf("book%d的书名:%s\n",i,B[i].name);
printf("book%d的书价:%f\n",i,B[i].price);
}
}
运行结果:
上述结构体占18 bytes,由于字节对齐,实际分配了20 bytes
设有一个教师与学生通用的表格,教师的数据有姓名、年龄、职业、教研室四项,学生有姓名、年龄、专业、班级四项,编程输入人员的数据,再以表格输出。
struct studenteacher{
char name[10]; //姓名
int age; //年龄
char job; //工种:s学生,t教师
union{
//共用体:同一地址只能在同一时间存入共用体中一个类型的值
int class[3]; //班级
char office[10]; //教研室
}u1;
}st[N];
#include
#define N 3
struct studenteacher{
char name[10]; //姓名
int age; //年龄
char job; //工种:s学生,t教师
union {
//共用体:同一地址只能在同一时间存入共用体中一个类型的值
char cla[5]; //班级
char office[10]; //教研室
}u1;
}st[N];
int main(){
printf("请输入%d位人员信息\n",N);
//循环输入人员信息(姓名,年龄,工种)
for(int i=1; i<N; i++){
printf("请输入第%d位人员信息\n",i);
scanf("%s %d %s",&st[i].name,&st[i].age,&st[i].job);
printf("%s %d %c\n",st[i].name,st[i].age,st[i].job);
if(st[i].job=='s'){
printf("请输入班级:");
scanf("%s",&st[i].u1.cla);
}
if(st[i].job=='t'){
printf("请输入教研室:");
scanf("%s",&st[i].u1.office);
}
}
printf("%s %d %c %s \n",st[1].name,st[1].age,st[1].job,st[1].u1.cla);
printf("%s %d %c %s \n",st[2].name,st[2].age,st[2].job,st[2].u1.office);
return 0;
}
运行结果: