C语言I—作业09

本文记录了一名学生在编程课程中完成的作业,包括数的各位数字之和、水仙花数、哥德巴赫猜想和素数和的函数实现。作业涉及循环、判断等基本结构,同时分享了学习过程中的难点与感悟,如数据结构的理解和代码调试技巧。
摘要由CSDN通过智能技术生成
这个作业属于哪个课程https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17327
这个作业要求在哪里https://bbs.csdn.net/topics/603700727
这个作业的目标<简单的for循环和while循环>
学号<20218554>

1. PTA作业

1.1 6-1 统计各位数字之和是5的数:
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。

函数接口定义:

int is( int number );
void count_sum( int a, int b );

函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。

1.1.1 贴图展示代码
在这里插入图片描述
1.1.2 数据处理

数据表达:用了变量number,a,b,sum,count,number为形参,a,b为形参,通过实参赋值,count,sum通过计算得来,类型为int。
数据处理:顺序结构,循环结构,判断结构。

1.1.3 PTA提交列表及说明
在这里插入图片描述
1.2 6-2 使用函数输出水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

函数接口定义:

int narcissistic( int number );
void PrintN( int m, int n );

1.2.1 贴图展示代码
在这里插入图片描述
1.2.2 数据处理

数据表达:用了变量x,y,m,n,sum,count,number,n,m为形参,number为形参,通过实参赋值,count,sum通过计算得来,类型为int。
数据处理:顺序结构,循环结构,判断结构。

1.2.3 PTA提交列表及说明
在这里插入图片描述
部分正确:忘记考虑水仙花的多位数判定条件

1.3 6-3 使用函数验证哥德巴赫猜想

本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

函数接口定义:

int prime( int p );
void Goldbach( int n );

1.3.1 贴图展示代码

在这里插入图片描述
在这里插入图片描述
1.3.2 数据处理

数据表达:用了变量p,n,i,j,flag,n,p为形参,通过实参赋值,i,j,flag分别为计数变量和素数标志,类型为int。
数据处理:顺序结构,循环结构,判断结构。

1.3.3 PTA提交列表及说明
在这里插入图片描述
答案错误:区间数没有考虑进去
部分正确:忘记考虑1,2,3

1.4 6-4 使用函数求素数和

使用函数求素数和
prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False. PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。

函数接口定义:

在这里描述函数接口:
prime§,返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和

1.4.1 贴图展示代码
在这里插入图片描述
1.4.2 数据处理

数据表达:用了变量p,n,i,m,flag,n,m,p为形参,通过实参赋值,i为计数变量,类型为int。
数据处理:顺序结构,循环结构,判断结构。

1.4.3 PTA提交列表及说明
在这里插入图片描述
答案错误:python的缩进格式问题

2.1 学习进度条

周/日期这周所花的时间代码行学到的知识点简介目前比较迷惑的问题
11/30-12/621h2100数据结构树的问题

2.2 累积代码行和博客字数
在这里插入图片描述
2.3 学习感悟
多看题吧,多刷题,自己一个个去琢磨一下每一行代码是干嘛的,怎么实现的,运行规则是怎样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的C语言图书管理系统的示例,它包括添加图书、查询图书、删除图书、借书和还书等功能: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 // 最大图书数量 // 图书结构体 typedef struct { char name[50]; // 图书名称 char id[20]; // 图书编号 float price; // 单价 char author[50]; // 作者 int status; // 存在状态,0表示未借出,1表示已借出 char borrower[50]; // 借书人姓名 char gender[10]; // 借书人性别 char student_id[20]; // 借书人学号 } Book; Book books[MAX_BOOKS]; // 图书数组 int num_books = 0; // 当前图书数量 // 添加图书 void add_book() { if (num_books >= MAX_BOOKS) { printf("图书数量已达到上限,无法添加新图书!\n"); return; } Book book; printf("请输入图书名称:"); scanf("%s", book.name); printf("请输入图书编号:"); scanf("%s", book.id); printf("请输入图书单价:"); scanf("%f", &book.price); printf("请输入图书作者:"); scanf("%s", book.author); book.status = 0; // 新添加的图书状态默认为未借出 strcpy(book.borrower, ""); strcpy(book.gender, ""); strcpy(book.student_id, ""); books[num_books++] = book; printf("添加图书成功!\n"); } // 查询图书 void search_book() { char id[20]; printf("请输入要查询的图书编号:"); scanf("%s", id); for (int i = 0; i < num_books; i++) { if (strcmp(books[i].id, id) == 0) { printf("图书名称:%s\n", books[i].name); printf("图书编号:%s\n", books[i].id); printf("图书单价:%.2f\n", books[i].price); printf("图书作者:%s\n", books[i].author); if (books[i].status == 0) { printf("图书状态:未借出\n"); } else { printf("图书状态:已借出\n"); printf("借书人姓名:%s\n", books[i].borrower); printf("借书人性别:%s\n", books[i].gender); printf("借书人学号:%s\n", books[i].student_id); } return; } } printf("未找到该图书!\n"); } // 删除图书 void delete_book() { char id[20]; printf("请输入要删除的图书编号:"); scanf("%s", id); for (int i = 0; i < num_books; i++) { if (strcmp(books[i].id, id) == 0) { for (int j = i; j < num_books - 1; j++) { books[j] = books[j + 1]; } num_books--; printf("删除图书成功!\n"); return; } } printf("未找到该图书!\n"); } // 借书 void borrow_book() { char id[20]; printf("请输入要借阅的图书编号:"); scanf("%s", id); for (int i = 0; i < num_books; i++) { if (strcmp(books[i].id, id) == 0) { if (books[i].status == 1) { printf("该图书已被借出!\n"); return; } printf("请输入借书人姓名:"); scanf("%s", books[i].borrower); printf("请输入借书人性别:"); scanf("%s", books[i].gender); printf("请输入借书人学号:"); scanf("%s", books[i].student_id); books[i].status = 1; printf("借书成功!\n"); return; } } printf("未找到该图书!\n"); } // 还书 void return_book() { char id[20]; printf("请输入要归还的图书编号:"); scanf("%s", id); for (int i = 0; i < num_books; i++) { if (strcmp(books[i].id, id) == 0) { if (books[i].status == 0) { printf("该图书未被借出!\n"); return; } books[i].status = 0; strcpy(books[i].borrower, ""); strcpy(books[i].gender, ""); strcpy(books[i].student_id, ""); printf("还书成功!\n"); return; } } printf("未找到该图书!\n"); } int main() { int choice; while (1) { printf("请选择要执行的操作:\n"); printf("1.添加图书\n"); printf("2.查询图书\n"); printf("3.删除图书\n"); printf("4.借书\n"); printf("5.还书\n"); printf("6.退出\n"); printf("请输入操作编号:"); scanf("%d", &choice); switch (choice) { case 1: add_book(); break; case 2: search_book(); break; case 3: delete_book(); break; case 4: borrow_book(); break; case 5: return_book(); break; case 6: exit(0); default: printf("无效的操作编号,请重新输入!\n"); break; } } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Poison.Scum

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值