ZXPoo 发表于 2021-10-27 19:45:11

用c怎么写

3) 编写程序,打印出所有的“abcd=(ab+cd)2”性质的数,例如3025=(30+25)2。
【要求】
(1)打印的数字占8个字符宽,每行显示3个
(2)使用for语句实现

4) 从键盘输入一个数n,打印高度为2*n-1行的菱形,例如:n=4时,打印图形如下:






【要求】
(1)打印的高度需要通过键盘输入的n控制
(2)使用for语句

傻眼貓咪 发表于 2021-10-27 20:04:00

本帖最后由 傻眼貓咪 于 2021-10-27 22:16 编辑

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

bool solution(int n){
    int a = n/1000;
    int b = (n%1000)/100;
    int x = (n%100)/10;
    int y = n%10;
    return n == pow((a*10+b)+(x*10+y), 2);
}

int main(){
    for(int i = 1000; i < 10000; i++) if(solution(i)) printf("%d\n", i);
    return 0;
}2025
3025
9801

#include <stdio.h>

void print(int n){
    n = 2*n-1;
    for(int i = 0; i < (n>>1); i++){
      for(int j = (n>>1)-i-1; j >= 0; j--) printf(" ");
      for(int j = 0; j < (i<<1)+1; j ++) printf("*");
      printf("\n");
    }
    for(int i = 0; i < n; i++) printf("*");
    printf("\n");
    for(int i = (n>>1)-1; i >= 0; i--){
      for(int j = (n>>1)-i-1; j >= 0; j--) printf(" ");
      for(int j = 0; j < (i<<1)+1; j ++) printf("*");
      printf("\n");
    }   
}

int main()
{
    int n;
    scanf("%d", &n);
    print(n);
    return 0;
}5
    *   
   ***   
*****
*******
*********
*******
*****
   ***   
    *

jackz007 发表于 2021-10-27 20:46:00

本帖最后由 jackz007 于 2021-10-27 22:04 编辑

【第3)题】:
#include <stdio.h>

int main(void)
{
      int c , e                                             ;
      for(c = 0 , e = 1000 ; e < 10000 ; e ++) {
                if((e / 100 + e % 100) * (e / 100 + e % 100) == e) {
                        if(c && ! (c % 3)) printf("\n")       ;
                        if(c % 3) printf(" ")               ;
                        printf("%7d" , e)                     ;
                        c ++                                  ;
                }                              
      }
      printf("\n")                                          ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
   2025    3025    9801

D:\00.Excise\C>
【第4)题】:
#include <stdio.h>

int main(void)
{
      int b , i , j , n                                 ;
      scanf("%d", & n)                                  ;
      for(i = 1 ; i <= 2 * n - 1 ; i ++) {
                b = (i > n) ? 2 * n - i : i               ;
                for(j = n - b ; j > 0 ; j --) printf(" ") ;
                for(j = b * 2 - 1 ; j ; j --) printf("*") ;
                printf("\n")                              ;
      }
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
5
    *
   ***
*****
*******
*********
*******
*****
   ***
    *

D:\00.Excise\C>x
6
   *
    ***
   *****
*******
*********
***********
*********
*******
   *****
    ***
   *

D:\00.Excise\C>x
7
      *
   ***
    *****
   *******
*********
***********
*************
***********
*********
   *******
    *****
   ***
      *

D:\00.Excise\C>
注意:以上图案与在 CMD 窗口中的视觉效果存在差异。
页: [1]
查看完整版本: 用c怎么写