//预先思考一遍,把自己的思路敲下来,看别人的代码即使看懂了,事后也能打出来,但是时间一久就没有印象了,但是自己想的就不一样了,思考的过程不会变的,自己想的永远不会忘掉,可以看别人的想法,但是少一点看别人的的代码
1:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
思路:不要想太复杂了,把它一行一行分解开来,再把一行分成一列一列,每一列都是:0 和 1;所以只要每一列输出0 和 1 就行了,然后输出一行,然后输出32行就行了,运用到for循环就行了;
#include<stdio.h>
int main()
{
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
for(int a=0;a<=1;a++)
for(int b=0;b<=1;b++)
printf("%d%d%d%d%d\n",i,j,k,a,b);
}
2:问题描述
打印
* * *
* * *
* * *
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("* ");
}
printf("\n");
}
}
3:打印
* * *
* * *
* * *
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){//控制行数n行;
for(int j=1;j<=n-i;j++){//n=2;i=2时,不用输出空格;后面的空格不用去管;只要考虑前面的空格就行了;
printf(" ");
}
for(int k=1;k<=n;k++)
printf("*");
printf("\n");
}
}
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){//和上题一模一样;后面的空格不用去管;只要考虑前面的空格就行了;
for(int j=1;j<=n-i;j++){
printf(" ");
}
for(int k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
5:打印:
***********
*******
*****
***
*
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){//和上题一模一样;后面的空格不用去管;只要考虑前面的空格就行了;
for(int j=1;j<=i;j++){
printf(" ");
}
for(int k=1;k<=2*(n-i)-1;k++)
printf("*");
printf("\n");
}
}
6:打印:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){//和上题一模一样;后面的空格不用去管;只要考虑前面的空格就行了;
for(int j=1;j<=n-i;j++){
printf(" ");
}
for(int k=1;k<=2*i+3;k++)
printf("*");
printf("\n");
}
}
7:打印:
****
* *
* *
**********
思路:预先打印第一行和最后一行
建立一个坐标系一样,两旁的星点可以用两个方程式表示;先确定范围;
#include<stdio.h>
int a[100][100]={0};//定义一个二维数组,把每一个都当做一个坐标,注意数组开始是以0开始的,即第一个坐标为a[0][0];
int main()
{
int n;
scanf("%d",&n);
for(int i=n-1;i<2*n-1;i++) //打印第一行星点,以1表示为星点
{
a[0][i]=1;
}
for(int j=0;j<3*n-2;j++) //打印第二行星点
{
a[n-1][j]=1;
}
for(int x=0;x<n;x++) //打印左边的星点
{
for(int y=0;y<n;y++)
{
if(x+y==n-1) //左边的星点所代表的方程式
a[x][y]=1;
}
}
for(int x=0;x<n;x++)
{
for(int y=0;y<3*n-2;y++) //打印右边的星点
{
if(y-x==6)
a[x][y]=1;
}
}
for(int x=0;x<n;x++) //输出星点,把1替换掉,注意这儿的y的范围,x表示的是有多少行,y表示的是有多少列,
{
for(int y=0;y<3*n-2;y++)
{
if(a[x][y]==1)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}