程序设计实验及在线指导课后习题答案.docx

上传人:b****6 文档编号:7096665 上传时间:2023-01-17 格式:DOCX 页数:17 大小:18.83KB
下载 相关 举报
程序设计实验及在线指导课后习题答案.docx_第1页
第1页 / 共17页
程序设计实验及在线指导课后习题答案.docx_第2页
第2页 / 共17页
程序设计实验及在线指导课后习题答案.docx_第3页
第3页 / 共17页
程序设计实验及在线指导课后习题答案.docx_第4页
第4页 / 共17页
程序设计实验及在线指导课后习题答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

程序设计实验及在线指导课后习题答案.docx

《程序设计实验及在线指导课后习题答案.docx》由会员分享,可在线阅读,更多相关《程序设计实验及在线指导课后习题答案.docx(17页珍藏版)》请在冰豆网上搜索。

程序设计实验及在线指导课后习题答案.docx

程序设计实验及在线指导课后习题答案

第二章

/*一:

求平均年龄

描述

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入

第一行有一个整数n(1<=n<=100),表示学生的人数。

其后n行每行有1个整数,

取值为15到25。

输出

输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

样例输入

2

18

17

样例输出

17.50提示

要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:

printf("%.2f",num);

#include

intmain()

{

intn,i,age;

doublesum,average;

sum=0.00;

scanf("%d",&n);

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

{

scanf("%d",&age);

sum+=age;

}

average=sum/n;

printf("%.2f\n",average);

}

/*二:

数字求和

描述

给定一个正整数a,以及另外的5个正整数,问题是:

这5个整数中,小于a的整数的和是多少?

输入

输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。

输出

输出一行,给出一个正整数,是5个数中小于a的数的和。

样例输入

10123411

样例输出

10

#include

intmain()

{

inta,i,s[5];

intsum;

sum=0;

scanf("%d",&a);

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

{

scanf("%d",&s[i]);

}

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

{

if(s[i]

sum+=s[i];

}

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

}

/*三:

两倍:

描述

给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:

数对中一个数是另一个数的两倍。

比如给定1432971822,得到的答案是3,因为2是1的两倍,4是2个两倍,

18是9的两倍。

输入

输入包括多组测试数据。

每组数据包括一行,给出2到15个两两不同且小于100的正整数。

每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。

输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。

输出

对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。

样例输入

14329718220

248100

751113130

-1

样例输出

3

2

0*/

#include

intmain()

{

inta[16],i;

intcount,j,m=0;

while

(1)

{

scanf("%d",&a[0]);

if(a[0]==-1)

break;

m=0;

for(i=1;;i++)

{

scanf("%d",&a[i]);

m++;

if(a[i]==0)

break;

}

count=0;

j=m;

while(j--)

{

for(i=0;i

{

if(a[j]==2*a[i])

count++;

}

}

printf("%d%d\n",count,m);

}

}

}

}

四:

肿瘤面积

/*描述

在一个正方形的灰度图片上,肿瘤是一块矩形的区域,

肿瘤的边缘所在的像素点在图片中用0表示。

其它肿瘤内和肿瘤外的点都用255表示。

现在要求你编写一个程序,

计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。

已知肿瘤的边缘平行于图像的边缘。

输入

只有一个测试样例。

第一行有一个整数n,表示正方形图像的边长。

其后n行每行有n个整数,取值为0或255。

整数之间用一个空格隔开。

已知n不大于1000。

输出

输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。

样例输入

5

255255255255255

255000255

25502550255

255000255

255255255255255

样例输出

1

提示

如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。

*/

#include

ints[1000][1000];

intmain()

{

intn,i,j,b,c,k,t;

intarea;

area=0;

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

scanf("%d",&s[i][j]);

}

j=0;

