目录
二、P1055 [NOIP2008 普及组] ISBN 号码
一、P4414 [COCI2006-2007#2] ABC
代码实现:
#include <stdio.h>
void swap(int *x, int *y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int A = 0;
int B = 0;
int C = 0;
scanf("%d %d %d", &A, &B, &C);
// 1. 对 A、B、C 进行排序,使得 A < B < C
if (A > B)
swap(&A, &B);
if (A > C)
swap(&A, &C);
if (B > C)
swap(&B, &C);
// 2. 按照指定顺序输出
char order[4] = { 0 }; // 注意:order 字符数组中还要存放字符串的结束标志 '\0'
scanf("%s", order);
int i = 0;
for (i = 0; i < 3; i++)
{
if (order[i] == 'A')
printf("%d ", A);
else if (order[i] == 'B')
printf("%d ", B);
else if (order[i] == 'C')
printf("%d ", C);
}
return 0;
}
二、P1055 [NOIP2008 普及组] ISBN 号码
ISBN - International Standard Book Number,即国际标准书号。
代码实现一:
#include <stdio.h>
int main()
{
char isbn[14] = { 0 }; // 9 位数字、1 位识别码、3 位分隔符以及一个字符串结束标志 '\0'
scanf("%s", isbn);
int sum = 0;
int i = 0;
int j = 1;
for (i = 0; i <= 10; i++) // x-xxx-xxxxx
{
if (isbn[i] != '-')
{
sum += (isbn[i] - '0') * j;
j++;
}
}
// 注意:当 sum % 11 所得的余数为 10 时,识别码为大写字母 X
if (sum % 11 == 10)
{
if (isbn[12] == 'X')
{
printf("Right\n");
}
else
{
isbn[12] = 'X';
printf("%s\n", isbn);
}
}
else
{
if (sum % 11 == (isbn[12] - '0'))
{
printf("Right\n");
}
else
{
isbn[12] = sum % 11 + '0';
printf("%s\n", isbn);
}
}
return 0;
}
代码实现二:
#include <stdio.h>
int main()
{
char isbn[14] = { 0 }; // 9 位数字、1 位识别码、3 位分隔符以及一个字符串结束标志 '\0'
char id_code[] = "0123456789X"; // 识别码序列
scanf("%s", isbn);
int sum = 0;
int i = 0;
int j = 1;
for (i = 0; i <= 10; i++) // x-xxx-xxxxx
{
if (isbn[i] != '-')
{
sum += (isbn[i] - '0') * j;
j++;
}
}
if (isbn[12] == id_code[sum % 11])
{
printf("Right\n");
}
else
{
isbn[12] = id_code[sum % 11];
printf("%s\n", isbn);
}
return 0;
}