一、作業(yè)
1.定義一個(gè)學(xué)生結(jié)構(gòu)體,包含結(jié)構(gòu)體成員:身高,姓名,成績;定義一個(gè)結(jié)構(gòu)體數(shù)組有7個(gè)成員,要求終端輸入結(jié)構(gòu)體成員的值,根據(jù)學(xué)生成績,進(jìn)行冒泡排序。
#include <stdio.h>
#include <string.h>
typedef struct {
int high;
char name[10];
float score;
}stu;
int main(int argc, const char *argv[])
{
int i,j;
stu temp; //其中的temp需要類型重定義
stu arr[7]={{100,"1",95},{110,"2",84},{120,"3",70},{130,"4",42},{140,"5",99},{150,"5",77},{160,"6",66}};
for(i=1;i<7;i++){
for(j=0;j<7-i;j++){
if(arr[j].score>arr[j+1].score){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=0;i<7;i++){
printf("%d %s %f\n",arr[i].high,arr[i].name,arr[i].score);
}
return 0;
}
二、知識(shí)回顧?
1.申請(qǐng)一個(gè)10個(gè)int類型的堆區(qū)空間,并實(shí)現(xiàn)選擇排序(需要導(dǎo)入頭文件 #include <stdlib.h>)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//申請(qǐng)一個(gè)10個(gè)int類型的堆區(qū)空間,并實(shí)現(xiàn)選擇排序
int main(int argc, const char *argv[]){
int *p=(int *)malloc(sizeof(int)*10);
int i,j,index,temp;
for(i=0;i<10;i++){
printf("請(qǐng)輸入數(shù)字\n");
scanf("%d",(p+i));
}
for(i=0;i<10;i++){
index=i;
for(j=i;j<10;j++){
if(*(p+j)>*(p+index))
index=j;
}
temp=*(p+i);
*(p+i)=*(p+index);
*(p+index)=temp;
}
for(i=0;i<10;i++){
printf("%d\n",*(p+i));
}
free(p);
return 0;
}
2.用##拼接帶參宏的參數(shù)
#include <stdio.h>
#include <string.h>
//用##實(shí)現(xiàn)字符串的拼接
#define unit_32 unsigned int
#define TYPE(a,b) a##b
int main(int argc, const char *argv[])
{
TYPE(unit,_32) a=100;
//unit_32 a=100
//unsigned int a=100
printf("%d\n",a);
return 0;
}
3.宏函數(shù)(最后一行作為返回值,不需要return)
#include <stdio.h>
#include <string.h>
#define MAX(a,b) ({if(a>b) ret = a; else ret=b; ret;})
int main(int argc, const char *argv[])
{
int ret;
printf("%d\n",MAX(90,78));
return 0;
}
4.訪問結(jié)構(gòu)體成員
4.1通過結(jié)構(gòu)體變量訪問
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char name[100];
char sex;
int high;
int score;
}stu,*stu_p;
int main(int argc, const char *argv[])
{ //指針指向桟區(qū)申請(qǐng)的空間
stu s1;
//strcpy(s1.name,"lisi");
//s1.name="lisi"; 這是錯(cuò)誤的,不能給數(shù)組賦值,數(shù)組名代表的是數(shù)組首地址,是一個(gè)常量,不能給常量賦值
scanf("%s",s1.name);
s1.sex='m';
printf("%s\n",s1.name);
return 0;
}
4.2通過結(jié)構(gòu)體指針間接訪問結(jié)構(gòu)體成員
法一:用指針指向棧區(qū)申請(qǐng)的空間
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char name[100];
char sex;
int high;
int score;
}stu,*stu_p;
int main(int argc, const char *argv[])
{ //指針指向桟區(qū)申請(qǐng)的空間
stu s1;
stu_p p=&s1;
(*p).high=100;
//strcpy(p->name,"lisi");
//s1.name="lisi"; 這是錯(cuò)誤的,不能給數(shù)組賦值,數(shù)組名代表的是數(shù)組首地址,是一個(gè)常量,不能給常量賦值
scanf("%s",p->name);
p->sex='m';
printf("%s\n",s1.name);
return 0;
}
法二:指針指向堆區(qū)申請(qǐng)的空間文章來源:http://www.zghlxwxcb.cn/news/detail-829322.html
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char name[100];
char sex;
int high;
int score;
}stu,*stu_p;
int main(int argc, const char *argv[])
{
//指針指向堆區(qū)申請(qǐng)的空間
stu_p p=(stu_p)malloc(sizeof(stu));
gets(p->name);
p->high=100;
p->sex='m';
printf("%s\n",p->name);
free(p);
p=NULL;
return 0;
}
5.結(jié)構(gòu)體數(shù)組
#include <stdio.h>
#include <string.h>
typedef struct{
char name[100];
int high;
char sex;
}stu;
int main(int argc, const char *argv[])
{
stu arr[3]={{"zhangsan",100,'m'},{"lisi",110,'m'}};
for(int i=0;i<3;i++){
printf("%s %d %c\n",(arr+i)->name,arr[i].high,arr[i].sex);
}
return 0;
}
6.內(nèi)存分配
文章來源地址http://www.zghlxwxcb.cn/news/detail-829322.html
到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu):動(dòng)態(tài)內(nèi)存分配+內(nèi)存分區(qū)+宏+結(jié)構(gòu)體的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!