相关知识
for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句
for语句的执行过程如下:
for 语句先求解表达式1。
求解表达式2,若其值为真(非0),则执行 for 语句中指定的内嵌语句,然后执行下面第3步;若其值为假(0),则结束循环,转到第5步。
求解表达式3。
转回上面第2步继续执行。
循环结束,执行 for 语句下面的一个语句。
可以把 for 语句最简单的应用形式也是最容易理解的形式如下:
循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;隔开。例如:
请将 for 语句与 while 语句对比:
注意:1)内嵌语句可以是单条语句,也可以是复合语句。2)3个表达式都可以省略,但;不能缺省。省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值;省略了“表达式2(循环条件)”,则表示循环条件永为真,不做其它处理时便成为死循环。例如:
相当于:
计算1-2+3-4...+n的值
输入描述:
输入一个整数n (1≤n≤100)
输出描述:
输出一个整数
示例1
输入:4
输出:-2
int main()
{
int n = 0;
scanf("%d",&n);
int i = 0;
int sum = 0;
for(i = 1;i<=n;i++)
{
if(i%2==0)//偶数
{
sum = sum-i;
}
else
{
sum = sum+i;
}
}
printf("%d",sum);
return 0;
}
计算:1+1/2+1/3+…+1/N的值。(保留6位小数)
输入描述:
输入一个整数,范围在0到1000
输出描述:
输出一个浮点数
示例1
输入:2
输出:1.500000
#include <stdio.h>
int main() {
int N;
double sum=0;
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
sum+=1.0/i;
}
printf("%.6lf",sum);
return 0;
}
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值
输入描述:
输入一个整数
输出描述:
输出一个浮点数,保留3位小数
示例1
输入:1
输出:1.000
#include <stdio.h>
#include<math.h>
int main() {
int n;
double sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
sum+=(1.0/(i*pow(-1,i-1)));
}
printf("%.3lf",sum);
return 0;
}
4.编写程序输入n,用for循环求 s=1!+ 2!+ 3!+ …+n!的值并输出。
示例1
输入:
5
输出:
1!=1
2!=2
3!=6
4!=24
5!=120
1!+2!+ …+5!=153
#include <stdio.h>
int main()
{
int i=1,n,k=0;
long s=1,sum=0;
scanf("%d",&n);
for(;i<=n;i++)
{
k=k+1;
s=s*i;
sum=sum+s;
printf("%d!=%d\n",k,s);
}
printf("1!+2!+ …+%d!=%d",n,sum);
return 0;
}
5.用while循环求编写求s=1+(1+2)+(1+2+3)+....+(1+2+3+....+n)值的小程序。
测试输入:4
预期输出:sum=20
#include <stdio.h>
int main()
{
int i,n,k,sum=0;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(k=0;k<=i;k++)
{
sum=sum+k;
}
}
printf("sum=%d",sum);
return 0;
}
6.用do-while循环按S=1+1/1!+1/2!+1/3+...+1/n!
输入:一个整数n。
输出:公式计算的结果s的值
测试输入:15
预期输出:s = 2.718282
注意:结果保留6位小数。
#include <stdio.h>
int main()/********** Begin **********/
{
int n,m,k;
float s,f;
scanf("%d",&n);
s=0;
for(k=1;k<=n;k++)
{
f=1;
for(m=1;m<=k;m++)
f*=m;
s=s+1/f;
}
s=s+1;
printf("s = %f",s);
return 0;
}
7.输入正整数a和n,用for循环求s=a+aa+aaa+aaaa+aa...a(n个a)的值
从序列上观察出规律:后面的每一项是怎么在前面一项的基础上得到的。
输入:5 3
表示3个由5组成的数相加,即计算5+55+555的值,输出:615
输入:5 4
表示计算5+55+555+5555的值,输出:6170
测试输入:53预期输出:615
测试输入:54预期输出:6170
#include <stdio.h>
int main(void)
{
int a,n,b,c,sn,i;
scanf("%d%d",&a,&n);
c=a;
sn=0;b=0;
for(i=1;i<=n;i++)
{
sn=sn+a;
b=10*a+c;
a=b;
}
printf("%d\n",sn);
return 0;
}