项目场景:
C语言
输入输出类型匹配
问题描述
提示:这里描述项目中遇到的问题:
输入输出类型不匹配,这类问题编译器可以通过,但结果是会出错的!
例如
long long n; //定义变量
scanf("%d", &n); //输入变量
printf("%d", n); //输出变量
原因分析:
long long n; //定义变量
scanf("%d", &n); //输入变量应该用lld
printf("%d", n); //输出变量也应该用lld
解决方案:
long long n;
scanf("%lld", &n);
printf("%lld", n);
常见打印格式及含义
%hd --> short 类型
%d --> int 类型
%ld --> long 类型
%lld --> long long 类型
%hu --> unsigned short 类型
%u --> unsigned int 类型
%lu --> unsigned long 类型
%llu --> unsigned long long 类型
问题举例:
题目描述
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”。斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8...... 这个数列从第3项开始,每一项都等于前两项之和,第一项和第二项为1,给出一个整数n,求出第n项的值。
输入
一行一个整数n (1<=n<=60)
输出
一行一个整数表示第n项值
样例输入
5
样例输出
5
错误答案
#include<stdio.h>
int main()
{
long long a, b, c, i, n;
scanf("%lld", &n);
a = 1;
b = 1;
c = 1;
for (i = 3; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%lld", c);
return 0;
} //输入5时
输出为1
正确代码
#include<stdio.h>
int main()
{
long long a, b, c, i, n;
scanf("%lld", &n);
a = 1;
b = 1;
c = 1;
for (i = 3; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%lld", c);
return 0;
}