程序设计实验及在线指导课后习题答案Word格式.docx
《程序设计实验及在线指导课后习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《程序设计实验及在线指导课后习题答案Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
![程序设计实验及在线指导课后习题答案Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/14/bcf4c556-526e-4f9d-af7e-862627655126/bcf4c556-526e-4f9d-af7e-8626276551261.gif)
for(i=1;
i<
=n;
i++)
{
scanf("
age);
sum+=age;
}
average=sum/n;
printf("
%.2f\n"
average);
}
/*二:
数字求和
描述
给定一个正整数a,以及另外的5个正整数,问题是:
这5个整数中,小于a的整数的和是多少?
输入
输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。
输出
输出一行,给出一个正整数,是5个数中小于a的数的和。
样例输入
10123411
样例输出
10
inta,i,s[5];
intsum;
sum=0;
a);
for(i=0;
5;
s[i]);
if(s[i]<
a)
sum+=s[i];
%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
0*/
inta[16],i;
intcount,j,m=0;
while
(1)
a[0]);
if(a[0]==-1)
break;
m=0;
for(i=1;
;
{
scanf("
a[i]);
m++;
if(a[i]==0)
break;
}
count=0;
j=m;
while(j--)
for(i=0;
m;
{
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
1
提示
如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。
*/
ints[1000][1000];
intn,i,j,b,c,k,t;
intarea;
area=0;
n;
for(j=0;
j<
j++)
s[i][j]);
j=0;
if(s[i][j]==0)
b=i;
t=j;
j++;
i=0;
for(j=0;
c=j;
k=i;
i++;
area=(k-b-1)*(c-t-1);
%d%d%d%d%d\n"
area,b,c,k,t);
/*五:
肿瘤检测
一张CT扫描的灰度图像可以用一个N*N(0<
N<
100)的矩阵描述,
矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。
我们假设给定的图像中有且只有一个肿瘤。
在图上监测肿瘤的方法如下:
如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。
我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。
任何在肿瘤上的点,
如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,
则该点称为肿瘤的边界点。
肿瘤的边界点的个数称为肿瘤的周长。
现在给定一个图像,
要求计算其中的肿瘤的面积和周长。
输入第一行包含一个正整数N(0<
100),表示图像的大小;
接下来N行,
每行包含图像的一行。
图像的一行用N个整数表示(所有整数大于等于0,小于等于255),
两个整数之间用一个空格隔开。
输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,
用一个空格分开。
6
999999999999
999999509999
999949495051
995020255299
405099999999
98*/
intn,i,j;
intarea,permit;
permit=0;
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++;
area,permit);
/*八:
简单密码
描述JuliusCaesar曾经使用过一种很简单的密码。
对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。
比如字符A用F来代替。
如下是密文和明文中字符的对应关系。
密文
ABCDEFGHIJKLMNOPQRSTUVWXYZ
明文
VWXYZABCDEFGHIJKLMNOPQRSTU
你的任务是对给定的密文进行解密得到明文。
你需要注意的是,密文中出现的字母都是大写字母。
密文中也包括非字母的字符,对这些字符不用进行解码。
输入输入中的测试数据不超过100组。
每组数据都有如下的形式,而且各组测试数据之间没有空白的行。
一组测试数据包括三部分
1.起始行-一行,包括字符串"
START"
2.密文-一行,给出密文,密文不为空,而且其中的字符数不超过200
3.结束行-一行,包括字符串"
END"
在最后一组测试数据之后有一行,包括字符串"
ENDOFINPUT"
。
输出对每组数据,都有一行输出,给出密文对应的明文。
START
NSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJX
END
NBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJHTSINSWTRJ
IFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJ
ENDOFINPUT
INWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSES
IWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROME
DANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE*/
string.h>
chars[201],end[201];
charb[27]="
VWXYZABCDEFGHIJKLMNOPQRSTU"
inti,len;
gets(s);
while(strcmp(s,"
)==0)
gets(s);
len=strlen(s);
for(i=0;
len;
if(s[i]>
='
A'
&
s[i]<
Z'
)
s[i]=b[s[i]-'
];
gets(end);
%s\n"
s);
第三章
一:
十进制到八进制
ints[200];
while(n>
0)
s[i]=n%8;
n=n/8;
for(j=i-1;
j>
=0;
j--)
%o"
s[j]);
二:
八进制到十进制
inti,len,ret;
chars[100];
ret=0;
%s"
s);
len=strlen(s);
ret*=8;
ret+=s[i]-'
0'
ret);
三:
二进制到十六进制
#include<
charalp[]="
0123456789ABCDEF"
intresult=0,ret;
inti,len,t,j,k,p;
chara[10002];
charres[100];
t);
getchar();
while(t--)
ret=0;
gets(a);
len=strlen(a);
ret*=2;
ret+=a[i]-'
j=0;
while(ret>
result=ret%16;
res[j]=alp[result];
ret=ret/16;
j++;
for(i=j-1;
i>
i--)
printf("
%c"
res[i]);
putchar('
\n'
);
intmain(void)
strrev(a);
for(i=0;
i+=4)
result=0;
p=1;
for(k=i;
k<
i+4&
k<
k++,p*=2)
result+=(a[k]-'
)*p;
res[j++]=alp[result];
/*m进制到n进制*/
charapl[]="
intret,result;
intm,n,t,i,j,len;
chara[100002];
charb[100002];
%d%d"
m,&
a);
if(a[i]-'
>
=m)
continue;
ret*=m;
result=ret%n;
b[j]=apl[result];
ret=ret/n;
for(i=j-1;
b[i]);
/*将字符串倒着输出*/
intt;
第八章
计算对数
math.h>
intmain()
inta,b;
intx,n;
doubletemp;
while(n--)
a,&
b);
temp=log10(b)*1.0/log10(a);
x=(int)temp;
x);