其实很简单,但是不知道为啥卡了我思维半天,想通了就豁然开朗(状态不太行
小蒜想让你根据参数,画出一个他想要的矩形。
输入格式
输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于 3
3 行不多于 10
10 行,宽不少于 5
5 列不多于 10
10 列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为 1
1 或 0
0,0
0 代表空心,1
1 代表实心。
输出格式
输出画出的图形。
小蒜想让你根据参数,画出一个他想要的矩形。
样例输入
样例输出
1 2 3 4 5 6 7
   | @@@@@@@ @     @ @     @ @     @ @     @ @     @ @@@@@@@
   | 
 
【解题思路】
思路1:按行输出
输入高h,宽w,字符c,是否实心x
内部字符c_in有两种,若是实心图形,内部字符是c,若是空心图形,内部字符是’ ‘(空格)
上下两行,需要输出w个c,再输出换行。
中间的h - 2行,需要先输出一个c,再输出w - 2个c_in,再输出一个c,再输出换行。
思路2:遍历矩阵
循环嵌套输出整个矩阵
针对每个位置进行判断,如果符合条件,则输出*,否则输出’ ‘。
条件为:
如果是外圈,即行号为1或h,或列号为1或w,那么输出*
如果不是外圈,是内部位置,那么判断是否是实心,是实心输出*,否则输出’ ’
1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | #include<stdio.h> int main() {     int h,w,x;     char  c;     scanf("%d %d %c %d",&h,&w,&c,&x);     char c_in = x == 1 ? c : ' ';    for(int i = 0;i < w;i++)         printf("%c",c);     printf("\n");     for(int i = 0;i < h - 2;i++)     {     printf("%c",c);     for(int j = 0;j < w - 2;j++)         printf("%c",c_in);     printf("%c\n",c);     }     for(int i = 0;i < w;i++)     {         printf("%c",c);     }     printf("\n");     return 0; }
   | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | 2.#include<stdio.h> int main() {     int h,w,x;     char c;     scanf("%d %d %c %d",&h,&w,&c,&x);     for(int i = 1;i <= h;i++)     {         for(int j = 1;j <= w;j++)         {             if(i == 1 || i == h || j == 1 || j == w)                 printf("%c",c);             else             {                 if( x == 1)                     printf("%c",c);                 else                     printf(" ");             }         }         printf("\n");     }     return 0; }
   | 
 
【题目描述】
蒜头君有一个正整数 n,他想求第 n小的质数。
【输入格式】
一个不超过 10000的正整数 n。
【输出格式】
第 n 小的质数。
输出时每行末尾的多余空格,不影响答案正确性
【样例输入】
【样例输出】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   | #include<stdio.h> #include<math.h> int isprime(int m) { //判断一个数是不是质数      int i;     for(i=2; i<=sqrt(m); i++)          if(m%i==0)                 return 0;     return 1; } int main()  {     int n,sum=0;//定义第n小,质数累加      scanf("%d",&n);      for(int i=2;;i++)     {         if( isprime(i)==1)             sum++;         if(sum==n)  //等于第n小的时候输出          {             printf("%d\n",i);              break;         }            }     return 0; }
   |