当前位置:
文档之家› 程序设计实验及在线指导课后习题答案
程序设计实验及在线指导课后习题答案
其后n行每行有n个整数,取值为0或255。
整数之间用一个空格隔开。已知n不大于1000。
输出
输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。
样例输入
5
255 255 255 255 255
255 0 0 0 255
255 0 255 0 255
255 0 0 0 255
255 255 255 255 255
第二章干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
输入
第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,
取值为15到25。
输出
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
样例输入
2
18
17
样例输出
17.50提示
要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:
printf("%.2f", num);
#include<stdio.h>
int main()
{
int n,i,age;
double sum,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。
for(j=0;j<n;j++)
{
scanf("%d",&s[i][j]);
}
j=0;
for(i=0;i<n;i++)
{
if(s[i][j]==0)
{
b=i;
t=j;
break;
}
j++;
}
i=0;
for(j=0;j<n;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<N<100)的矩阵描述,
矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。
我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:
如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。
每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),
两个整数之间用一个空格隔开。
输出
输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,
用一个空格分开。
样例输入
6
99 99 99 99 99 99
99 99 99 50 99 99
99 99 49 49 50 51
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<m;i++)
{
if(a[j]==2*a[i])
count++;
}
}
printf("%d %d\n",count,m);
样例输出
1
提示
如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。*/
#include<stdio.h>
int s[1000][1000];
int main()
{
int n,i,j,b,c,k,t;
int area;
area=0;
scanf("%d",&n);
for(i=0;i<n;i++)
99 50 20 25 52 99
40 50 99 99 99 99
99 99 99 99 99 99
样例输出
9 8*/
#include<stdio.h>
int s[1000][1000];
}
}
}
}
四:肿瘤面积
/*描述
在一个正方形的灰度图片上,肿瘤是一块矩形的区域,
肿瘤的边缘所在的像素点在图片中用0表示。
其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,
计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。
已知肿瘤的边缘平行于图像的边缘。
输入
只有一个测试样例。第一行有一个整数n,表示正方形图像的边长。
输出
输出一行,给出一个正整数,是5个数中小于a的数的和。
样例输入
10 1 2 3 4 11
样例输出
10
#include<stdio.h>
int main()
{
int a,i,s[5];
int sum;
sum=0;
scanf("%d",&a);
for(i=0;i<5;i++)
{
scanf("%d",&s[i]);
样例输入
1 4 3 2 9 7 18 22 0
2 4 8 10 0
7 5 11 13 1 3 0
-1
样例输出
3
2
0*/
#include<stdio.h>
int main()
{
int a[16],i;
int count,j,m=0;
while(1)
{
scanf("%d",&a[0]);
if(a[0]==-1)
}
for(i=0;i<5;i++)
{
if(s[i]<a)
sum+=s[i];
}
printf("%d\n",sum);
}
/*三:两倍:
描述
给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:
数对中一个数是另一个数的两倍。
比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,
我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,
如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,
则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,
要求计算其中的肿瘤的面积和周长。
输入
输入第一行包含一个正整数N(0<N<100),表示图像的大小;接下来N行,
18是9的两倍。
输入
输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。
每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。
输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。
输出
对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。