文章目录
枚举题:给条件列出所有可能值
2.1求所有三位数abc+bcc=532
#include <stdio.h>
#include <stdlib.h>
int main()
{
//枚举:给条件列出所有可能值
//求三位数abc+bcc=532
int a,b,c;
for(a=0;a<10;a++){
for(b=0;b<10;b++){
for(c=0;c<10;c++){
if(a*100+b*10+c+b*100+c*10+c==532)
printf("%d %d %d\n",a,b,c);
}
}
}
return 0;
}
2.2求所有四位数abcd,其九倍与其逆序数相等
#include <stdio.h>
#include <stdlib.h>
int main()
{
//求四位数abcd,其九倍与其逆序数相等
int a,b,c,d;
for(a=0;a<10;a++){
for(b=0;b<10;b++){
for(c=0;c<10;c++){
for(d=0;d<10;d++){
if((a*1000+b*100+c*10+d)*9==d*1000+c*100+b*10+a)
printf("%d%d%d%d\n",a,b,c,d);
}
}
}
}
return 0;
}
2.3求所有平方为对称的不大于256的数
如11的平方为121是对称
#include <stdio.h>
#include <stdlib.h>
//循环:知道次数用for,不知道用while
//对称平方数
int reverse(int num)
{
int temp=0;
while(num!=0){
temp=temp*10+num%10;
num=num/10;
}
return temp;
}
int main()
{
int i;
for(i=0;i<257;i++){
if(i*i==reverse(i*i))
printf("%d\n",i);
}
return 0;
}
图形题:二维数组+数字规律
2.4输入一个高度h,输出一个高度为h、上底边长度为h的*梯形
#include <stdio.h>
#include <stdlib.h>
int main()
{
//输入一个高度h,输出一个高度为h、上底边长度为h的梯形
int h;
printf("请输入高度h:");
scanf("%d",&h);
for(int i=0;i<h;i++){
for(int j=0;j<2*h-2*(i+1);j++)
printf(" ");
for(int k=0;k<h+2*i;k++)
printf("*");
printf("\n");
}
return 0;
}
2.5叠筐
#include <stdio.h>
#include <stdlib.h>
int main()
{
//图案问题:二维数组+数字规律
//例题2.5叠筐
//题目描述:把一个个大小差一圈的筐叠上去,使待从上往下看时,边筐花色交错。
//输入是一个个三元维,分别是:外筐尺寸n(n为满足0<n<80的奇整数,中心花色字符,外面花色字符,后二者都为ASCII可见字行。
//输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间盥有一行间隔。
int n;
char in,out;
printf("请输入外筐尺寸n(n为满足0<n<80的奇整数,中心花色字符,外面花色字符:");
char a[80][80];
int length;//框长度
int x,y;//起点下标
bool flag=true;//框之间要空一行,判断是否是第一行
char cur=in;//当前填框字符
while(scanf("%d %c %c",&n,&in,&out)!=EOF){
if(flag == true){
flag=false;
}else{
printf("\n");
}
for(length=1,x=n/2,y=n/2;length<=n;length+=2,x--,y--){
//每次循环:填满一个长度为length的正方形
for(int i=x,j=y;i<x+length;++i){
//左上到左下:j不变,i从x到length-1
a[i][j]=cur;
}
for(int i=x,j=y+length-1;i<x+length;++i){
//右上到右下:j不变,i从x到length-1
a[i][j]=cur;
}
for(int i=x,j=y;j<y+length;++j){
//左上到右上:i不变,j从y到y+length-1
a[i][j]=cur;
}
for(int i=x+length-1,j=y;j<y+length;++j){
//左下到右下:i不变,j从y到y+length-1
a[i][j]=cur;
}
if(cur==in){
cur=out;
}
else{
cur=in;
}
}
//磨掉角
if(n!=1){
a[0][0]=' ';
a[0][n-1]=' ';
a[n-1][0]=' ';
a[n-1][n-1]=' ';
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
printf("%c",a[i][j]);
printf("\n");
}
}
return 0;
}