题目:彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
输入格式:
输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。
输出格式:
对每张彩票,如果它是幸运的,就在一行中输出You are lucky!否则输出 Wish you good luck.。
输入样例:
2
233008
123456
输出样例:
You are lucky!
Wish you good luck.
本人思路如下:
先确定彩票个数,利用循环将每张彩票数值存进i中,将彩票数字一分为二,分别计算前三个数之和,与后三个数之和,进行判断,相等则输出You are lucky!,否则则输出Wish you good luck.。
(2)利用数组的话则只需将彩票上的数字分别存储,比较数组前三位与后三位存储的数据。
程序代码如下:
#include<stdio.h>
int main() {
int n;
int a, b;
scanf("%d", &n);//确定彩票张数//
int j = 1, i = 0;
while (n--) {//每输入一次,减少一次彩票张数//
scanf("%6d", &i);
int sum1 = 0, S1 = 0, sum2 = 0, S2 = 0;
sum1 = i % 1000;//彩票后三位放在sum1中//
sum2 = i / 1000;//彩漂前三位放在sum2中//
while (sum1) {//sum1!=0话,继续循环//
a = sum1 % 10;//利用循环求每一位//
sum1 /= 10;
S1 = S1 + a;//将前三位相加//
}
while (sum2) {
b = sum2 % 10;
sum2 /= 10;
S2 = S2 + b;//后三位相加//
}
if (S1 == S2) {//进行判断//
printf("You are luck!");
}
else {
printf("Wish you good luck.");
}
if (n!=0) {//判断是否为最后一张彩排,若是则无需换行//
printf("\n");
}
}
return 0;
}
程序代码如下(利用数组):
//int main() {
// int n, arr[10], k;
// scanf("%d", &n);
// while (n--) {
// scanf("%d", &k);
// int i = 0;
// for (i = 0; i < 6; i++) {
// arr[i] = k % 10;//将彩票每一位分别存在数组中//
// k /= 10;
// }
// if (arr[0] + arr[1] + arr[2] == arr[3] + arr[4] + arr[5]) {//比较数组前三位与后三位//
// printf("You are lucky!");
// }
// else {
// printf("Wish you good luck.");
// }
// if (n != 0) {
// printf("\n");
// }
// }
// return 0;
//}