语法:
for(init-statement; condition; expression){
statement
}
练习十二:
输入正整数n,利用循环计算等差数列1、2、3、…、n的和。
例1:
输入n:10
前10项和为:55
#include<stdio.h>
int main(){
//练习十二:
int n,i,sum = 0;
printf("输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=sum+i;//也可表示为sum+=i
}
printf("前%d项和为:%d",n,sum);
return 0;
}
练习十三:
输入正整数n(2的倍数),利用循环计算等差数列2、4、6、…、n的和。
例1:
输入n:10
求和为:30
#include<stdio.h>
int main(){
//练习十三:
int n,sum=0,i;
printf("输入n:");
scanf("%d",&n);
for(i=2;i<=n;i+=2){
sum=sum+i;
}
printf("求和为:%d",sum);
return 0;
}
练习十四:
输入正整数n,利用循环计算n的阶乘。
例1:
输入n:3
(n!)=6
#include<stdio.h>
int main(){
//练习十四:
int n,i,sum=1;
printf("翰入n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
sum*=i;
}
printf("(n!):%d",sum);
return 0;
}
练习十五:
输入正整数n,然后输入n个正整数,输出这n个数的平均值。
例1:
5
1 4 3 1 2
平均值:2.2
#include<stdio.h>
int main(){
//练习十五:
int n,i,m;
float sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){//循环次数,不是值
scanf("%d",&m);
sum+=m;
}
printf("平均值:%g",sum/n);
return 0;
}
练习十六:
输入正整数n,判断n是否为质数
例1:
11
是质数
例2:
9
不是质数
#include<stdio.h>
int main(){
int n,i;
printf("输入正整数:");
scanf("%d",&n);
for(i=2;i<n;i++){
if(n % i==0){
break;
}
}
if(i == n){
printf("是质数");
}
else{
printf("不是质数");
}
return 0;
}
优化:
#include<stdio.h>
#include<math.h>
int main(){
int n, i;
scanf("%d", &n);
if(n == 1 || n == 4)
printf("不是质数");
else if(n == 2 || n == 3 || n == 5)
printf("是质数");
else if(n % 6 == 1 || n % 6 == 5){
for(i = 2; i <= sqrt(n); i++)
if(n % i == 0){
printf("不是质数");
break;
}
if(i == (int)(sqrt(n)+1))
printf("是质数");
}
else
printf("不是质数");
return 0;
}
练习十七:
水仙花数是指一个3位数,它的每个数位上的数字的3次幂之和等于它本身。例如:13+53+3^3=153。利用循环计算输出所有水仙花数。
【输出】
153 370 371 407
#include<stdio.h>
#include<math.h>
int main(){
//练习十七:
int i,a,b,c;
for(i=100;i<1000;i++){
a = i/100;//百位
b = i%100/10;//十位
c = i%10;//个位
if(i == pow(a,3) + pow(b,3) + pow(c,3)) {
printf("%d\t",i);
}
}
return 0;
}