题目: 定义一个数序列如下:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2))% 7.
给定A,B,n,请你计算f(n)的值。
输入:包括多组测试,每组测试包括一行3个整数A,B,n.以输入3个0表示结束测试,并且不用处理这组。
输出:对每一组测试,每行输出一个f(n)的值。
比如:
1 1 3
1 2 10
0 0 0
则应输出:
2
5
程序如下:
#include <stdio.h>
int A,B;
long Func(int n){
if(1==n||2==n)
return 1;
else
return (A*Func(n-1)+B*Func(n-2))%7;
}
int main(void){
int n;
printf("input:");
while(3==scanf("%d%d%d",&A,&B,&n)&&A!=0&&B!=0&&n!=0)
{
printf("Output:%ld\n",Func(n));
printf("input:");
}
return 0;
}
请问其中这一句中“3==scanf("%d%d%d",&A,&B,&n)&&A!=0&&B!=0&&n!=0”是什么意思?
while(3==scanf("%d%d%d",&A,&B,&n)&&A!=0&&B!=0&&n!=0)
谢谢
參考答案:因为在表达式中关系运算符==和!=的优先级高于逻辑运算符&&的优先级,所以式子表达的意思是:
3==scanf("%d%d%d",&A,&B,&n)由于函数scanf的返回值是输入变量的个数,所以作用是判断是否输入了三个数值
A!=0
B!=0
n!=0
是为了判定这三个数值是不是为零.
所以整个表达式的意思是(第一个答复)
A B n 都不是0
并且输入了三个字符