cin和scanf的区别专题

C 的代码
#include
#include <stdio.h>
#include <string.h>
#include
#include
#define N 1000000
using namespace std;

void rever(int a[], int l, int r)
{
int mid = (l + r) / 2;
for(; l <= mid; l++, r–)
{
int t = a[l];
a[l] = a[r];
a[r] = t;
}
}
int main()
{
int n;
scanf("%d", &n);
int i, a[N];
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
int m;
scanf("%d", &m);
while(m–)
{
int x;
scanf("%d", &x);
rever(a, 0, n - 1);//全部逆置
rever(a, 0, n - 1 - x);
rever(a, n - x, n - 1);
for(i = 0; i < n; i++)
{
printf("%d%c", a[i], i == n - 1 ? ‘\n’ :’ ');
}
}
return 0;
}

附上C++代码
#include
#include <stdio.h>
#include <string.h>
#include
#include
#define N 10000000
using namespace std;

void rever(int a[], int l, int r)
{
int mid = (l + r) / 2;
for(; l <= mid; l++, r–)
{
int t = a[l];
a[l] = a[r];
a[r] = t;
}
}
int main()
{
int n;
cin>>n;
int i, a[N];
for(i = 0; i < n; i++)
{
cin>>a[i];
}
int m;
cin >> m;
while(m–)
{
int x;
cin >> x;
rever(a, 0, n - 1);//全部逆置
rever(a, 0, n - 1 - x);
rever(a, n - x, n - 1);
for(i = 0; i < n; i++)
{
printf("%d%c", a[i], i == n - 1 ? ‘\n’ :’ ');
}
}
return 0;
}

两者没什么不同,只不过我把输入换成了C++中的cin,写起来比较简单一些,哎。
然后,就…LIMIT(超时了)了;
Why Why??这是百度搜的,ama1997的见解。cin和scanf的区别专题
明白了,scanf比较单一,不用判断直接输入;
while cin 要判断你的类型是什么,从而耗费了一点时间…

Ps:两个代码差了15ms(很少),但就卡着了,哎…