程序设计考题汇总(三)

16、输出九九乘法表

在这里插入图片描述

#include <stdio.h>

int main(){
	int i,j,t;
	for(i=1;i<=9;i++){
		for(j=1:j<=9;j++)
			printf("%dx%d=%-2d  ",i,j,i*j);//%-2d表示占两位,若未占满就左对齐;%2d表示占两位,若未占满就右对齐
		printf("\n");
	}
	return 0;
}

for i in range(1,10):
  for j in range(1,i+1):
    print("%dx%d=%-2d"%(i,j,i*j),end=" ")#%-2d表示占两位,若未占满就左对齐;%2d表示占两位,若未占满就右对齐
  print()

17、水仙花数

在这里插入图片描述

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

int main(){
    int i,k,sum=0;
    for(i=100;i<=999;i++){
       k=i;
       sum=0;
       while(k>0){
        sum+=pow(k%10,3);
        k/=10;
       }
       if(sum==i)
        printf("%d ",i);
    }

    return 0;

}
# 方法一:
# import math

# for i in range(100,1000):
#     k=i
#     sum=0
#     while k>0:
#         # sum+=(k%10)**3    #与下边两种写法都可以
#         sum+=math.pow((k%10),3)
#         k//=10  #注意此处//表示向下取整,/表示保留小数
#     if i == sum :
#         print(i)


# 方法二:
def check_num(number:int):
    total = sum([int(n)**3 for n in list(str(number))])
        #sum()函数为python自带,参数为可迭代的,如列表,元组
        #列表生成式[i for i in range(5)]输出[0、1、2、3、4]
        #通过先将整数转化为字符串,再转化为列表,从而将整数的个位、十位、百位分开 
    if total == number:
        return True
    else :
        return False


for i in range(100,1000):
    if check_num(i) :
        print("%d是水仙花数"%(i))

18、数据库左右连接区别

在这里插入图片描述
在这里插入图片描述

19、运营想要了解每个学校答过题的用户平均答题数量情况,请你取出数据。

在这里插入图片描述

select up.university,count(question_id)/count(distinct qpd.device_id) avg_answer_cnt
from user_profile as up,question_practice_detail as qpd
where up.device_id=qpd.device_id
group by up.university

20、求解质因数

在这里插入图片描述

#include <stdio.h>


int main(){
   int m,i;
   scanf("%d",&m);
   printf("%d=",m);
   for(i=2;i<=m;i++){
      while(m%i==0){
         printf("%d",i);
         m/=i;
         if(m>1)
            printf("*");
      }
      if(m==1)
         break;
   }

   return 0;
}
m=int(input())
print("%d="%(m),end="")
for i in range(2,m+1):
    while m%i==0:
        print("%d"%(i),end="")
        m=m/i
        if m>1:
            print("*",end="")
    if m==1:
        break

21、查询前几个元组

在这里插入图片描述

在这里插入图片描述

22、统计打印二叉树节点

#include <stdio.h>
#include <stdlib.h>

//结构体
typedef struct TreeNode{
    char data;
    struct TreeNode *l_child;
    struct TreeNode *r_child;
}BiTree;

//生成一个节点
BiTree *init_node(char x,BiTree *l_child,BiTree *r_child){
    BiTree *node;
    node=(struct TreeNode*)malloc(sizeof(struct TreeNode));
    node->data=x;
    node->l_child=l_child;
    node->r_child=r_child;
    return node;
}

//创造一棵树
BiTree *creat_tree(){
    BiTree *root,*b,*c,*d,*e,*f;
    d=init_node('D',NULL,NULL);
    e=init_node('E',NULL,NULL);
    f=init_node('F',NULL,NULL);
    b=init_node('B',d,NULL);
    c=init_node('C',e,f);
    root=init_node('A',b,c);
    return root;
}

//统计叶节点
int leaf_count(BiTree *T){
    if(T==NULL)
        return 0;
    else if(T->l_child==NULL&&T->r_child==NULL)
        return 1;
    else
        return leaf_count(T->l_child)+leaf_count(T->r_child);
}

//统计非叶节点
int non_leaf_count(BiTree *T){
    if(T==NULL)
        return 0;
    else if(T->l_child==NULL&&T->r_child==NULL)
        return 0;
    else
        return non_leaf_count(T->l_child)+non_leaf_count(T->r_child)+1;
}

//打印非叶节点
void non_leaf_print(BiTree *T){
    if(T!=NULL){
        if(!(T->l_child==NULL&&T->r_child==NULL))
            printf("%c ",T->data);
        non_leaf_print(T->l_child);
        non_leaf_print(T->r_child);
    }
}

//打印叶子节点
void leaf_print(BiTree *T){
    if(T!=NULL){
        if(T->l_child==NULL&&T->r_child==NULL)
            printf("%c ",T->data);
        leaf_print(T->l_child);
        leaf_print(T->r_child);
    }
}

//先序遍历
void preorder(BiTree *T){
    if(T!=NULL){
        printf("->%c",T->data);
        preorder(T->l_child);
        preorder(T->r_child);
    }
}


int main(){
    BiTree *root;
    root=creat_tree();
    printf("先序遍历:");
    preorder(root);
    printf("\n");
    printf("叶节点个数:%d\n",leaf_count(root));
    printf("打印叶子节点:");
    leaf_print(root);
    printf("\n");
    printf("非叶节点个数:%d\n",non_leaf_count(root));
    printf("打印非叶子节点:");
    non_leaf_print(root);
    printf("\n");

    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值