《北方工大学程序设计专题前三章编程答案》由会员分享,可在线阅读,更多相关《北方工大学程序设计专题前三章编程答案(75页珍藏版)》请在金锄头文库上搜索。
1、实验一 简单计算问题1、数字求和问题描述给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?输入形式输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。输出形式输出一行,给出一个正整数,是5个数中小于a的数的和。样例输入10 1 2 3 4 11样例输出10*/#includeint main()int a6;int i;int sum=0;for(i=0;i6;i+)scanf(%d,&ai);for(i=0;iai)sum=sum+ai;printf( %d ,sum);return 0;/*2、两倍数问题描述给定2到15个不同的正整数,你的任
2、务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。 比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2的两倍,18是9的两倍。 输入形式输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。输出形式对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。样例输入1 4 3 2 9 7 18 22 02 4 8 10 07 5 11 13 1 3 0
3、-1样例输出320*/# includeint main(void) int a2015; int i=0,j=0,k,t,w,sum=0; scanf(%d,&t); while(t!=-1) if(t!=0) aij+=t; else aij=t; i+;j=0; scanf(%d,&t);for(k=0,j=0,w=0;ki;k+) while(akj!=0) w=0; while(akw!=0) if(float)akj/2=(float)akw) sum+; w+; j+; printf(%dn,sum); sum=0; j=0; return 0;/*3、Number Sequen
4、ce问题描述A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2) mod 7.Given A, B, and n, you are to calculate the value of f(n).输入形式The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 = A, B = 1000, 1 = n
5、= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.输出形式For each test case, print the value of f(n) on a single line.样例输入1 1 31 2 100 0 0样例输出25*/#includeint main() int fun(int x);int a,b,n;int t;scanf(d%d%d%,&a,&b,&n);while(a!=0&b!=0&n!=0)fun(n);scanf(%d%d%d
6、,&a,&b,&n);return 0;int fun(int x)if(x=1|x=2)t=1;else t=(fun(x-1)*a+fun(x-2)*b)%7; printf(%dn,t);return (t)4、肿瘤检测问题描述一张CT扫描的灰度图像可以用一个N*N(0N100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左
7、右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。输入形式输入第一行包含一个正整数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
8、99 9999 99 99 99 99 99样例输出9 8测试数据2:样例输入799 99 99 99 99 99 6599 99 99 50 99 99 2599 99 49 49 50 49 3499 50 20 25 52 99 3840 50 99 99 99 99 3599 99 99 99 99 99 5599 99 99 99 99 99 77样例输出14 13#includeint main()int a200200;int i,j,size=0,circle=0;int n;scanf(%d,&n); for(i=0;in;i+)for(j=0;jn;j+)scanf(%2d
9、,&aij); for(i=0;in;i+)for(j=0;jn;j+)if(aij50|ai+1j50|aij+150|aij-150) circle+; printf(%d %d,size,circle);return 0;5、填词问题描述Alex喜欢填词游戏。填词是游戏是一个非常简单的游戏。填词游戏包括一个N * M大小的矩形方格盘和P个单词。玩家需要把每个方格中填上一个字母使得每个单词都能在方格盘上找到。每个单词都能找到要满足下面的条件: 每个方格都不能同时属于超过一个的单词。一个长为k的单词一定要占据k个方格。单词在方格盘中出现的方向只能是竖直的或者水平的。 你的任务是首先在方格盘上
10、找到所有的单词,当然在棋盘上可能有些方格没有被单词占据。然后把这些没有用的方格找出来,把这些方格上的字母按照字典序组成一个“神秘单词”。 如果你还不了解规则,我们可以具一个例子,比如在下图中寻找单词BEG和GEE。 输入形式输入的第一行包括三个整数N,M和P (2 = M, N = 10, 0 = P =100)。接下来的N行,每行包括M个字符,来表示方格盘。接下来P行给出需要在方格盘中找到的单词。 输入保证填词游戏至少有一组答案。 输入中给出的字母都是大写字母。 输出形式输出“神秘单词”,注意“神秘单词”中的字母要按照字典序给出。样例输入3 3 2EBGGEEEGEBEGGEE样例输出EEG
11、#include #include int main() int ch26; memset(ch,0,sizeof(ch); int i,n,m,p; char str200; char c; scanf(%d%d%d,&n,&m,&p); while(n-) scanf(%s,str); for(i=0;stri!=0;i+) chstri-A+; while(p-) scanf(%s,str); for(i=0;stri!=0;i+) chstri-A-; for(i=0;i26;i+) if(chi!=0) while(chi-) c=A+i; printf(%c,c); return
12、0; 6、垂直直方图问题描述输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。输入形式输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。输出形式输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。样例输入THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.THIS IS AN EXAMPLE TO TEST FOR YOURHISTOGRAM PROGRAM.HELLO!样例输出 * * * * * * * * * * * * * * * * * * * * * * * * * *