第五章实训作业

第五章实训作业,第1张

第五章实训作业

【例5.1】计算人口有规律增长的数量

#include
#include
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】使用while循环有规律累加值为止的编写程序 使用for语句实现循环结构:

#include
#include
int main()
{
    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=%fn", sum);
    return 0;
}


5.2.1 for语句的基本语法
for语句的一般形式为:

for(表达式1;表达式2;表达式3)

            循环题语句;

大部分情况下,循环体语句为一复合语句。

注意,表达式1只是在进入循环之前计算一次。表达式2、循环体语句和表达式3将会重复执行。

1、可以应用于计数型的循环

格式如下:

for(循环变量赋初值‘循环条件;循环变量增量)

                       循环体语句;

【例5.3】输入一个正整数,求累加n阶乘的值

#include
int main()
{
    int i, n, sum;
    scanf_s("%d", &n);
    sum = 0;
    for (i = 1; i <= n; i++)
        sum = sum + i;
    printf("由1到%d的和是:%dn", n, sum);
    return 0;
}

【例5.4】输入一个正整数,求累加n阶乘的值

#include
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!=%.0fn", n, factorial);
    return 0;
}

 2、for语句的一般形式中省略表达式1

格式如下:

for( ;表达式2;表达式3)

      循环体语句; 

说明:省略表达式1时,可以将循环变量赋初值放在for之前。注意,此时不能省略第一个“;”。

 3、for语句的一般形式中省略表达式2

格式如下:

for(表达式1; ;表达式3)

      循环体语句; 

说明:省略表达式2时,表示不对循环体进行控制,这时如果没有其他处理的话,会形成死循环。应避免这样的for结构。

4、for语句的一般形式中省略表达式3

格式如下:

for(表达式1; ;表达式3)

       循环体语句;

说明:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。

5、for语句的一般形式表达式1和表达式3也可以式逗号表达式

6、for语句的一般形式中表达式2的值只要非0,就执行循环体

7、for语句的一般形式中循环体语句可以省略

由以上7种应用可以看出,for循环控制结构功能强大,在解决实际问题中起着非常重要的作用

5.2.2 for循环使用示例
【例5.5】 编写程序,计算有规律的前n项之和:

#include
int main()
{
    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=%.2fn", sum);
    return 0;
}

【例5.6】编写程序,输入10个数,输出其中最大数:


#include
int main()
{
    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
int main()
{
    int i;
    float x, max;
    for(i=1;i<=10;i++)
    {
        printf("请输入第%d个数:",i );
        scanf_s("%f", &x);
        if (i == 1)
            max = x;
        else
            if (x > max)
                max = x;
    }
    printf("十个数中最大值是:%.0f", max);
    return 0;
}

【例5.8】编写程序,由键盘输入一个正整数,判断该数是否为完数:

#include
int main()
{
    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);
    }
}

【例5.9】统计由键盘中输入的若干个字符中,大写英文字母,小写英文字母,数字字符和其他字符的个数:

#include
int main()
{
    int number, sum, i;
    printf("请输入一个正整数:");
    scanf_s("%d", &number);
    sum = 0;
    for (i = 1; i <= number - 1; i++)
        if (number % i == 0)
            sum = sum + 1;
    if (number == sum)
        printf("%d是完数n", number);
    else
        printf("%d不是完数n", number);
    return 0;
}

【例5.10】任意输入一行小写字母,将他们转换成大写字母后输出:

#include
int main()
{
    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.11】由键盘输入3个数字,将其组合成一个整型数并输出:

#include
int main()
{
    int i;
    char ch;
    for (i = 1; (ch = getchar()) != 'n'; i++)
        putchar(ch - 32);
    return 0;
}

 【例5.12】编写程序,由键盘输入一个正整数,判断其是否为素数:

#include
int main()
{
    int i;
    char ch;
    for (; (ch = getchar()) != 'n'; )
        putchar(ch - 32);
    return 0;
}

5.3 使用while语句实现循环结构
5.3.1 while语句的基本语法
      while语句在使用时,总是先要判断一个条件,所以可以用while语句实现“当型”循环。while语句的一般形式如下:

while(表达式)

       循环体;

注意,while语句的特点是先判断循环条件,后执行循环体。

5.3.2 while循环使用示例
【例5.13】计算1-100的累加和的值:

#include
int main()
{
    int n = 0, i;
    char ch;
    printf("输入3个数字:");
    for (i = 1; i <= 3; i++)
    {
        scanf_s("%c", &ch);
        n = n * 10 + ch - '0';
    }
    printf("%dn", n);
    return 0;
}

【例5.14】输入一个正整数n,计算n!:

#include
int main()
{
    int i;
    long n, fact;
    i = 2, fact = 1;
    printf("请输入n的值:");
    scanf_s("%ld", &n);
    while (i <= n)
    {
        fact = fact * i;
        i = i + 1;
    }
    printf("%ld!=%ldn", n, fact);
    return 0;
}

【例5.15】由键盘输入一串字符,分别统计输入字符中数字字符,字母字符集其他字符的个数:

#include
int main()
{
    int digit, letter, other;
    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;
}

5.4 使用do-while语句实现循环结构
5.4.1 do-while语句的基本语法
        do-while语句在使用时,首先执行循环体语句,然后再判断条件。所以可以用do-while语句实现“直到型”循环。do-while语句一般形式如下:

do

        循环体

while(表达式); 

注意,do-while语句的特点是先执行循环体,后判断循环条件。因此,do-while循环至少执行一次循环体。

5.4.2 do-while循环使用示例
【例5.16】使用do-while语句计算1-100累加的值:

#include
int main()
{
    int i, sum;
    i = 1, sum = 0;
    do
    {
        sum = sum + i;
        i = i + 1;
    } while (i <= 100);
    printf("sum=%dn", sum);
    return 0;
}

【例5.17】求两个自然数的最大公约数和最小公倍数:

#include
int main()
{
    int a, b, r, n, m;
    printf("请输入两个整数:");
    scanf_s("%d%d",& a, &b);
    m = a, n = b;
    do
    {
        r = a% b;
        a = b;
        b = r;
    } while (r != 0);
    printf("%d和%d的最大公约数是:%dn", m, n, a);
    printf("最小公倍数是:%d", m * n / a);
    return 0;
}

【例5.18】输入一个整数,统计该数的位数:

#include
int main()
{
    long n, m;
    int count = 0;
    printf("请输入一个整数:");
    scanf_s("%ld", &n);
    m = n;
    if (n < 0)n = -n;
    do
    {
        n = n / 10;
        count++;
    } while (n != 0);
    printf("整数%ld有%d位数n", m, count);
    return 0;
}

5.5 改变循环结构的跳转语句
5.5.1 break语句
      break语句用在循环语句和switch语句中,在switch语句中的用法第4章已经介绍,这里介绍其在循环语句中的用法。

      break语句的一般形式如下:

                                                  break;

       当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时跳出循环。

【例5.19】分析下面程序的运行结果:

#include
int main()
{
    int i = 5;
    do
    {
        if (i % 3 == 1)
            if (i % 5 == 2)
            {
                printf("%d", i);
                break;
            }
        i++;
    } while (i != 0);
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存