7744问题
问题:输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)
#include<stdio.h>
#include<math.h>
int main(){
int a,b;
for(a =1;a<=9;a++)
for(b=0;b<=9;b++)
{int n;
n=a*1100+b*11;
int m;
m=floor(sqrt(n)+0.5);
if(m*m=n)printf("%d\n",n);
}
return 0;
}
第二种解法
#include<stdio.h>
int main(){
for(x=1;;x++)
{
int n=x*x;
if(n<1000)continue;
if(n>9999)break;
int hi=n/100;
int lo=n%100;
if(hi/10==hi%10&&lo/10==lo%10)
printf(“%d”,n)
}
return 0;
}
逆序输出
#include<stdio.h>
#define maxn 105;
int a[maxn];//定义在主函数外 数组可以开到很大
int main(){
int x,n=0;
while(scanf("%d",&x)==1)//当有数据输入时
a[n++]=x;
for(i=n-1;i>=1;i--)
printf("%d",a[i]);//一般要求的行首行尾均无空格,相邻两个数据间用单个空格隔开,一共有n个整数,但是只有n-1个空格
printf("%d",a[0]);
return 0;}
开灯问题
#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];
int main(){
int n,k,first=1;
memset(a,0,sizeof(a));//作用将数组清零;在string.h中定义
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++)//k个人
for(int j=1;j<=n;j++)//n盏灯
if(j%i==0)a[j]=!a[j];//第n个人按下n的倍数开关 ,关掉的灯将被打开,开着的灯将被关闭
for(int i=1;i<=n;i++){
if(a[i]){//判断输出的变量是否为第一个,如果是 first清零 输出第一个数 ,无空格
if(first)
first=0;
else printf(" ");
printf("%d",i);)
printf("\n");
return 0;
}
蛇形填数
#include<stdio.h>
#include<string.h>
#define maxn 20
int a[maxn][maxn];
int main(){
int n,x,y,tot=0;
scanf("%d",&n):
memset(a,0,sizeof(a));
tot=a[x=0][y=n-1]==1;
while(tot<n*n){
while(x+1<n && !a[x+1][y])a[++x][y]=++tot;//a[x+1][y]==0先判断是否越界 向下走
while(y-1>=0 && !a[x][--y])a[x][--y]=++tot;//向左走
while(x-1>=0 &&a[x--][y])a[x--][y]=++tot;//向上走
while(y+1<n &&a[x][y+1])a[x][++y]=++tot;//向右走
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%3d",a[x][y]);
printf("\n");
}
return 0;
}