E - A + B解题报告

本文介绍了一种将英文单词表示的数字转换为整数,并实现两个数相加的方法。通过使用字符串数组来映射英文单词到其对应的数值,程序能够解析输入的英文数字并计算它们的和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E - A + B
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u

Description

读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
 

Input

测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
 

Output

对每个测试用例输出1行,即A+B的值.
 

Sample Input

one + two = three four + five six = zero seven + eight nine = zero + zero =
 

Sample Output

3 90 96 当时就认为需要对字符串英文与整数进行相互转换,于是用了一个字符串的数组。下标就是它代表的整数。
//A + B
#include <stdio.h>
#include <string.h>

int GetIntFromWord(char n[]);

char num[10][10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};

void main()
{
	char n[10];
	int a1,a2,b1,b2;
	while (1)
	{
		scanf("%s",n);
		a1 = GetIntFromWord(n);
		getchar();
		scanf("%s",n);
		if (strcmp(n,"+") != 0)
		{
			a2 = GetIntFromWord(n);
			getchar();
			getchar();
		}
		else
			a2 = -1;
		getchar();
		scanf("%s",n);
		b1 = GetIntFromWord(n);
		getchar();
		scanf("%s",n);
		if (strcmp(n,"=") != 0)
		{
			b2 = GetIntFromWord(n);
			getchar();
			getchar();
		}
		else
			b2 = -1;

		if (a2 != -1)
			a1 = a1 * 10 + a2;
		if (b2 != -1)
			b1 = b1 * 10 + b2;

		if (a1 == 0 && b1 == 0)
			break;

		printf("%d\n",a1 + b1);

	}
}

int GetIntFromWord(char n[])
{
	int i;
	for (i = 0;i < 10;i ++)
	{
		if (strcmp(n,num[i]) == 0)
			return i;
	}
	return -1;
}

### 微信小程序古诗词答题系统的E-R图设计 #### 1. 实体分析 在构建微信小程序的古诗词答题系统时,需要定义几个核心实体及其属性。以下是可能涉及的主要实体: - **用户 (User)** 用户是参与答题的核心角色,其主要属性包括但不限于:`用户名`, `密码`, `邮箱`, `手机号码`, `注册日期` 等。 - **题目 (Question)** 题目是答题系统的关键部分,其属性通常包括:`题目ID`, `题目内容`, `选项A`, `选项B`, `选项C`, `选项D`, `正确答案`, `难度等级`, `所属分类` 等[^4]。 - **答题记录 (AnswerRecord)** 记录用户的答题情况,用于统计成绩和历史回顾。其属性可以包括:`记录ID`, `用户ID`, `题目ID`, `提交答案`, `是否正确`, `答题时间` 等。 - **管理员 (Admin)** 负责维护系统中的数据,如添加新题目、更新题目信息等。管理员的相关属性包括:`管理员ID`, `姓名`, `权限级别` 等。 - **分类 (Category)** 对题目进行分类管理,便于用户筛选特定类型的题目。其属性一般为:`分类ID`, `分类名称`, `描述` 等。 --- #### 2. 属性关系说明 各实体之间的关系如下: - **用户 和 答题记录** 是一对多的关系(一个用户可以有多条答题记录)。 - **题目 和 答题记录** 是一对一或多对一的关系(一条答题记录对应一道题目)。 - **管理员 和 题目** 是一对多的关系(一位管理员可以创建多个题目)。 - **题目 和 分类** 是多对多的关系(一道题目可以属于多个分类,一个分类下也可以有多个题目)。 --- #### 3. E-R图示意 以下是基于以上分析绘制的简化版E-R图: ```plaintext +------------------+ +--------------------+ | User |-------| AnswerRecord | +------------------+ +--------------------+ | userId | | recordId | | username |<----- | userId | | password | | questionId | | email | | submittedAnswer | | phone | | isCorrect | | registrationDate | | answerTime | +------------------+ +--------------------+ +-------------------+ +------------------+ | Question |-------| Category | +-------------------+ +------------------+ | questionId | | categoryId | | content |<----->| categoryName | | optionA | | description | | optionB | +------------------+ | optionC | | optionD | | correctAnswer | | difficultyLevel | | adminId | +-------------------+ +------------------+ | Admin | +------------------+ | adminId | | name | | permissionLevel | +------------------+ ``` --- #### 4. 数据库表结构设计 根据E-R图的设计思路,以下是对应的数据库表设计方案: ##### 表1: 用户表 (`users`) ```sql CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(100), phone VARCHAR(15), registration_date DATETIME DEFAULT CURRENT_TIMESTAMP ); ``` ##### 表2: 题目表 (`questions`) ```sql CREATE TABLE questions ( question_id INT PRIMARY KEY AUTO_INCREMENT, content TEXT NOT NULL, option_a VARCHAR(255) NOT NULL, option_b VARCHAR(255) NOT NULL, option_c VARCHAR(255) NOT NULL, option_d VARCHAR(255) NOT NULL, correct_answer CHAR(1) CHECK(correct_answer IN (&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;)), difficulty_level ENUM(&#39;Easy&#39;, &#39;Medium&#39;, &#39;Hard&#39;) DEFAULT &#39;Easy&#39;, category_id INT, admin_id INT, FOREIGN KEY(category_id) REFERENCES categories(category_id), FOREIGN KEY(admin_id) REFERENCES admins(admin_id) ); ``` ##### 表3: 答题记录表 (`answer_records`) ```sql CREATE TABLE answer_records ( record_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, question_id INT NOT NULL, submitted_answer CHAR(1), is_correct BOOLEAN DEFAULT FALSE, answer_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(question_id) REFERENCES questions(question_id) ); ``` ##### 表4: 管理员表 (`admins`) ```sql CREATE TABLE admins ( admin_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, permission_level TINYINT DEFAULT 1 COMMENT &#39;1=Basic, 2=Advanced&#39; ); ``` ##### 表5: 分类表 (`categories`) ```sql CREATE TABLE categories ( category_id INT PRIMARY KEY AUTO_INCREMENT, category_name VARCHAR(50) NOT NULL, description TEXT ); ``` --- #### 5. 设计注意事项 - 在实际开发过程中,需考虑字段长度、索引优化等问题以提升查询效率。 - 如果未来扩展性强,则可以在现有基础上增加更多的关联表或字段,例如用户积分体系、排行榜展示等[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值