#include
int main()
{
int n,a,b,c;
scanf("%d",&n);
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(n==2*a+2*b+c)
printf("%d%d%d%d%d\n",a,b,c,b,a);
}
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(n==2*a+2*b+2*c)
printf("%d%d%d%d%d%d\n",a,b,c,c,b,a);
}
return 0;
}
注意:
1.从小到大输出,先用循环找出五位的数,再找出六位数
2.用三个变量去遍历循环会比设置五个或六个要快很多
思路:
这里设置了a,b,c三个变量,用if来筛选出符合条件的数。会比直接六个变量六个循环快
#include
int main()
{
int a,b,c,d;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
for(d=0;d<=9;d++)
{
if(a==d&&b==c)
{
printf("%d%d%d%d",a,b,c,d);
putchar('\n');
}
}
}
}
}
return 0;
}
注意:
a最高位不能为0
思路:
这题需要找出四位数中的回文数。我使用了设置四个变量,然后循环相加,判断对称。如果用两个变量,采用上题的方法,应该也是可行的。
#include
int main()
{
int a,b,c;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
{
printf("%d",a*100+b*10+c);
putchar('\n');
}
}
}
}
return 0;
}
思路:
这题就是按照题目要求,设置三个变量,分别代表个位,十位,百位,然后列出式子即可。
#include
int main()
{
int i,j,n;
int num[35][35];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(i==0||j==0||j==i)
num[i][j]=1;
else
num[i][j]=num[i-1][j-1]+num[i-1][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",num[i][j]);
}
putchar('\n');
}
return 0;
}
注意:
1.1 <= n <= 34。,因为本题使用数组来实现,为了反正出现数组越界的情况,这里我们把数组的大小给到35。
思路:
定义二维数组,根据规律来输出一个杨辉三角。第0列和第i==j的时候都是1,其余是上一行的数相加。
#include
int main()
{
int n,i,a,flag=0;
int num[1001];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
scanf("%d",&a);
for(i=0;i<n;i++)
{
if(a==num[i])
{
flag+=1;
break;
}
else
flag=0;
}
if(flag)
printf("%d",i+1);
else
printf("-1");
return 0;
}
注意:
1.1 <= n <= 1000。因为本题使用数组来实现,为了反正出现数组越界的情况,这里我们把数组的大小给到1001。
2.输入的每个数不大于10000,使用%d输入即可
思路:
按照题目要求输入,然后从数组的开头开始搜索,一旦发现成功,就结束循环,并输出他出现的位数(出现的位数=下标+1),如果没有找到,就输出-1.
#include
int MAX(int num[],int n);
int MIN(int num[],int n);
int main()
{
int n,i,max,min,sum=0;
int num[10000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
for(i=0;i<n;i++)
sum=sum+num[i];
max=MAX(num,n);
min=MIN(num,n);
printf("%d\n",max);
printf("%d\n",min);
printf("%d\n",sum);
}
int MAX(int num[],int n)
{
int max,i;
max=num[0];
for(i=0;i<n;i++)
{
if(max<num[i])
max=num[i];
}
return max;
}
int MIN(int num[],int n)
{
int min,i;
min=num[0];
for(i=0;i<n;i++)
{
if(min>num[i])
min=num[i];
}
return min;
}
注意:
1.每个数的绝对值都小于10000,因此可以用%d输入。
思路:
这里我采用了函数的做法来完成。MAX函数和MIN函数来找出数当中的最大值和最小值。for循环累加得出这组数据的和即可。
如果大家有什么更好的方法,欢迎留言评论。