PTA 习题猜数字
思路:
由于输入的是数值,首先将答案由个位数目开始依次提出并存储在一个数组内,方便之后的比较。依次输入猜测的数,首先比较长度是否与答案相同,不同直接输出“NO”; 其次从个位数开始依次与答案数进行比较,用nocount记录与答案不同的个数,若nocount > 1 则输出“NO”,若nocount < 1,则输出“YES”。
代码:
//题目: 猜数字
#include <stdio.h>
#define maxsize 10000000
int a[maxsize], b[maxsize];
void fenkai(int d[], int f);
int main(){
int answer, guess, nocount = 0;
scanf("%d", &anser);
// 将答案的值从个位依次输入数组a中
fenkai(a, answer);
// 将输入猜测的数字与答案做比较,当输入数字 == -1 或 没有输入时,循环结束
while(scanf("%d", &guess) != 0 && guess != -1){
//将猜测的值从个位依次输入数组b中
fenkai(b, guess);
//比较
//长度相等
if(*a == *b){
for(int i = 1; i < *a; i++){
if(*(b+i) != *(a+i)){
nocount++; // nocount记录不相等的数字有几个
}
}
if(nocount > 1)
printf("NO");
else
printf("YES");
}
//长度不相等
else
printf("NO");
}
return 0;
}
void fenkai(int d[], int f){
/* 将传入的数值f从个位数开始
* 依次放入到数组d中 */
int length = 1;
do{
d[length] = f % 10;
f /= 10;
length++;
}while(f);
d[0] = length;
}
浙公网安备 33010602011771号