在平面中给出了n个点。这些点任三点不共线,并且每两个点之间都有一条线相连,求三角形的数目。输入输入文件只有一行,这一行有若干个整数,相邻两个整数用一个空格隔开。每个整数N满足(1<=N<=2,000,000)。 输出输出文件有若干行。对输入文件中的每个整数N,输出一行,输出内容是三角形的数目。输入样例3 4 5输出样例1410我做的程序 帮忙看看哪错了?#include<stdio.h>int main(void){int i,a[2000],b[2000];while(scanf("%d",&a[i])){b[i]=a[i]*a[i-1]*a[i-2]/6;i++;}for(i=0;i<=2000;i++){printf("%d\n",b[i]);}}
3 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
#include<stdio.h> int main( void ) { int ten, i = 0, count = 0; long num[2000] = { 0 }; char c[2000]; //gets_s(c, 2000); //VS2013 gets (c); //VC6.0 for (i = 0; i < 2000; i++) { if (c[i] == '\n' || c[i] == '\0' ) break ; else if (c[i] == ' ' || c[i] == '\t' ) continue ; else if ( '0' <= c[i] && c[i] <= '9' ) { for (ten = 1; '0' <= c[i] && c[i] <= '9' ; ten *= 10, i++) { num[count] = c[i] - '0' + ten * num[count]; } count++; } } for (i = 0; i < count; i++){ printf ( "%ld\n" , num[i] * (num[i] - 1) * (num[i] - 2) / 6); } } |
因为“输入文件只有一行”,这里就不实际去打开某个文件了。
权当做,在命令行中输入一行数据。
你的代码问题挺多的,scanf函数遇到空格会停止读入的,所以根本没有办法完成整行的读取。
我在这里使用了gets函数,这是c里面唯一以回车结束读入的函数。
不过在,比较新的编译器中都不推荐这个函数(并没有扔掉);当然如果编译器支持可以使用get_s()。
如果使用c++,还可以用getline这个函数来进行替换。
- 3 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消