2021-04-01(结构体 宏)

复合类型结构

1.结构体 2.共用体
结构体:

struct Car
{
        char chepai[20];
         char color[20];
          int num;
};
int main()
{
  struct Car A={"lu-123456","black",5};
printf("%s%s%d\n",A.chepai,A.color,A.num);
scanf("%s%s%d",A.chepai,A.color,&A.num);
//A.color="blue"//不能这么写,字符串不能直接给值
//strcop(A.color,"blue")
//A.num=7;
printf("%s%s%d\n",A.chepai,A.color,A.num);
a[i].chepai,a[i].color
return 0;
}

现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100


#include
struct stu
{
    char num[20];
    char name[20];
    int a;
    int b;
    int c;

};

int main()
{
    int i,n;
    struct stu A[100];
    scanf("%d",&n);
    for(i=0;i

#include
struct stu
{
    char num[20];
    char name[20];
    int a;
    int b;
    int c;

};
int input(struct stu A[],int n)
{       
    int i;
    for(i=0;i
image.png

//共用体
union students
{
    int name;
    int number'
    char sex;
}
int main()
{
    union students s;
    s.number=101;
    s.name=90;
    s.sex='a';
}
共用体共用内存最大的那块

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。


#include
struct stu
{
    int year;
    int month;
    int day;
};
int main()
{   
    struct stu a;
    int i;
    int sum=0;
    scanf("%d%d%d",&(a.year),&(a.month),&(a.day));
    int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};

    for(i=0;i2)
    {
        sum++;
    }

    }
    printf("%d",sum);
    return 0;


}

宏命令

define N 123

用N 来替换 123

undef 结束

define Max(x,y) x>y?x:y

include

sqrt 平方根函数
a=sqrt(25);
a=5;
fabs(-5)=5 绝对值函数
pow(10,6) 10的六次方


输入两个整数,求他们相除的余数。用带参的宏来实现,编程序。


#include
#define N(a,b) t=a%b;
int main(){
    int a,b,t;
    scanf("%d%d",&a,&b);
    t=N(a,b);
    printf("%d\n",t);
    return 0;
}

三角形面积=SQRT(S(S-a)(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带实参的宏名来求面积area。


#include
#include
#define s(a,b,c) (a+b+c)/2
#define area(S,a,b,c) sqrt(S*(S-a)*(S-b)*(S-c))
int main()
{
    float a,b,c,S,area,n,m;
    scanf("%f%f%f",&a,&b,&c);
    n=s(a,b,c);
    m=area(n,a,b,c);
    printf("%.3f\n",m);
   
    return 0;
    }

给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y) (读者设计的字符串)


#include
#include
#define LEAP_YEAR(y)  y%100 !=0 && y%4==0 || y%400==0
int main()
{   int y;
    scanf("%d",&y);
    if(LEAP_YEAR(y))
    {
        printf("L\n");
    }   
    else
        printf("N\n");
    return 0;
}

分别用函数和带参的宏,从三个数中找出最大的数。


include

define MAX(x,y,z) (x>y?x:y)>z?(x>y?x:y):z

double max(double x,double y,double z)
{
return (x>y?x:y)>z?(x>y?x:y):z;
}

int main()
{
double x,y,z,max1,max2;
scanf("%lf%lf%lf",&x,&y,&z);
max1 = MAX(x,y,z);
max2 = max(x,y,z);
printf("%.3lf\n%.3lf\n",max1,max2);
return 0;
}

你可能感兴趣的:(2021-04-01(结构体 宏))