练习题:结构体数组

文章展示了如何在C语言中定义一个结构体来表示银行账户信息,包括账号、身份证号码、姓名、地址和账户金额。两种方法被提及:一种是直接在结构体内定义字符数组,另一种是定义指向字符的指针并在运行时动态分配内存。两种方法均通过用户输入来填充账户信息并进行打印。
摘要由CSDN通过智能技术生成

定义一个结构体类型,表示银行账户信息: 每个帐户包含账号,用户身份证号码,用户姓名,用户地址,账户金额。 然后,输入各个字段的值,保存到结构体变量中,并打印结构体的各个字段查看结果。

一、结构体内定义数组变量

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct bank_account //定义别名为account (typedef比宏定义好)
{
    char account_num[12]; //定义字符数组要留\0的空间,否则会出错
    char id[20];
    char name[10];
    char address[100];
    double  money;
}account;   //注意分号
int main()
{
    /*
    ****直接初始化方法****
    */
    //account lsh = {"88886666","410221199908245957","lushunhao","zhengzhou",5201314};  //初始化
    //printf("输出结果:\r\n用户账号:%s\r\n身份证号:%s\r\n用户姓名:%s\r\n用户地址:%s\r\n账户金额:%lf\r\n",mycnt.account_num,mycnt.id,mycnt.name,mycnt.address,mycnt.money);

    account mycnt;
    printf("请输入一个账户:\r\n");
    scanf("%s",mycnt.account_num);       //\n是为了匹配字符串后的换行
    printf("请输入一个身份证号:\r\n");
    scanf("%s",mycnt.id);
    printf("请输入一个姓名:\r\n");
    scanf("\n%s",mycnt.name);
    printf("请输入一个用户地址:\r\n");
    scanf("\n%s",mycnt.address);
    printf("请输入一个账户金额:\r\n");
    scanf("%lf",&mycnt.money);         //\n只能在输入字符串时使用
    printf("输出结果:\r\n用户账号:%s\r\n身份证号:%s\r\n用户姓名:%s\r\n用户地址:%s\r\n账户金额:%lf\r\n",mycnt.account_num,mycnt.id,mycnt.name,mycnt.address,mycnt.money);
}

输出样式:

请输入一个账户:
12345678901
请输入一个身份证号:
199909278888
请输入一个姓名:
张三那
请输入一个用户地址:
河南省郑州市二七区火车站
请输入一个账户金额:
5201314
输出结果:
用户账号:12345678901
身份证号:199909278888
用户姓名:张三那
用户地址:河南省郑州市二七区火车站
账户金额:5201314.000000

二、结构体内定义指针

  少量可以直接开辟空间(练习)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct bank_account
{
    char *account_num;
    char *id;
    char *name;
    char *address;
    double  money;
}account;   //注意分号
int main()
{
    account mycnt;
    mycnt.account_num = (char*)malloc(100*sizeof(char)); //为指针开辟空间
    mycnt.id = (char*)malloc(100*sizeof(char));
    mycnt.name = (char*)malloc(100*sizeof(char));
    mycnt.address = (char*)malloc(100*sizeof(char));

    printf("请输入一个账户:\r\n");
    scanf("%s",mycnt.account_num);       //\n是为了匹配字符串后的换行
    printf("请输入一个身份证号:\r\n");
    scanf("%s",mycnt.id);
    printf("请输入一个姓名:\r\n");
    scanf("\n%s",mycnt.name);
    printf("请输入一个用户地址:\r\n");
    scanf("\n%s",mycnt.address);
    printf("请输入一个账户金额:\r\n");
    scanf("%lf",&mycnt.money);         //\n只能在输入字符串时使用
    printf("用户账号:%s\r\n身份证号:%s\r\n用户姓名:%s\r\n用户地址:%s\r\n账户金额:%lf\r\n",mycnt.account_num,mycnt.id,mycnt.name,mycnt.address,mycnt.money);
}

输出样式:

请输入一个账户:
12345678901
请输入一个身份证号:
410221199909278888
请输入一个姓名:
张三
请输入一个用户地址:
河南省郑州市
请输入一个账户金额:
5201314
用户账号:12345678901
身份证号:410221199909278888
用户姓名:张三
用户地址:河南省郑州市
账户金额:5201314.000000

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值