① 杭电acm的1001题,求和的那个,我的代码在自己的软件上运行成功了,为啥出现了wrong answer
#include<stdio.h>
int main()
{
int n,sum;
sum=0;
while(scanf("%d",&n)!=EOF)
{
sum=0;//初始化,不然的话你输入第二个样例就不对了。
for(;n>0;n--)
{
sum+=n;
}
printf("%d\n\n",sum);
}
return 0;
}
② 杭电OJ 1001题 用c语言这么写怎么不对
你仔细看一下输入和输出的要求:
输入:一系列的n值,每一个是一行
输出:For each case, output SUM(n) in one line
例子中,
第一个输入是1,输出SUM(1)的结果是1
第二个输入是100,输出SUM(100)的结果是5050
当然,你提交程序的测试数据不止这两个,这里只是举一个例子,他会有大量测试数据,让你保证时间和空间复杂度都是符合要求的
还有一点要注意,每两个输出的结果中间有一个空行
③ 杭电ACM1001题怎么就是不对了呢
因为 (1+b) * b 可能大于 32 位,这个要判断 奇偶的,给个ac 的参考:
#include<stdio.h>
intmain(void)
{
inta;
while(scanf("%d",&a)!=EOF)
printf("%lu ",a%2==0?a/2*(a+1):(1+a)/2*a);
return0;
}
④ 杭电 ACM 1001题
给你改写了一下。把scanf()放到while里面。
#include "stdio.h"
#include "conio.h"
main()
{
int a , i , sum=0 ;
while(1)
{
scanf("%d",&a);
if(a==EOF)
{
break;
}
else
{
for (i=0 ; i<=a ; i++)
{
sum=sum+i ;
}
printf ("%d\n",sum);
}
}
getch();
}
运行测试:
4回车
10
5回车
25
6回车
46
⑤ c语言 acm求助 杭电 1002 代码如下:
这是我的代码,0MS过的,这是个大数问题,这个题是加强版,要的数更大,所以就不能一个数组里存一个数,把一个数组里存多个数,但是数的输出牵扯到一个问题,比如你一个数组里存一个5位书,其中a[9]=12345,a[10]=102,所以输出的时候是 12345102,而正确的应该是1234500102,注意这点。
#include<stdio.h>
#include<string.h>
int main()
{
int a[1005],b[1005],c[1005];
char z;
int i,j,k,t,x,y;
scanf("%d",&t);
z=getchar();
for(i=1;i<=t;i++)
{
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(j=0;;j++)
{
z=getchar();
if(z==' ')
break;
a[j]=z-48;
x=j;
}
j--;
for(k=1000;j>=0;k--,j--)
{
a[k]=a[j];
a[j]=0;
}
for(j=0;;j++)
{
z=getchar();
if(z=='\n')
break;
b[j]=z-48;
y=j;
}
j--;
for(k=1000;j>=0;k--,j--)
{
b[k]=b[j];
b[j]=0;
}
for(j=1000;j>=0;j--)
{
c[j]+=a[j]+b[j];
c[j-1]+=(c[j]/10);
c[j]=c[j]%10;
}
printf("Case %d:\n",i);
for(j=0;j<=1000;j++)
{
if(a[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",a[k]);
}
break;
}
}
printf(" + ");
for(j=0;j<=1000;j++)
{
if(b[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",b[k]);
}
break;
}
}
printf(" = ");
for(j=0;j<=1000;j++)
{
if(c[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",c[k]);
}
break;
}
}
if(i!=t)
printf("\n");
printf("\n");
}
return 0;
}
这是我的代码,0MS过的,这是个大数问题,这个题是加强版,要的数更大,所以就不能一个数组里存一个数,把一个数组里存多个数,但是数的输出牵扯到一个问题,比如你一个数组里存一个5位书,其中a[9]=12345,a[10]=102,所以输出的时候是 12345102,而正确的应该是1234500102,注意这点。
⑥ 杭电acm1002题C语言答案是什么求高手!
额。。。。。。
1.。。。。scanf("%c",a);输入一个字符???改成%s骚年。。。
2。。。。。for(i=0;i<=101;i++)题目没有说输入的没个数都是101位吧。。如果输入的数没有101位你的c[i]=a[i]+b[i]-96; c[i]系统会给你随机数的。。。。
3。。。。加法是从个位开始加的吧,你的a[0]、b[0]应该是输入数的最高位吧,怎么是他们相加往c[1]进位????。。。。。。
问下你的:::验证的没有错误,可就是执行不了;是什么意思
顺带说下楼上的应该读下题目:Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.
⑦ 杭电1002 c语言
#include <stdio.h>
#include <string.h>
main()
{
char str1[1001],str2[1001];
int t,i,len_str1,len_str2,len_max,num=1,k;
scanf("%d",&t);
getchar();
while(t--)
{
int a[1001]={0},b[1001]={0},c[1001]={0};
scanf("%s",str1);
len_str1=strlen(str1);
for(i=0;i<=len_str1-1;i++)
a[i]=str1[len_str1-1]-'0';//明显这个for循环的作用只是把最后输入的那个字符以ANSIC码的形式赋值给了a[i],其他什么操作都没做,这里len_str1-1应该改成i。
scanf("%s",str2);
len_str2=strlen(str2);
for(i=0;i<=len_str2-1;i++)
b[i]=str2[len_str2-1]-'0';//问题同上,也改成i。
if(len_str1>=len_str2)len_max=len_str1;
else len_max=len_str2;
k=0;
for(i=0;i<=len_max-1;i++)
{
c[i]=(a[i]+b[i]+k)%10;
k=(a[i]+b[i]+k)/10;
}
if(k!=0)c[len_max]=1;
printf("Case%d:\n",num); num++;
printf("%s+%s=",str1,str2);
if(c[len_max]=1)printf("1");
for(i=len_max-1;i>=0;i--)printf("%d",c[i]);
printf("\n");
if(t>=1)printf("\n");
}
}
⑧ 杭电1001
不需要把所有数都读取以后再输出