1.最简单的一类问题:输入a,b.求a+b.
解决:
#include<stdio.h>
int main()
{int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
return 0;
}
输入:2 3
输出:5
2.输入多组 数据a,b,每组一行, 以EOF做结束
解决:
#include<stdio.h>
int main()
{int a,b;
while(scanf("%d %d",&a,&b)
!=EOF)
printf("%d\n",a+b);
return 0;
}
输入:2 3
输出:5
输入:1 2
输出:3
依次循环下去。。。
3.输入第1行为一个整数n,下面有n组测试数据,每组1行,为2个整数
#include<stdio.h>
int main()
{int n,i,a,b;
scanf("%d\n",&n);
for(i=0;i<n;i++)
{ (注意打上中括号,来规定范围)
scanf("%d %d",&a,&b);
printf("%d\n",a+b);}
return 0;
}
输入:3
1 2
输出: 3
输入: 3 4
输出:7
输入:3 6
输出:9
结束
4.输入数据有多组,每组一行,输入以0 0结束。
解决:
#include<stdio.h>
int main()
{int a,b;
if(a==0&&b==0)return 0;
while(scanf("%d %d",&a,&b)
==2&&(a!=0||b!=0))
printf("%d\n",a+b);
return 0;}
输入:2 3
输出:5
输入:4 5
输出:9(可输无数组数据,直至输入0 0结束)
输入:0 0
结束
5.输入数据有多组,每组一行,为两个整数,输入以0 0结束输出A+B的值,每组数据之间保留一个空行,注意,是“之间”,最后只有一个换行
解决:
#include<stdio.h>
int main()
{int a,b;
if(a==0&&b==0)return 0;
while(scanf("%d %d",&a,&b)
==2&&(a!=0||b!=0))
printf("%d\n
\n",a+b);
与题四的区别,所以输出的结果有所不同,多空出一行
return 0;}
6.长整型的输入。
解决:
#include<stdio.h>int main()
{
long long a,b;
while(scanf("
%I64d
%I64d",&a,&b)==2)
printf("
%I64d\n",a+b);
return 0;
}
所需要注意的是:
1. scanf("%d,%d", &a, &b);如果a和b都被成功读入,那么scanf的返回值就是2。如果只有a被成功读入,返回值为1。如果a和b都未被成功读入,返回值为0。如果遇到错误或遇到end of file,返回值为EOF。所以在输入scanf语句时需要在后面加上==2.
2.在长整型输入中:定义:long long i;
输入: scanf("%I64d",&i);
输出: printf("%I64d",i);