c语言编程题目?

2024-12-23 16:46:52
推荐回答(2个)
回答1:

#include
int main()
{
int i, j, T;
while (scanf("%d", &T) != EOF &&(T>=1&&T<=2000))
{
int a[T][2];
for (i = 0; i < T; i++)
for (j = 0; j < 2; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < T; i++)
{
printf("case %d:\n", i + 1);
printf("%d\n", a[i][0] + a[i][1]);
}
}
return 0;
}

回答2:

嗯......这题其实不难,主要是考数学功底,还有就是对于变量的取值范围设的有些刁钻。
首先,依题意不难看出这个程序在输入输出时都需要用到循环,用for或者while都行,然后对于每组数据输入的两个数,因为要在t组数据全部输入完毕后再输出,所以需要把数据先用数组存起来,但是没必要存两个数,只需储存相加的结果即可。另外还需考虑一个问题,一维数组一般只能存256个数,而t是可以取到2000的,一维数组根本不够,考虑到你的要求,可能是个初学者,用动态数组不一定能理解,所以我用二维数组。定义一个二维数组n[9][200](10*200=2000),那么第x组数据的结果可以用n[(x-x%200)/200][x%200]来储存输出。另外,对于正整数a和b没有取值范围规定,这里默认在int的范围内。
代码实现如下,如有错误请指正:
#include
using namespace std;
int main(){
int t,a,b,n[9][200]={};
cin>>t;
for(int i=1;i<=t;i++){
cin>>a>>b;
n[(i-i%200)/200][i%200]=a+b;
}
for(int i=1;i<=t;i++)
cout<return 0;
}
望采纳,谢谢。