前言:内容包括:题目,代码实现,大致思路,代码解读
题目:
彩票的号码有 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<stdio.h>
#include<string.h>
void Judge(char* left, char* right)
{
int countleft = 0;
int sumleft = 0;
while (countleft != 3)
{
sumleft += *left - '0';
countleft++;
left++;
}
int countright = 0;
int sumright = 0;
while (countright != 3)
{
sumright += *right - '0';
countright++;
right--;
}
if (sumleft == sumright)
{
printf("You are lucky!\n");
}
else
{
printf("Wish you good luck.\n");
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
char arr[100] = { 0 };
for (i = 0; i < n; i++)
{
scanf("%s", arr);
int len = strlen(arr);
Judge(arr, arr + len - 1);
}
return 0;
}
大致思路:
1 将输入的每一串数字看成字符串,存入字符数组中
2 使用两个指针分别遍历字符数组的前3个字符,后3个字符
并计算前三个字符转成数字后的和,前三个字符转成数字后的和,判断是否相等
数字字符-'0'=数字
代码解读:
函数部分
void Judge(char* left, char* right)
{
int countleft = 0;
int sumleft = 0;
while (countleft != 3)
{
sumleft += *left - '0';
countleft++;
left++;
}
int countright = 0;
int sumright = 0;
while (countright != 3)
{
sumright += *right - '0';
countright++;
right--;
}
if (sumleft == sumright)
{
printf("You are lucky!\n");
}
else
{
printf("Wish you good luck.\n");
}
}
函数Judge实现判断并输出的功能,接收指向字符串首元素的指针left,指向末尾元素的指针right
使用countleft统计前半部分字符的个数,到了3就停止相加
使用countright统计后半部分字符的个数,到了3就停止相加
sumleft中存放的是前3个数字之和,sumright存放的是后3个数字之和
主体部分
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
char arr[100] = { 0 };
for (i = 0; i < n; i++)
{
scanf("%s", arr);
int len = strlen(arr);
Judge(arr, arr + len - 1);
}
return 0;
}
for循环控制循环次数
每次以字符串的形式读取一串数字,这是将每个数字转化成了数字字符的形式
读取后使用Judge函数判断这串数字,传给指向字符串首元素的指针arr,指向末尾元素的指针arr+len-1