C语言信息安全上机实验报告模版2循环.docx
《C语言信息安全上机实验报告模版2循环.docx》由会员分享,可在线阅读,更多相关《C语言信息安全上机实验报告模版2循环.docx(15页珍藏版)》请在冰豆网上搜索。
C语言信息安全上机实验报告模版2循环
北京信息科技大学
信息管理学院
(课程上机)实验报告
实验课程名称:
C语言程序设计专业:
信息安全
班级:
信安1202学号:
2012012194姓名:
李自然成绩:
实验名称
循环结构程序设计
实验地点
3-603
实验时间
1.实验目的:
◆熟练掌握上机过程。
◆熟练掌握顺序结构程序设计
◆熟练掌握分支结构程序设计
【注】实验总用时:
6课时。
2.实验内容:
补充-1:
用三种循环语句分别编写程序显示1~100的平方值。
P137/2:
输出所有“水仙花数”。
P137/2:
输入一行字符,统计英文字母、空格、数字、其他字符个数。
P137/3:
“猴子吃桃”问题。
P138/6:
输出9*9乘法表。
补充-2:
求Sn=a+aa+aaa+……+a…a(n个a)。
a是从键盘上输入的1-9之间的数,n从键盘输入,但可以保证输入的n使Sn在无符号长整型(unsignedlongint)数据表示的范围内。
补充-3:
求1!
+2!
+……+n!
。
n由键盘输入。
补充-4:
对任意给定的整数,进行因式分解。
补充-5:
求10000以内的所有完数。
完数是指该数的所有因子之和与该数相等。
例如6是完数,因为6=1+2+3。
补充-6:
验证卡布列奇运算。
即:
任意一个四位数只要它们各位上的数字不全相同,就有这样的规律:
1将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大4位数。
2将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小4位数(特殊地:
4个数字中有0,则最小数不是四位)
3求两个数之差,得到一个新四位数(高位零保留)。
重复上述过程,最后得到结果总是6174,6174被称为卡布列奇数。
编循环程序实现对某个n的卡布列奇计算。
3.实验要求:
独立编写程序,上机调试通过,写出实验报告。
4.实验准备:
电脑一台、WindowsXP操作系统、VC++6.0软件。
5.实验过程:
5.1实验一的实验过程
【要求】每道题都独立书写下列内容。
每题的报告应包括如下内容。
5.1.1题目。
可以写:
详见本报告“2.实验内容”),也可以把原题附上。
5.1.2简单思路。
也即程序设计的思考、设计思路及描述。
5.1.3程序结构。
可以用流程图表示,也可用结构性类语言描述。
5.1.4最终程序清单与注释。
一般指经调试正确的程序,如果调试不正确也未修改正确,也要附上。
正确的程序后面调试记录要附上正确的调试结果,调试仍不正确的但后面程序,调试记录要包含错误的内容,并写出你认为可能的错误原因分析。
注释可以简单写,但对复杂的部分可以详细写。
5.1.5测试数据选择。
要包含测试数据选择依据的分析。
调试中的测试数据可能不止一种,也就是说不是执行一次结果正确就证明结果正确。
5.1.6调试记录。
记录调试过程的输入、输出等,可以记录屏幕拷贝内容,也可以用文字说明屏幕显示内容。
并分析通过测试数据及程序执行结果,对程序正确性的分析与判断。
5.1.7实验结论总结。
5.2实验二的实验过程
5.2.1同上要求
5.2.2同上要求
5.2.3同上要求
5.2.4同上要求
5.2.5同上要求
5.2.6同上要求
5.2.7同上要求
……
(本部分可另附页)
实验过程
1.用三种循环语句分别编写程序显示1~100的平方值
程序:
#include
voidmain()
{
inti,j;
for(i=1;i<=100;i++)
{
j=i*i;
printf("%d\n",j);
}
}
结果:
程序:
#include
voidmain()
{
inti,j;
i=1;
do
{
j=i*i;
printf("%d\n",j);
i++;
}
while(i<=100);
printf("%d\n",j);
}
程序:
#include
voidmain()
{
inti,j;
i=1;
while(i<=100)
{
j=i*i;
printf("%d\n",j);
i++;
}
printf("%d\n",j);
}
2.P137/2:
输出所有“水仙花数”
程序:
#include
voidmain()
{
inta,b,c,s;
for(a=1;a<10;a++)
{
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
s=100*a+10*b+c;
if(s==(a*a*a+b*b*b+c*c*c))
printf("%d\n",s);
}
}
}
getchar();
}
结果:
3.P137/2:
输入一行字符,统计英文字母、空格、数字、其他字符个数
程序:
#include
voidmain()
{
chara;
intletters=0,space=0,digit=0,other=0;
printf("请输入一行字符:
\n");
while((a=getchar())!
='\n')
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z')
letters++;
elseif(a=='')
space++;
elseif(a>='0'&&a<='9')
digit++;
else
other++;
}
printf("字母数:
%d\n空格数:
%d\n数字数:
%d\n其他字符数:
%d\n",letters,space,digit,other);
}
结果:
4.P137/3:
“猴子吃桃”问题
程序:
#include
voidmain()
{
inti,s=1;
i=1;
while(i<10)
{
s=(s+1)*2;
i++;
}
printf("%d\n",s);
}
结果:
5.P138/6:
输出9*9乘法表
程序:
#include
voidmain()
{
inti,j,a[10][10];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
a[i][j]=i*j;
for(i=0;i<10;i++)
for(j=1;j<=i;j++)
printf("%2d*%d=%d\n",i,j,i*j);
}
结果:
6.求Sn=a+aa+aaa+……+a…a(n个a)。
a是从键盘上输入的1-9之间的数,n从键盘输入,但可以保证输入的n使Sn在无符号长整型(unsignedlongint)数据表示的范围内
程序:
#include
voidmain()
{
unsignedlongs,m;
unsigneda,n,i;
scanf("%d,%d",&a,&n);
s=0;m=0;
for(i=1;i<=n;i++)
{
m=m*10+a;s+=m;
}
printf("s=%ld\n",s);
}
结果:
7.求1!
+2!
+……+n!
。
n由键盘输入
程序:
#include
voidmain()
{
inta,b,n,s;
printf("请输入n:
");
scanf("%d",&n);
for(a=1,b=0,s=1;s<=n;s++)
{
a*=s;
b+=a;
}
printf("s=%1d\n",b);
}
结果:
8.对任意给定的整数,进行因式分解
程序:
#include
voidmain()
{
inti,n;
printf("请输入n:
");
scanf("%d",&n);
if(n>1)
{
for(i=2;i{
if(n%i==0)
{
n=n/i;
printf("n=%d,%d\n",i,n);
}
}
}
}
结果:
9.求10000以内的所有完数。
完数是指该数的所有因子之和与该数相等。
例如6是完数,因为6=1+2+3。
程序:
#include
voidmain()
{
inti,j,a,b;
for(i=1;i<10000;i++)
{
j=0;
for(a=1;a<=i/2;a++)
{
b=i%a;
if(b==0)
j=j+a;
}
if(j==i)
printf("%d\n",i);
}
}
结果:
10.验证卡布列奇运算。
即:
任意一个四位数只要它们各位上的数字不全相同,就有这样的规律:
1将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大4位数。
2将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小4位数(特殊地:
4个数字中有0,则最小数不是四位)
3求两个数之差,得到一个新四位数(高位零保留)。
重复上述过程,最后得到结果总是6174,6174被称为卡布列奇数。
编循环程序实现对某个n的卡布列奇计算。
程序:
结果:
6.实验总结:
写出本次实验在设计与调试中的技术体会,特别是实验前的程序设计,在实验中发现了什么问题,如何解决的,得到了什么经验与体会等。
说明:
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。