主题:看看你能得几分,学校程序竞赛
附件是做后面两题做用的!!!努力哦,期待你的答案,哈哈
第1题
编写程序P1,从键盘输入两个正整数,然后在屏幕上显示它们的最小公倍数。
第2题
编写程序P2,从键盘依次输入 3 个正整数 A、B、C ,然后把 A 分成尽可能接近的两个正整数 A1 和 A2 ,使 A1+A2=A ,A1 能被 B 整除,A2 能被 C 整除,最后依次输出 A1 和 A2 ,两数之间用一个空格分隔。如果不存在符合条件的 A1 和 A2 ,输出一个数字 0 。
第3题
编写程序P3,从键盘输入一个正整数 N,然后计算从 1 到 N 的范围内,有多少个整数的最高位是 1,最后在屏幕上输出计算所得的个数。
例如,键盘输入 14 ,屏幕应当输出 6 ,因为从 1到 14 的范围内有 6 个整数的最高位是 1:1、10、11、12、13、14 。
第4题
如果一个数列中,除第一个外,每一个数都比前一个大,那么这个数列称为递增序列。如果数列中的某一段符合递增序列的条件,那么这一段称为该数列中的递增子序列。
编写程序P4,从键盘输入一批(不超过 100 个)正整数组成的数列,最后输入 0 表示结束。在这个数列中,寻找最长的递增子序列,在屏幕上依次输出这个子序列中的数,数之间用一个空格分隔。
例如,输入 11,23,54,26,26,35,64,77,71,80,0 ,输出是 26 35 64 77 。
第5题
下面是一个 5 行 5 列的直角螺旋数阵:
1
2 12
3 13 11
4 14 15 10
5 6 7 8 9
编写程序P5,从键盘输入 n(1<n<20),然后从屏幕输出 n 行 n 列的直角螺旋数阵。每个数占 4 个字符位置,不足时在前面用空格补足。
第6题
屏幕上的图像是由按行、列整齐排列的小点(像素)组成的,如果用不同数值来表示像素的不同颜色,那么,屏幕上一个矩形区域的图像就可以保存到一个二维数组中,数组的一个元素对应一个像素。如果逐行、逐个地把数组元素保存到一个文件中,也就把图像保存到了文件中。
Map.dat 就是这样一个文件,它保存着高、宽各 128 像素的一幅图像,图像内容是黑色背景上有一个白色的实心圆,一个 0 表示一个黑色像素,一个 1 表示一个白色像素。附图6是经放大后的局部图像。
编写程序P6,实现以下功能:
1、从文件 Map.dat 把数据读到 128 行 128 列的二维数组 datas 中。
2、依据数组中的数据,判断数组的哪个元素对应实心圆的圆心像素,在屏幕上依次输出这个元素的行、列下标,两数之间用一个空格分隔。(如果使用 Pascal、Delphi ,数组的下标也要从 0 开始)
提示:关于从文件读取数据到数组,子目录ReadFile中有 VC++、Java、C#、VB、Turbo C、Turbo Pascal、Delphi 等语言平台的源程序可供参考利用。
第7题
编写程序P7,背景情况和输出要求同上题,但有三点不同:
1、输入文件是 Map7.dat ,它的长度比上题的 Map.dat 小得多,因为它的每个整数都对应 16 个像素,对应规则如下。
2、Map7.dat 中的每个数,其二进制的低 16 位对应 16 个像素,例如,如果文件中第 1 个数是 19741 ,它的二进制低 16 位是 0100110100011101 ,表示数组中 datas[0][0]、datas[0][1]、……datas[0][15] 的值依次是0、1、0、0、……1、0、1 。文件中的第二个数则对应 datas[0][16]、……datas[0][31] ,依此类推。
3、由于摄影过程受到干扰,实心圆的内部有一些宽度为一个像素的黑色同心圆,实心圆的外部有一些宽度为一个像素的白色同心圆,这些同心圆之间都有超过一个像素的距离,如附图7所示。
第1题
编写程序P1,从键盘输入两个正整数,然后在屏幕上显示它们的最小公倍数。
第2题
编写程序P2,从键盘依次输入 3 个正整数 A、B、C ,然后把 A 分成尽可能接近的两个正整数 A1 和 A2 ,使 A1+A2=A ,A1 能被 B 整除,A2 能被 C 整除,最后依次输出 A1 和 A2 ,两数之间用一个空格分隔。如果不存在符合条件的 A1 和 A2 ,输出一个数字 0 。
第3题
编写程序P3,从键盘输入一个正整数 N,然后计算从 1 到 N 的范围内,有多少个整数的最高位是 1,最后在屏幕上输出计算所得的个数。
例如,键盘输入 14 ,屏幕应当输出 6 ,因为从 1到 14 的范围内有 6 个整数的最高位是 1:1、10、11、12、13、14 。
第4题
如果一个数列中,除第一个外,每一个数都比前一个大,那么这个数列称为递增序列。如果数列中的某一段符合递增序列的条件,那么这一段称为该数列中的递增子序列。
编写程序P4,从键盘输入一批(不超过 100 个)正整数组成的数列,最后输入 0 表示结束。在这个数列中,寻找最长的递增子序列,在屏幕上依次输出这个子序列中的数,数之间用一个空格分隔。
例如,输入 11,23,54,26,26,35,64,77,71,80,0 ,输出是 26 35 64 77 。
第5题
下面是一个 5 行 5 列的直角螺旋数阵:
1
2 12
3 13 11
4 14 15 10
5 6 7 8 9
编写程序P5,从键盘输入 n(1<n<20),然后从屏幕输出 n 行 n 列的直角螺旋数阵。每个数占 4 个字符位置,不足时在前面用空格补足。
第6题
屏幕上的图像是由按行、列整齐排列的小点(像素)组成的,如果用不同数值来表示像素的不同颜色,那么,屏幕上一个矩形区域的图像就可以保存到一个二维数组中,数组的一个元素对应一个像素。如果逐行、逐个地把数组元素保存到一个文件中,也就把图像保存到了文件中。
Map.dat 就是这样一个文件,它保存着高、宽各 128 像素的一幅图像,图像内容是黑色背景上有一个白色的实心圆,一个 0 表示一个黑色像素,一个 1 表示一个白色像素。附图6是经放大后的局部图像。
编写程序P6,实现以下功能:
1、从文件 Map.dat 把数据读到 128 行 128 列的二维数组 datas 中。
2、依据数组中的数据,判断数组的哪个元素对应实心圆的圆心像素,在屏幕上依次输出这个元素的行、列下标,两数之间用一个空格分隔。(如果使用 Pascal、Delphi ,数组的下标也要从 0 开始)
提示:关于从文件读取数据到数组,子目录ReadFile中有 VC++、Java、C#、VB、Turbo C、Turbo Pascal、Delphi 等语言平台的源程序可供参考利用。
第7题
编写程序P7,背景情况和输出要求同上题,但有三点不同:
1、输入文件是 Map7.dat ,它的长度比上题的 Map.dat 小得多,因为它的每个整数都对应 16 个像素,对应规则如下。
2、Map7.dat 中的每个数,其二进制的低 16 位对应 16 个像素,例如,如果文件中第 1 个数是 19741 ,它的二进制低 16 位是 0100110100011101 ,表示数组中 datas[0][0]、datas[0][1]、……datas[0][15] 的值依次是0、1、0、0、……1、0、1 。文件中的第二个数则对应 datas[0][16]、……datas[0][31] ,依此类推。
3、由于摄影过程受到干扰,实心圆的内部有一些宽度为一个像素的黑色同心圆,实心圆的外部有一些宽度为一个像素的白色同心圆,这些同心圆之间都有超过一个像素的距离,如附图7所示。