for(i=0;i

{

if(s[i][j]==0)

{

b=i;

t=j;

break;

}

j++;

}

i=0;

for(j=0;j

{

if(s[i][j]==0)

{

c=j;

k=i;

}

i++;

}

area=(k-b-1)*(c-t-1);

printf("%d%d%d%d%d\n",area,b,c,k,t);

}

/*五:

肿瘤检测

描述

一张CT扫描的灰度图像可以用一个N*N(0

矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。

我们假设给定的图像中有且只有一个肿瘤。

在图上监测肿瘤的方法如下:

如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。

我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。

任何在肿瘤上的点,

如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,

则该点称为肿瘤的边界点。

肿瘤的边界点的个数称为肿瘤的周长。

现在给定一个图像,

要求计算其中的肿瘤的面积和周长。

输入

输入第一行包含一个正整数N(0

每行包含图像的一行。

图像的一行用N个整数表示(所有整数大于等于0,小于等于255),

两个整数之间用一个空格隔开。

输出

输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,

用一个空格分开。

样例输入

6

999999999999

999999509999

999949495051

995020255299

405099999999

999999999999

样例输出

98*/

#include

ints[1000][1000];

intmain()

{

intn,i,j;

intarea,permit;

area=0;

permit=0;

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

scanf("%d",&s[i][j]);

}

for(i=0;i

for(j=0;j

if(s[i][j]<=50)

{

area++;

if(s[i-1][j]>50||s[i+1][j]>50||s[i][j-1]>50||s[i][j+1]>50)

permit++;

}

printf("%d%d\n",area,permit);

}

/*八:

简单密码

描述JuliusCaesar曾经使用过一种很简单的密码。

对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。

比如字符A用F来代替。

如下是密文和明文中字符的对应关系。

密文

ABCDEFGHIJKLMNOPQRSTUVWXYZ

明文

VWXYZABCDEFGHIJKLMNOPQRSTU

你的任务是对给定的密文进行解密得到明文。

你需要注意的是,密文中出现的字母都是大写字母。

密文中也包括非字母的字符,对这些字符不用进行解码。

输入输入中的测试数据不超过100组。

每组数据都有如下的形式,而且各组测试数据之间没有空白的行。

一组测试数据包括三部分

1.起始行-一行,包括字符串"START"

2.密文-一行,给出密文,密文不为空,而且其中的字符数不超过200

3.结束行-一行,包括字符串"END"

在最后一组测试数据之后有一行,包括字符串"ENDOFINPUT"。

输出对每组数据,都有一行输出,给出密文对应的明文。

样例输入

START

NSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJX

END

START

NBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJHTSINSWTRJ

END

START

IFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJ

END

ENDOFINPUT

样例输出

INWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSES

IWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROME

DANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE*/

#include

#include

intmain()

{

chars[201],end[201];

charb[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";

inti,len;

gets(s);

while(strcmp(s,"START")==0)

{

gets(s);

len=strlen(s);

for(i=0;i

{

if(s[i]>='A'&&s[i]<='Z')

s[i]=b[s[i]-'A'];

}

gets(end);

printf("%s\n",s);

gets(s);

}

}

第三章

一:

十进制到八进制

#include

intmain()

{

intn,i,j;

ints[200];

scanf("%d",&n);

i=0;

while(n>0)

{

s[i]=n%8;

n=n/8;

i++;

}

for(j=i-1;j>=0;j--)

{

printf("%o",s[j]);

}

}

二:

八进制到十进制

#include

#include

intmain()

{

inti,len,ret;

chars[100];

ret=0;

scanf("%s",&s);

len=strlen(s);

for(i=0;i

{

ret*=8;

ret+=s[i]-'0';

}

printf("%d\n",ret);

}

 

三:

二进制到十六进制

#include  

#include

charalp[]="0123456789ABCDEF";

intmain()

{

intresult=0,ret;

inti,len,t,j,k,p;

chara[10002];

charres[100];

scanf("%d",&t);

getchar();

while(t--)

{

ret=0;

gets(a);

len=strlen(a);

for(i=0;i

{

ret*=2;

ret+=a[i]-'0';

}

j=0;

while(ret>0)

{

result=ret%16;

res[j]=alp[result];

ret=ret/16;

j++;

}

for(i=j-1;i>=0;i--)

printf("%c",res[i]);

putchar('\n');

}

}

#include  

#include

charalp[]="0123456789ABCDEF";

intmain(void)

{

intresult=0,ret;

inti,len,t,j,k,p;

chara[10002];

charres[100];

scanf("%d",&t);

getchar();

while(t--)

{

ret=0;

gets(a);

len=strlen(a);

strrev(a);

j=0;

for(i=0;i

{

result=0;

p=1;

for(k=i;k

result+=(a[k]-'0')*p;

res[j++]=alp[result];

}

for(i=j-1;i>=0;i--)

printf("%c",res[i]);

putchar('\n');

}

}

/*m进制到n进制*/

#include

#include

charapl[]="0123456789ABCDEF";

intmain()

{

intret,result;

intm,n,t,i,j,len;

chara[100002];

charb[100002];

scanf("%d",&t);

getchar();

while(t--)

{

scanf("%d%d",&m,&n);

ret=0;

scanf("%s",a);

len=strlen(a);

for(i=0;i

{

if(a[i]-'0'>=m)

continue;

ret*=m;

ret+=a[i]-'0';

}

j=0;

while(ret>0)

{

result=ret%n;

b[j]=apl[result];

ret=ret/n;

j++;

}

for(i=j-1;i>=0;i--)

{

printf("%c",b[i]);

}

putchar('\n');

}

}

/*将字符串倒着输出*/

#include

#include

intmain()

{

intt;

chara[10002];

scanf("%d",&t);

getchar();

while(t--)

{

gets(a);

strrev(a);

printf("%s\n",a);

}

}

第八章

一:

计算对数

#include

#include

intmain()

{

inta,b;

intx,n;

doubletemp;

scanf("%d",&n);

while(n--)

{

scanf("%d%d",&a,&b);

temp=log10(b)*1.0/log10(a);

x=(int)temp;

printf("%d\n",x);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1