结构体练习题

本文展示了C语言中的结构体定义、输入与输出操作,包括学生数据的录入与及格检查,以及冒泡排序算法和判断闰年的日期计算功能。
摘要由CSDN通过智能技术生成
#include <stdio.h>  
  
#define STUDENT_NUM 5  
#define PASS_MARK 60  
  
typedef struct {  
    int num;  
    char name[20];  
    int score;  
} Student;  
  
void input(Student students[], int n) {  
    for(int i = 0; i < n; i++) {  
        printf("请输入第%d个学生的数据(学号 姓名 分数):\n", i+1);  
        scanf("%d %s %d", &students[i].num, students[i].name, &students[i].score);  
    }  //name是数组,不用&!!!!!
}  
  
void print(Student students[], int n) {  
    printf("及格学生的数据记录如下:\n");  
    for(int i = 0; i < n; i++) {  
        if(students[i].score >= PASS_MARK) {  
            printf("%d %s %d\n", students[i].num, students[i].name, students[i].score);  
        }  
    }  
}  
  
int main() {  
    Student students[STUDENT_NUM];  
    input(students, STUDENT_NUM);  
    print(students, STUDENT_NUM);  
    return 0;  
}
#include <stdio.h>  
#include <string.h>  
  
// 候选人结构体  
typedef struct {  
    char name[20]; // 候选人名字  
    int votes;     // 候选人票数  
} Candidate;  
  
// 冒泡排序函数,按照得票从多到少排序,若票数相同则保持原有顺序  
void bubbleSort(Candidate candidates[], int n) {  
    for (int i = 0; i < n - 1; i++) {  
        for (int j = 0; j < n - i - 1; j++) {  
            if (candidates[j].votes < candidates[j + 1].votes) {  
                // 交换两个候选人信息  
                Candidate temp = candidates[j];  
                candidates[j] = candidates[j + 1];  
                candidates[j + 1] = temp;  
            }  
        }  
    }  
}  
  
// 增加票数的函数  
void addVote(Candidate candidates[], int n, char *name) {  
    for (int i = 0; i < n; i++) {  
        if (strcmp(candidates[i].name, name) == 0) {  
            candidates[i].votes++;  
            return;  //
        }  
    }  
}  
  
int main() {  
    const int CANDIDATE_COUNT = 3; // 候选人数量  
    const int VOTE_COUNT = 10;     // 选票数量  

    Candidate candidates[CANDIDATE_COUNT] = {{"zhangxiao", 0}, {"wangman", 0}, {"lisheng", 0}}; // 初始化候选人数组  
    //结构体统称+具体的结构体名称;想要成为结构体数组,就在结构体后面直接加中括号
	char vote[20]; // 用于临时存储每张选票上的候选人名字  
  
    // 输入选票内容并统计票数  
    for (int i = 0; i < VOTE_COUNT; i++) {  
        scanf("%s", vote); // 读取一张选票上的名字  
        addVote(candidates, CANDIDATE_COUNT, vote); // 太巧妙了,怎么让输入内容当作函数实参,就是提前设输入内容为一个变量
    }  
  
    // 使用冒泡排序法对候选人进行排序  
    bubbleSort(candidates, CANDIDATE_COUNT);  
  
    // 输出排序后的结果  
    for (int i = 0; i < CANDIDATE_COUNT; i++) {  
        printf("%s %d\n", candidates[i].name, candidates[i].votes); // 输出候选人名字和票数  
    }  
  
    return 0;  
}
#include <stdio.h>  
  
// 定义一个结构体来存储日期  
typedef struct {  
    int year;  
    int month;  
    int day;  
} Date;  
  
// 判断是否为闰年  
int isLeapYear(int year) {  
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);  
}  
  
// 计算日期是该年的第几天  
int days(Date date) {  
    int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  
    int totalDays = 0;  
  
    // 如果年份是闰年,将二月的天数设为29天  
    if (isLeapYear(date.year)) {  
        monthDays[1] = 29;  
    }  
  
    // 计算总天数  
    for (int i = 0; i < date.month - 1; i++) {  
        totalDays += monthDays[i];  
    }  
    totalDays += date.day;  
  
    return totalDays;  
}  
  
int main() {  
    Date date;  
    scanf("%d %d %d", &date.year, &date.month, &date.day);  
    int dayOfYear = days(date);  
    printf("%d\n", dayOfYear);  
    return 0;  
}

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值