程序设计与问题求解 实验二 循环结构程序设计

目录

引言

一.实验目的:

二、实验内容和步骤:

 1. 分析并修改下面程序错误,使之能够正常运行。

2. 编写程序实现以下功能

三、实验小结


引言

我想把大学期间写的材料挑选一些发上来保存一下,这是本人大学期间做的一次实验作业。

一.实验目的:

  1. 掌握循环程序设计思路;
  2. 能熟练使用3种循环结构对问题进行求解;
  3. 掌握穷举法、递推法等在工程问题中的应用。

二、实验内容和步骤:

 1. 分析并修改下面程序错误,使之能够正常运行。

   错误代码如下: 该程序用于求从1到100的整数和。

#include <stdio.h>

int  main()

{

  int i=1;

  int sum=0;

  while (i<=100);

  {

  sum+=i;

}

  printf("sum=%d\n",sum);

return  0;

}

编译环境中正确代码、运行结果截图及错误原因分析如下:

/*分析并修改下面程序错误,使之能够正常运行。

该程序用于求从1到100的整数和。错误代码如下.*/

#include <stdio.h>

int  main()

{

    int i=1;

    int sum=0;



    while (i<=100)

    {

        sum+=i;

        i++;

    }

    printf("sum=%d\n",sum);

        return  0;

}


错误原因:

i的值没有递增,while语句后面没有分号。

2. 编写程序实现以下功能

(1)请用三种结构实现从1到20之间的偶数累加,奇数相乘,并将偶数累加的结果输出,奇数相乘的结果输出。

编译环境中正确代码、运行结果截图如下:

#include<stdio.h>

int main()

{

int sum1=0,sum2=1,i=0;

for(i=0;i<=20;i++)

{

if(i%2==0){

sum1+=i;

}

else{

sum2*=i;

}

}

printf("偶数相加和为:%d,奇数相乘积为:%d",sum1,sum2);

return 0;



}

(2)从键盘输入任意字符(直到输入字符q或Q时退出),分别统计输出一共有多少个数字,多少个小写字母,多少个大写字母及多少个除上述以外的其他字符的个数。(注意:这里最后一个q或Q也要计算在内!)

编译环境中正确代码、运行结果截图如下:

//题目3(3) 统计键盘输入的不同类型字符个数。

//请给出你的程序,并进行测评,注意所给的测试集。

#include<stdio.h>

int main()

{

    int number=0,lowercase=0,capital=0,other=0;

    char character;

    while(1)

    {

        scanf("%c",&character);

        if('a'<=character&&character<='z')

        {

            lowercase++;

        }

        else if('A'<=character&&character<='Z')

        {

            capital++;

        }

        else if('0'<=character&&character<='9')

        {

            number++;

        }

        else{

            other++;

        }

        if(character=='q'||character=='Q')

        {

            break;

        }

    }

    printf("%d %d %d %d",number,lowercase,capital,other);

    return 0;

}


(3)要求按如下数字形状输出(循环嵌套)。

        1

        123

        12345

        1234567

编译环境中正确代码、运行结果截图如下:

/*

要求按如下数字形状输出,代码有错误,请修改正确。

1

123

12345

1234567

代码如下: */

#include<stdio.h>

int  main()

{

    int i, j;

    for(i=1; i<=7; i=i+2)

    {

        for(j=1; j<=i; j++)

        {

            printf("%d",j);

        }

        printf("\n");

    }

    return 0;

}

(4)编写程序,打印99乘法表,输出样式如下(注意:其中的框线不需要打印出来)

编译环境中正确代码、运行结果截图如下:

/*题目4  编写程序,打印99乘法表。

请给出你的程序,并进行测评,注意下面所给的测试集。为方便看代码你在熟悉测试集以后可以删除下面的内容。

1X1=1

1X2=2 2X2=4

1X3=3 2X3=6 3X3=9

1X4=4 2X4=8 3X4=12 4X4=16

1X5=5 2X5=10 3X5=15 4X5=20 5X5=25

1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36

1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49

1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64

1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81

每个表达式之间是空英文的一格,乘号用的是大写英文字母X

*/

#include<stdio.h>

int main()

{

    int i,j;

    for(i=1;i<=9;i++)

    {

        for(j=1;j<=i;j++)

        {

            printf("%dX%d=%d",j,i,i*j);

                printf(" ");



        }

        printf("\n");

    }

    return 0;

}

(5)将一面额为10元倍数的整钱换成1元、2元和5元的零钱组合(每种面值都要有)。输入要换的面额(如10元),输出所有可能的换法数量(如2种)。

编译环境中正确代码、运行结果截图如下:

/*

    题目5 将一面额为10元倍数的整钱(<=100元)换成1元、2元和5元的零钱组合(每种面值都要有)。输入要换的面额(如10元),输出所有可能的换法(分别输出所有5元、2元和1元的数量组合),以及换法的总数量 。

    请给出你的程序,并进行测评,注意下面所给的测试集。

*/

#include<stdio.h>

int main()

{

    int five=0,two=0,one=0,num=0,sum=0;

    scanf("%d",&sum);

    for(five=sum/5;five>=1;five--)

    {

        for(two=sum/2;two>=1;two--)

        {

            for(one=sum;one>=1;one--)

            {

                if((sum==5*five+2*two+one)&&(two!=0)&&(one!=0)&&(five!=0))

                {

                    printf("%d %d %d\n",five,two,one);

                    num++;

                }

            }

        }

    }

    printf("%d",num);

    return 0;

}

三、实验小结

本次实验较为简单,基本没遇到什么问题,就是有时会审题错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值