1、程序设计实验及在线指导课后习题答案第二章/*一:求平均年龄描述 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄, 保留到小数点后两位。 输入 第一行有一个整数n(1= n = 100),表示学生的人数。其后n行每行有1个整数,取值为15到25。 输出 输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。 样例输入 21817样例输出 17.50提示 要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式: printf(%.2f, num);#includeint main() int n,i,age; double sum,average; sum
2、=0.00; scanf(%d,&n); for(i=1;i=n;i+) scanf(%d,&age); sum+=age; average=sum/n; printf(%.2fn,average);/*二:数字求和描述给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?输入输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。输出输出一行,给出一个正整数,是5个数中小于a的数的和。样例输入10 1 2 3 4 11样例输出10#includeint main() int a,i,s5; int sum; sum=0; scanf(%d,&a); f
3、or(i=0;i5;i+) scanf(%d,&si); for(i=0;i5;i+) if(sia) sum+=si; printf(%dn,sum);/*三:两倍:描述给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。输入输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的
4、结束,不用进行处理。输出对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。样例输入1 4 3 2 9 7 18 22 02 4 8 10 07 5 11 13 1 3 0-1样例输出320*/#includeint main() int a16,i; int count,j,m=0; while(1) scanf(%d,&a0); if(a0=-1) break; m=0; for(i=1;i+) scanf(%d,&ai); m+; if(ai=0) break; count=0; j=m; while(j-) for(i=0;im;i+) if(aj=2*ai) c
5、ount+; printf(%d %dn,count,m); 四:肿瘤面积/*描述在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。输入只有一个测试样例。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于1000。输出输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。样例输入5255 255 255 255 255255 0 0 0 2
6、55255 0 255 0 255255 0 0 0 255255 255 255 255 255样例输出1提示如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。*/#includeint s10001000;int main() int n,i,j,b,c,k,t; int area; area=0; scanf(%d,&n); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&sij); j=0; for(i=0;in;i+) if(sij=0) b=i; t=j; break; j+; i=0; for(j=0;jn;j+) if(sij=0) c
7、=j; k=i; i+; area=(k-b-1)*(c-t-1); printf(%d %d %d %d %dn,area,b,c,k,t);/*五:肿瘤检测描述一张CT扫描的灰度图像可以用一个N*N(0N100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤
8、的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。输入输入第一行包含一个正整数N(0N100),表示图像的大小;接下来N行,每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。输出输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。样例输入699 99 99 99 99 9999 99 99 50 99 9999 99 49 49 50 5199 50 20 25 52 9940 50 99 99 99 9999 99 99 99 99 99样例输出9 8*/#includ
9、eint s10001000;int main() int n,i,j; int area,permit; area=0; permit=0; scanf(%d,&n); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&sij); for(i=0;in;i+) for(j=0;jn;j+) if(sij50|si+1j50|sij-150|sij+150) permit+; printf(%d %dn,area,permit);/*八:简单密码描述Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,
10、这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。密文A B C D E F G H I J K L M N O P Q R S T U V W X Y Z明文V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 你的任务是对给定的密文进行解密得到明文。你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。输入输入中的测试数据不超过100组。每组数据都有如下的形式,而且各组测试数据之间没有空白的行。一组测试数据包括三部分1.起始行 - 一行,包括字符串 START 2.密文 -
11、一行,给出密文,密文不为空,而且其中的字符数不超过2003.结束行 - 一行,包括字符串 END 在最后一组测试数据之后有一行,包括字符串 ENDOFINPUT。 输出对每组数据,都有一行输出,给出密文对应的明文。样例输入STARTNS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJXENDSTARTN BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJENDSTARTIFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW N
12、X RTWJ IFSLJWTZX YMFS MJENDENDOFINPUT样例输出IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSESI WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROMEDANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE*/#include#includeint main() char s201,end201; char b27=VWXYZABCDEF
13、GHIJKLMNOPQRSTU; int i,len; gets(s); while(strcmp(s,START)=0) gets(s); len=strlen(s); for(i=0;i=A&si=Z) si=bsi-A; gets(end); printf(%sn,s); gets(s); 第三章一:十进制到八进制#includeint main() int n,i,j; int s200; scanf(%d,&n); i=0; while(n0) si=n%8; n=n/8; i+; for(j=i-1;j=0;j-) printf(%o,sj); 二:八进制到十进制#include#
14、includeint main() int i,len,ret; char s100; ret=0; scanf(%s,&s); len=strlen(s); for(i=0;ilen;i+) ret*=8; ret+=si-0; printf(%dn,ret);三:二进制到十六进制#include #include char alp=0123456789ABCDEF;int main() int result = 0,ret; int i,len,t,j,k,p; char a10002; char res100; scanf(%d,&t); getchar(); while(t-) ret
15、=0; gets(a); len=strlen(a); for(i=0;i0) result=ret%16; resj=alpresult; ret=ret/16; j+; for (i=j-1;i=0;i-) printf(%c,resi); putchar(n); #include #include char alp=0123456789ABCDEF;int main(void) int result = 0,ret; int i,len,t,j,k,p; char a10002; char res100; scanf(%d,&t); getchar(); while(t-) ret=0;
16、 gets(a); len=strlen(a); strrev(a); j=0; for (i=0;ilen;i+=4) result=0; p=1; for (k=i;ki+4 & k=0;i-) printf(%c,resi); putchar(n); /*m进制到n进制*/#include#includechar apl=0123456789ABCDEF;int main() int ret,result; int m,n,t,i,j,len; char a100002; char b100002; scanf(%d,&t); getchar(); while(t-) scanf(%d
17、%d,&m,&n); ret=0; scanf(%s,a); len=strlen(a); for(i=0;i=m) continue; ret*=m; ret+=ai-0; j=0; while(ret0) result=ret%n; bj=aplresult; ret=ret/n; j+; for(i=j-1;i=0;i-) printf(%c,bi); putchar(n); /*将字符串倒着输出*/#include#includeint main() int t; char a10002; scanf(%d,&t); getchar(); while(t-) gets(a); strrev(a); printf(%sn,a); 第八章一:计算对数#include #include int main() int a,b; int x,n; double temp; scanf(%d,&n); while(n-) scanf(%d %d,&a,&b); temp=log10(b)*1.0/log10(a); x=(int) temp; printf(%dn,x); 文本仅供参考,感谢下载!文本仅供参考,感谢下载!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1