目录
引言
一.实验目的:
二、实验内容和步骤:
1. 分析并修改下面程序错误,使之能够正常运行。
2. 编写程序实现以下功能
三、实验小结
引言
我想把大学期间写的材料挑选一些发上来保存一下,这是本人大学期间做的一次实验作业。
一.实验目的:
- 掌握循环程序设计思路;
- 能熟练使用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
编译环境中正确代码、运行结果截图如下:
/*要求按如下数字形状输出,代码有错误,请修改正确。1123123451234567代码如下: */#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=11X2=2 2X2=41X3=3 2X3=6 3X3=91X4=4 2X4=8 3X4=12 4X4=161X5=5 2X5=10 3X5=15 4X5=20 5X5=251X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=361X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=491X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=641X9=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;}
三、实验小结
本次实验较为简单,基本没遇到什么问题,就是有时会审题错误。