11004512实验报告.docx
- 文档编号:9387871
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:11
- 大小:219.99KB
11004512实验报告.docx
《11004512实验报告.docx》由会员分享,可在线阅读,更多相关《11004512实验报告.docx(11页珍藏版)》请在冰点文库上搜索。
11004512实验报告
第一题R010E
1.问题描述:
将一个正整数n(长整型)输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321。
2.课题分析:
如果数小于一千,则不用转换,如果大于一千则要,也就是一个数除以一千,取整,在整数后面加一个逗号后再写上余数。
考察的C语言知识是关于取整取余及字符,判断等内容的运用。
3.数据结构的设计:
charc=',';//千分位的符号
intn,//输入的数
inta[100]//存储用千分位表示的数
if(n<1000)//比较输入的数是否大于一千
printf("%d",n);//如果输入的数小于一千,则直接输出
else{
for(i=0;n>=1000;i++)
{
a[i]=n%1000;//取余
n/=1000;//取整数
j=i+1;
}
a[j]=n;
for(i=j;i>0;i--)//循环运行直到条件不符合
{
printf("%d%c",a[i],c);
}printf("%d",a[0]);//输出
}
4.处理结构的设计:
5.源程序:
#include
voidmain()
{charc=',';
intn,i=0,j=0,a[100];
printf("请输入一个正整数n:
\n");
scanf("%d",&n);
if(n<1000)
printf("%d",n);//如果输入的数小于一千,则直接输出
else{
for(i=0;n>=1000;i++)
{
a[i]=n%1000;//取余
n/=1000;//取整数
j=i+1;
}
a[j]=n;
for(i=j;i>0;i--)
{
printf("%d%c",a[i],c);
}printf("%d",a[0]);
}
printf("\n");
}
6.调试记录:
第二题P007M
1.问题描述:
编制不同数制间的转换程序。
要求提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进制,其中转化用算法实现,而不是用printf函数显示。
2.课题分析:
将十进制数转换为其他进制的数,其算法是以将被换为的进制数作为除数,从给出的数起依次作除求余,直至整除后结果为零,然后将运算中所得的余数按倒序排列即得到数制转换后所得的数。
在定义数组时需要注意到无符号长整型数的取值范围,提供足够但有效地数组长度。
转换为二进制的数与转换为八进制的数的算法基本一致,即依次记下求余所得,并判断整除后是否为零决定是否继续运算,而转换为十六进制的数时前十个为数字表示,而后面六个数为用大写的’A’~’F’表示。
3.数据结构的设计:
unsignedlonga,temp;//存储所要转换的数和整除后的数
charb[64];//存储二进制数的数组
charo[21];//存储八进制数的数组
charh[16];//存储十六进制数的数组
在此,所定义的三个数组的长度即分别有效地考虑到无符号长整型数的取值范围
b[i]=temp%2+'0';//求余;强制类型转换为实数
temp/=2;//整除运算
在此需根据temp的值判断是否运算完毕
while(i>=0)
{printf("%c",b[i]);
i--;//从后向前依次输出while(temp&&i<16)
{
intx=temp%16;
if(x<10)h[i]=x+'0';
elseh[i]=x-10+'A';//前十个为数字,后六个为字母
temp/=16;
i++;
}
intm=1;
while(m)
{……
scanf("%d",&m);
4.处理结构的设计:
二进制与八进制转换流程图
十六进制转换流程图
5.源程序:
#include
intmain()
{
unsignedlonga,temp;//定义无符号长整型
charb[64];
charo[21];
charh[16];//无符号长整型数的取值范围
inti,m=1;
while(m)
{
printf("Inputnumber:
");
scanf("%ld",&a);
temp=a;
i=0;
while(temp&&i<64)
{
b[i]=temp%2+'0';//求余;强制类型转换为实数
temp/=2;//整除运算
i++;
}
printf("\n二进制:
");
i--;//返回最后一个数的位置
while(i>=0)
{
printf("%c",b[i]);
i--;//从后向前依次输出
}
printf("\n");
temp=a;
i=0;
while(temp&&i<21)
{
o[i]=temp%8+'0';
temp/=8;
i++;
}
printf("八进制:
");
i--;
while(i>=0)
{
printf("%c",o[i]);
i--;
}
printf("\n");
temp=a;
i=0;
while(temp&&i<16)
{
intx=temp%16;
if(x<10)h[i]=x+'0';
elseh[i]=x-10+'A';//前十个为数字,后六个为字母
temp/=16;
i++;
}
printf("十六进制:
");
i--;
while(i>=0&&i<16)
{
printf("%c",h[i]);
i--;
}
printf("\n\n\n");
}
printf("\n\n\n");
return0;
}
6.调试记录:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11004512 实验 报告