(一)概述
(一)彩票是幸运的
(二)题目
Ⅰ 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。
对每张彩票,如果它是幸运的,就在一行中输出 You are lucky!
;否则输出 Wish you good luck.
。
2
233008
123456
输出样例:
You are lucky!
Wish you good luck.
题目分析: 怎么去表达彩票号码呢?怎么去存储每一次对彩票的幸运的鉴定呢?怎么样去输出呢?
思路:用字符串存储彩票,用数组来存储对对彩票的幸运的鉴定,用条件语句输出。
具体代码:
#include
#include
int main()
{
char a[10] = { 0 };
int b[100] = { 0 }, n = -1;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", a);
//因为彩票长度固定
if ((a[0] + a[1] + a[2]) == (a[3] + a[4] + a[5]))
{
b[i] = 1;
}
}
for (int i = 0; i < n; i++)
{
printf("%s", (b[i] == 1) ? "You are lucky!\n" : "Wish you good luck.\n");
}
return 0;
}
Ⅱ AI 英文问答程序
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
I
;can you
、could you
对应地换成 I can
、I could
—— 这里“独立”是指被空格或标点符号分隔开的单词;I
和 me
换成 you
;?
换成惊叹号 !
;输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。
按题面要求输出,每个 AI 的回答前要加上 AI:
和一个空格。
6
Hello ?
Good to chat with you
can you speak Chinese?
Really?
Could you show me 5
What Is this prime? I,don 't know
Hello ?
AI: hello!
Good to chat with you
AI: good to chat with you
can you speak Chinese?
AI: I can speak chinese!
Really?
AI: really!
Could you show me 5
AI: I could show you 5
What Is this prime? I,don 't know
AI: what Is this prime! you,don't know
Ⅲ 胎压检测
小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。
让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信息。报警规则如下:
输入在一行中给出 6 个 [0, 400] 范围内的整数,依次为 1~4 号轮胎的胎压、最低报警胎压、以及胎压差的阈值。
根据输入的胎压值给出对应信息:
Normal
;Warning: please check #X!
,其中 X
是出问题的轮胎的编号;Warning: please check all the tires!
。242 251 231 248 230 20
Normal
242 251 232 248 230 10
Warning: please check #3!
240 251 232 248 240 10
Warning: please check all the tires!
题目分析: 怎么去存储数据呢?怎么去实现文字到代码的转换呢?怎么样去输出呢?
思路:用数组存储数据,用条件语句输出实现对条件的实现,用条件来判断该如何输出。
具体代码:
#include
int main()
{
int b[100] = { 0 }, max = -1, num = 0, point = 0;
for (int i = 0; i < 6; i++) {
scanf("%d", &b[i]);
if (i == 0) max = b[0];
else if (b[i] > max) max = b[i];
}
//数据处理!
for (int i = 0; i < 4; i++) {
if ((max - b[i] > b[5]) || (b[i] < b[4]))
{
num++;
point = i;
}
}
if (num == 0)
{
printf("Normal");
}
else if (num >= 2) {
printf("Warning: please check all the tires!");
}
else {
printf("Warning: please check #%d!", ++point);
}
return 0;
}
Ⅳ 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1
。
输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 .
时,输入结束,此行不算在朋友信息里。
首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1
,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1
的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。
如果朋友从头到尾都没提 chi1 huo3 guo1
这个关键词,则在第二行输出一个表情 -_-#
。
Hello!
are you there?
wantta chi1 huo3 guo1?
that's so li hai le
our story begins from chi1 huo3 guo1 le
.
5
3 2
Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that's so li hai le
our story begins from ci1 huo4 guo2 le
.
5
-_-#
题目分析: 怎么实现每段输入?用怎么样的数据类型去操作?
思路:二维数组储存每一段,第二种为利用while,每次char s[80]一个字符串再当场处理,处理以后再读取下一段句子重新定义一个char s[80]。
具体代码:我用的是Vs
#include
#include
#include
int main()
{
char target[15] = "chi1 huo3 guo1";
char s[100][80];
int i, j;
int num1 = 0, num2 = 0;//分别是总信息数和有火锅的信息数
int first;
for (i = 0; i <= 100; i++)
{
gets_s(s[i]);
if (s[i][0] == '.' && strlen(s[i]) == 1)//有.且单独一排则退出
{
num1 = i;//总信息数,注意.这行不算信息数
break;
}
if (strstr(s[i], target) != NULL)
{
num2++;
if (num2 == 1)
{
first = i + 1;//首次出现的行数0
}
}
}
if (num2 != 0)
{
printf("%d\n", num1);
printf("%d %d", first, num2);
}
else
{
printf("%d\n", num1);
printf("-_-#");
}
return 0;
}