例5.1
#include<stdio.h>
#include<math.h>
int main()
{
int n = 13, year;
double number, rate = 0.02;
for (year = 1; year <= 10; year++)
{
number = n * pow((1 + rate), year);
printf("%2d年后,人数为:%.2f亿\n", year, number);
}
return 0;
}
?例5.2
#include<stdio.h>
#include<math.h>
int main(void)
{
double sum, item, flag, denominator;
sum = 0; item = 1; flag = 1; denominator = 1;
while (fabs(item) >= 1e-6)
{
sum = sum + item;
flag = -flag;
denominator = denominator + 3;
item = flag / denominator;
}
printf("sum=%f\n",sum);
return 0;
}
?5.2 使用for语句实现循环结构
5.2.1 for语句的基本语法
for 语句的一般形式为: for(表达式1;表达式2;表达式 3) 循环体语句: for 语句的执行过程如下: ①首先计算表达式 1 ②判断表达式 2,若其值为真(非0),则执行循环体语句,然后 执行第③步;若值为假(0),结束循环,转到第⑤步执行。 ③ 计算表达式 3。 ④返回第②步继续执行。 ⑤ 循环结束,继续执行 for 语句的下一条语句。 大部分情况下,循环体语句为一复合语句。 例5.3
#include<stdio.h>
int main(void)
{
int i, n, sum;
scanf_s("%d", &n);
sum = 0;
for (i = 1; i <= n; i++)
sum = sum + i;
printf("由1到%d的和是:%d\n",n,sum);
return 0;
}
?例5.4
#include<stdio.h>
int main(void)
{
int i, n;
double factorial;
printf("输入n的值:");
scanf_s("%d", &n);
factorial = 1;
for (i = 1; i <= n; i++)
factorial = factorial * i;
printf("%d!=%.0f\n", n, factorial);
return 0;
}
2. for 语句的一般形式中省略表达式 1 格式如下: for(;表达式2;表达式 3) 循环体语句; 说明:省略表达式1时,可以将循环变量赋初值放在for之前。 例如,例5.3的循环语句:
for(i=1;i<=n;i++)? ? ? ? ? ? ? ? ? ? ? ?/*循环执行n次*/ | sum=sum+i;? ? ? ? ? ? ? ? ? ? ? ? ? ?/*累加器,反复累加i的值*/ |
等价于
i=1; | for(;i<=n;i++)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*循环执行n次*/ | sum=sum+i;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*累加器,反复累加i的值*/ |
例5.5
#include<stdio.h>
int main(void)
{
int n, i, denominator, flag;
float sum, item;
printf("输入n的值:");
scanf_s("%d", &n);
flag = 1;
denominator = 1;
sum = 0;
for (i = 1; i <= n; i++)
{
item = flag * 1.0 / denominator;
sum = sum + item;
flag = -flag;
denominator = denominator + 3;
}
printf("Sum=%.2f\n",sum);
return 0;
}
例5.6
#include<stdio.h>
int main(void)
{
int i;
float x,max;
printf("请输入第1个数:");
scanf_s("%f", &x);
max = x;
for (i = 1; i <= 9; i++)
{
printf("请输入第%d个数:", i + 1);
scanf_s("%f", &x);
if (x > max)
max = x;
}
printf("10个数的最大值是:%.0f",max);
return 0;
}
?例5.7
#include<stdio.h>
int main(void)
{
int number, a, b, c;
for (number = 100; number <= 999; number++)
{
a = number / 100;
b = number % 100 / 10;
c = number % 10;
if (number == a * a * a + b * b * b + c * c * c)
printf("%5d", number);
}
return 0;
}
?例5.8
#include<stdio.h>
int main(void)
{
int number, sum,i;
printf("请输入一个正整数:");
scanf_s("%d", &number);
sum = 0;
for (i = 1; i <= number - 1; i++)
if (number % i == 0)
sum = sum + i;
if (number == sum)
printf("%d是完数\n", number);
else
printf("%d不是完数\n", number);
return 0;
}
?例5.9
#include<stdio.h>
int main(void)
{
int upper,lower,digit,i,other;
char ch;
upper = lower = digit = other = 0;
printf("输入10个字符:");
for (i = 1; i <= 10; i++)
{
ch = getchar();
if (ch >= 'a' && ch <= 'z')
lower++;
else if (ch >= 'A' && ch <= 'Z')
upper++;
else if (ch >= '0' && ch <= '9')
digit++;
else
other++;
}
printf("小写字母%d个,大写字母%d个,数字%d个,其他字符%d个\n",lower,upper, digit, other);
return 0;
}
例5.10
#include<stdio.h>
int main(void)
{
int i;
char ch;
for (i = 1; (ch = getchar()) != '\n'; i++)
putchar(ch - 32);
return 0;
}
?例5.11
#include<stdio.h>
int main(void)
{
int n=0,i;
char ch;
printf("输入3个数字:");
for (i = 1; i <= 3; i++)
{
scanf_s("%c", &ch);
n = n * 10 + ch - '0';
}
printf("%d\n", n);
return 0;
}
?例5.12
#include<stdio.h>
int main(void)
{
int i,flag,number;
printf("请输入一个正整数:");
scanf_s("%d", &number);
flag = 1;
for (i = 2; i <= number - 1 && flag; i++)
if (number % i == 0)
flag = 0;
if (flag)
printf("%d是素数\n", number);
else
printf("%d不是素数\n", number);
return 0;
}
?5.3 使用while语句实现循环结构
5.3.1 while语句的基本语法
while(表达式)
? ? ? ? 循环体;
1步:计算表达式的值,若表达式的值为“真”,则执行第 2步;若表达式的值为“假”,则转到第4步。 第2步:执行循环体语句。 第3步:返回第1步。 第4步:结束循环,执行 while 语句的下一条语句。 注意,while 语句的特点是先判断循环条件,后执行循环体。
5.3.2? ? ? ? while循环使用示例
例5.13
#include<stdio.h>
int main(void)
{
int i, sum;
i = 1; sum = 0;
while (i <= 100)
{
sum = sum + i;
i = i + 1;
}
printf("sum=%d\n",sum);
return 0;
}
?例5.14
#include<stdio.h>
int main(void)
{
int n=0,i;
char ch;
printf("输入3个数字:");
for (i = 1; i <= 3; i++)
{
scanf_s("%c", &ch);
n = n * 10 + ch - '0';
}
printf("%d\n", n);
return 0;
}
例5.15
?
#include<stdio.h>
int main(void)
{
int digit, letter, other = 0;
char ch;
digit = letter = other = 0;
printf("请输入一串字符:");
while ((ch = getchar()) != '\n')
if ((ch >= "0") && (ch <= '9'))
digit++;
else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
letter++;
else
other++;
printf("数字%d个,字母%d个,其他%d个\n",digit,letter,other);
return 0;
}
?
|