C语言循环题!编写一个程序,求s=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)。
【输入形式】输入一个正整数n,根据求s公式计算s并输出。
【输出形式】输出的为s的结果。
【样例输入】5
【样例输出】35
#include<stdio.h>
int main(void)
{
int i,j,n;
double item,s;
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++){
item=1;
for(j=1;j<=n;j++)
item=item+j;
s=s+item;
}
printf("%d\n",s);
return 0;
}
这是我自己写的,然而提交后测试数据显示输出错误,请大神帮我指点我下哪里出了问题。 展开
修改如下
#include<stdio.h>
int main(void)
{
int i,j,n;
int item,s; //此处数据类型定义错误;
scanf("%d",&n);
s=0; n=5;
for(i=1;i<=n;i++){
item=0; //item应该是从0开始;
for(j=1;j<=i;j++) //第二层循环应该小于等于i;
item=item+j;
s=s+item;
}
printf("%d\n",s);
return 0;
}
图为原程序在第二层循环加了个输出,查出第二层循环有问题。
扩展资料:
c语言书写规则:
1.一个说明或一个语句占一行。
2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
参考资料:
#include<stdio.h>
main()
{
int n,i,j,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
sum+=j;
}
}
printf("%d\n",sum);
}
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果要打印的数的位数如果超过我们设定m则原样输出;
如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
其次,你循环条件设的不对,里面的j循环条件应该改为for(j=1;j<=i;j++)
还有就是item的值设置为0比较好,这样比较好计算
修改后的代码如下
#include<stdio.h>
int main(void)
{
int i,j,n;
double item,s;
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++){
item=0;
for(j=1;j<=i;j++)
item=item+j;
s=s+item;
}
printf("%f\n",s);
return 0;
}
3个错误:
1、第9行,item=1应该是item=0
2、第10行,j<=n应该是j<=i
3、第14行,%d应该是%lf
除此之外:思路很蠢,算法过于复杂,对于每个累加项,每次都要从1开始加。
#include <stdio.h>
void main(){
int i,n,item=0,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{item+=i;s+=item;}
printf("%d\n",s);
}
void main()
{
int n;
float s=0,t=0;
scanf("%d",&n);
for(int i=1;i<=n;i++);
{
s+=i;
a+=s;
}
printf("%d",s);
}