7-46 输出下半张九九乘法表 (10 分)
请输出下半张九九乘法表,即下三角的半张。
1×1= 1
2×1= 2 2×2= 4
3×1= 3 3×2= 6 3×3= 9
4×1= 4 4×2= 8 4×3=12 4×4=16
5×1= 5 5×2=10 5×3=15 5×4=20 5×5=25
6×1= 6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36
7×1= 7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49
8×1= 8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64
9×1= 9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
输入格式:
无
输出格式:
按下面的格式输出,每个乘法结果值占2位(默认为右对齐),其他数值仅占1位,每对之间一个空格隔开,最后一个也有空格,即每行结束后都有一空格,如1×1=1后有一空格再回车到第二行。(注意在C语言中×用 * 表示 )
1×1= 1
2×1= 2 2×2= 4
3×1= 3 3×2= 6 3×3= 9
4×1= 4 4×2= 8 4×3=12 4×4=16
5×1= 5 5×2=10 5×3=15 5×4=20 5×5=25
6×1= 6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36
7×1= 7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49
8×1= 8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64
9×1= 9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
输入样例:
无
输出样例:
1*1= 1
2*1= 2 2*2= 4
3*1= 3 3*2= 6 3*3= 9
4*1= 4 4*2= 8 4*3=12 4*4=16
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
#include<stdio.h>int main()
{int n = 9;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){printf("%d*%d=%2d ",i,j,i*j);}printf("\n");}return 0;
}
7-47 输出上半张九九乘法表 (10 分)
请输出上半张九九乘法表,即下三角的半张。
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 ......8*8=64 8*9=72 9*9=81
输入格式:
无
输出格式:
按下面的格式输出,每个乘法结果值占2位(默认右对齐),其他数值仅占1位,每对之间一个空格隔开,最后一个也有空格,即每行结束后都有一空格,如1×9=9后有一空格再回车到第二行。
注意:从第二行开始前面都有空格,提示每个乘法共占6位,一定要注意上下是对齐的。
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 ...... 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81
输入样例:
无
输出样例:
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81
#include<stdio.h>int main()
{int n = 9;for(int i=1;i<=n;i++){for(int j=1;j<i;j++)printf(" ");for(int j=i;j<=9;j++){printf("%d*%d=%2d ",i,j,i*j);}printf("\n");}return 0;
}
7-48 输出完数 (10 分)
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子为1,2,3,而6=1+2+3,因此6是完数。编程找出2-1000之内的所有完数,并按下列格式输出其因子:6 its factors are 1 2 3。
输入格式:
无
输出格式:
每行输出一个完数,格式如下:因子间有一个空格隔开,每行结束后也有一空格。 6 its factors are 1 2 3 ......
输入样例:
无
输出样例:
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
...
7-49 图像过滤 (20 分)本题来自于PAT (Basic Level) Practice。图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。
输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0<M,N≤500),另外是待过滤的灰度值区间端点 A 和 B(0≤A<B≤255)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。
输出格式:输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000),其间以一个空格分隔。行首尾不得有多余空格。
输入样例:在这里给出一组输入。例如:3 5 100 150 0
3 189 254 101 119
150 233 151 99 100
88 123 149 0 255输出样例:在这里给出相应的输出。例如:003 189 254 000 000
000 233 151 099 000
088 000 000 000 255
#include<stdio.h>
int isFactor(int i,int n){if(n%i==0) return 1;return 0;
}
int main()
{int m,n,a,b,value;scanf("%d%d%d%d%d",&m,&n,&a,&b,&value);int arr[m][n];for(int i=0;i<m;i++)for(int j=0;j<n;j++){scanf("%d",&arr[i][j]);if(arr[i][j]>=a&&arr[i][j]<=b) arr[i][j]=value;}for(int i=0;i<m;i++){for(int j=0;j<n;j++){printf("%03d",arr[i][j]);if(j!=n-1) printf(" ");}printf("\n");}return 0;
}
7-50 数独简化版 (20 分)
数独是有趣的数学游戏,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、9个3*3的小方格内的数字均含1-9,不重复。但是为了简化题目,本题的数独只需要满足前两个要求即可。
即在本题中对于每一个数独(9*9):
1:每一行包含1-9。
2.每一列包含1-9。
输入格式:
9行9列,仅包含数字0-9。注意:0并不代表该数独位置的数字为0,而是该位置数字未知。每个测试样例仅包含一个未知数字。
输出格式:
输出满足题目要求的未知的那个数字。如果该处填写任何数字均不满足题目所描述的数独,则输出NO。
输入样例:
1 4 9 8 3 6 7 5 2
5 7 6 2 4 1 9 3 8
2 3 8 5 7 9 1 6 4
7 2 4 3 6 8 5 9 1
6 8 3 9 1 5 4 2 7
9 5 1 4 2 7 3 8 6
3 6 2 7 9 4 8 1 5
4 1 5 6 8 3 2 7 9
8 9 7 1 5 2 0 4 3
输出样例:
6
解释:将6填入0的位置中,这就是满足题目要求的正确数独。
输入样例:
1 4 9 8 3 6 7 5 2
5 7 6 2 4 1 9 3 8
2 3 8 5 7 9 1 6 4
7 2 4 3 6 8 5 9 1
6 8 3 9 1 5 4 2 7
9 5 1 4 2 7 3 8 6
3 6 2 7 9 4 8 1 5
4 1 5 6 8 3 2 7 9
8 9 7 1 5 2 0 4 4
输出样例:
NO
解释:最后一行有两个4,不满足数独每一行每一列不重复原则。
#include<stdio.h>
int func(int a[][9])
{for(int i=0;i<9;i++){for(int j=0;j<8;j++){for(int k=j+1;k<9;k++)if(a[i][j]==a[i][k])return 0;}}for(int i=0;i<9;i++){for(int j=0;j<8;j++){for(int k=j+1;k<9;k++)if(a[j][i]==a[k][i])return 0;}}return 1;
}
int main()
{int a[9][9];int m,n;for(int i=0;i<9;i++){for(int j=0;j<9;j++){scanf("%d",&a[i][j]);if(a[i][j]==0) {m=i;n=j;}}}int sum = 45;for(int j = 0;j<9;j++)sum-=a[m][j];a[m][n] = sum;if(func(a))printf("%d",sum);else printf("NO");return 0;
}