【PAT】B1002. 写出这个数

题目描述:

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:
1234567890987654321123456789
输出样例:
yi san wu
提交代码:
#include <stdio.h>
#include <string.h>

int main(void) { 
    char str[110];
    //gets(str);
    scanf("%s",str);
    int len=strlen(str);
    int i,slen=0,sum=0,a[len],num[3];  //和最大值为900
    char ans[10][5]={
        "ling","yi","er","san","si","wu","liu","qi","ba","jiu"
    }; //分号不能少,0-9不能写错
    
    for(i=0;i<len;i++){
        a[i]=str[i]-'0';
        sum+=a[i];
    }
  //printf("%d\n",sum);
  while(sum!=0){
      num[slen++]=sum%10;
      sum/=10;
  }
  
  for(i=slen-1;i>=0;i--){  //下标从slen-1开始!
      printf("%s",ans[num[i]]);
      if(i!=0) printf(" ");
  }
  return 0;
}

代码概述 本题要求创建借阅表 `borrow`,需定义主码和外码(关联图书表与读者表),设置“是否续借”字段默认值为 `'F'`,并确保据完整性。还书时间为 NULL 表示未还。创建后插入指定的 10 条借阅记录。 代码解析 ```sql -- 创建表 borrow CREATE TABLE borrow ( borrow_id INT PRIMARY KEY, -- 借书编号为主码 book_id VARCHAR(10) NOT NULL, -- 图书编号,外键引用 book(book_id) reader_id VARCHAR(12) NOT NULL, -- 读者编号,外键引用 reader(reader_id) borrow_time DATETIME NOT NULL, -- 借书时间,含时分秒 due_date DATE NOT NULL, -- 应还时间 return_time DATETIME, -- 还书时间,可为空(表示未还) is_renewed CHAR(1) DEFAULT 'F' NOT NULL CHECK (is_renewed IN ('T', 'F')) -- 是否续借,默认F,只能取'T'或'F' -- 定义外键约束 CONSTRAINT fk_book FOREIGN KEY (book_id) REFERENCES book(book_id), CONSTRAINT fk_reader FOREIGN KEY (reader_id) REFERENCES reader(reader_id) ); ``` ```sql -- 插入题目中给出的据 INSERT INTO borrow (borrow_id, book_id, reader_id, borrow_time, due_date, return_time, is_renewed) VALUES (1, 'B1002', '202221213061', '2024-09-15 09:09:09', '2024-12-14', '2024-12-14 17:17:17', 'T'), (2, 'B1001', '202221213061', '2024-12-12 11:11:11', '2025-02-11', '2025-01-10 15:15:15', 'F'), (3, 'C1234', '202121086031', '2025-03-02 12:12:12', '2025-05-01', '2025-04-05 14:14:14', 'F'), (4, 'B0001', '21086001', '2025-03-05 10:10:10', '2025-06-05', '2025-05-04 16:16:16', 'F'), (5, 'C1001', '21086001', '2025-07-03 13:13:13', '2025-12-02', NULL, 'T'), (6, 'B1002', '202321213033', '2025-07-05 14:14:14', '2025-10-04', NULL, 'F'), (7, 'C1234', '202221213061', '2025-07-06 13:14:15', '2025-10-05', NULL, 'T'), (8, 'C1234', '202321213033', '2025-09-05 15:15:15', '2025-12-04', NULL, 'F'), (9, 'C1001', '202121086031', '2025-09-13 16:16:16', '2025-12-12', NULL, 'F'), (10, 'B1002', '21086001', '2025-09-15 17:17:17', '2026-02-14', NULL, 'T'); ``` 知识点 1. **FOREIGN KEY 约束**:用于建立表间关系,保证引用的记录在主表中存在,维护据一致性。 2. **DEFAULT 默认值**:当字段未提供值时使用默认值,如 `is_renewed` 默认为 `'F'`。 3. **CHECK 约束**:限制字段取值范围,如 `is_renewed` 只能是 `'T'` 或 `'F'`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值