c语言基础,常用的几个练习小题目

c语言基础,常用的几个练习小题目

//打印菱形
void ling(){
    int a[7][7];
    for (int i=0; i<=3;i++) {
        for (int j=0; j<=3; j++) {
            if (i+j<3) {
                a[i][j]=' ';
            }
            else if(i+j>=3){
                a[i][j]='*';
            }
        }
        for (int n=4; n<7; n++) {
            if (n-i<=3) {
                a[i][n]='*';
            }
            else{
                a[i][n]=' ';
            }
        }

    }
    for (int c=4; c<7; c++) {
        for (int b=0; b<=3; b++) {
            if (c-b<=3) {
                a[c][b]='*';
            }
            else{
                a[c][b]=' ';
            }
        }
        for (int d=4; d<7; d++) {
            if (c+d<=9) {
                a[c][d]='*';
            }
            else{
                a[c][d]=' ';
            }
        }
    }
    for (int k=0;k<7 ; k++) {
        for (int l=0; l<7; l++) {
            printf("%c",a[k][l]);
        }
        printf("\n");
    }
}
//判断是不是完全平方数
void sq(){     //不要返回值时就定义void类型的函数
    int n;
    for ( n=1; n<100000;n++) {
        if ((sqrt(n+100) *sqrt(n+100) ==n+100) && (n+268==sqrt(n+268)* sqrt (n+268)) ) {
            printf("%d\n",n);
        }
    }
//弹球 路程及高度两种不同的思想方法,主要就是找规律,实在想不完整的时候就边写边想;
void tan(){
    double sn=100.0,hn=sn/2;
    for (int n=2; n<=10; n++) {
        sn = sn+2*hn;
        hn=hn/2;
    }
    printf("the total of raod is %f\n",sn);
    printf("the tenth is%f meter\n",hn);
}
void height(int n){
    float h2=100*pow(0.5, 10);
    float sum=100;
    float h=1;
    for (int i=1; i<10; i++) {
        h=h*0.5;
        sum=sum +100*2*h;
    }
    printf("the total of raod is %f\n",h2);
    printf("the tenth is%f meter\n",sum);
}
//猴子吃桃问题;  利用逆向思维的方法,从最后一天往前推。
int peach(){
    int n=1;
    int sum=1;
    for (int i=10; i>0; i--) {
        sum=(sum+1)*2;
    }
    printf("%d\n",sum);
    return sum;
}
//数组中的最大值
int a[5];                                   // 数组中的最大值最小值问题。将a【0】的值赋给
    int max;             //一个变量,然后让变量和数组中的各个值进行比较(最小值同理)
    for (int i=0; i<5; i++) {
        printf("please enter a number %d\n",i+1);
        scanf("%d",&a[i]);
        }
    max=a[0];
    for (int k=1; k<5; k++) {
        if (max<a[k]) {
            max=a[k];
        }
    }
    printf("%10d i\n",max);
   }
   //break 打印乘法口诀  可以通过break实现特殊格式的输出 当符合条件是就结束当前层的循
   int i;                               //continue只是不执行continue后边语句,循环还会
    for (i=1; i<10; i++) {              //继续执行
        for (int k=1; k<10; k++) {
            printf("%d*%d\t",i,k);
            if(i==k){
                break;
            }

        }
         printf("\n");
    }
    //分数累加问题2/1+3/2+5/3+8/5+…..前20项的和
ouble fenshu(){
    double sum =0;
    double m=1.0,n=2.0;
    double a,b;
    for (int i=1; i<=20; i++) {       //找规律,然后尝试着去写
        sum=sum+n/m;          //考点在于值的转换,注意赋值的方法。当不能直接进行值的转
        a=n;                    //换时,要寻找其他变量作为中转站进行数值的转换
        b=m+n;
        m=a;
        n=b;
}
// 水仙花数
int hua(int x){
    int n=x;                   //把传递过来的参数,赋值给一个变量,便于计算完结果后跟
    int sum=0;                //原来的值进行比较
    int m;
    while (n) {
        m=n%10;            //利用取余或者取整获得自己想要的数位上的数字
        sum=sum + m*m*m;(sum=sum*10 +m 回文数)(printf(“%d\n”,m);倒序输出)
        n/=10;
    }
    if (sum == x) {
        return 1;
    }
    else{
        return 0;
    }
}
//奖金分层
void mony(){
    double m;
    double sum;
    scanf("%lf",&m);
    if (m>=0 &&m<=10) {
        sum=0.1*m;
    }
    else if(m<=20){
        sum=10*0.1 +(m-10)*0.075;
    }
    else if(m<=40){
        sum=10*0.1 +10*0.075+(m-20)*0.05;
    }
    else if (m<=60){
        sum=10*0.1 +10*0.075+20*0.05 +(m-40)*0.03;
    }
    else if (m<=100){
        sum=10*0.1+10*0.075+20*0.05+20*0.03+(m-60)*0.015;
    }else{
        sum=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(m-100)*0.01;
    }
    printf("%lf\n",sum);
}
//n*n口诀
void multiplication(){
    int n;
    scanf("%d",&n);
    for (int i=1; i<=n; i++) {
        for (int k=1; k<=n; k++) {
            printf("%d*%d=%d\t",i,k,i*k);
            if (i==k) {
                break;
            }
        }
        printf("\n");
    }
}
//1-n的阶乘
void fac(){
    int n;
    int sum=1;
    scanf("%d",&n);
    for (int k=1; k<=n; k++) {
        sum=1;
        for (int i=1; i<=k; i++) {
            sum=sum*i;
        }
        printf("%d 的阶乘是%d\n",k,sum);
    }

}
//兔子问题
void rabbit(){
    int f1=1,f2=1;
    int i;
    for (i=1; i<=20; i++) {
        printf("%12d %12d",f1,f2);
        if (i%2==0) {
            printf("\n");
        }
        f1=f1+f2;
        f2=f2+f1;
    }
   }
 //素数问题   不是最简洁的方法
void sushu(){
    int n;
    int m;
    int i;
    scanf("%d",&n);
    for ( i=2; i<n-1; i++) {

        if (n%i==0) {

            break;
        }
    }
    if (i<n) {
         printf("%d bu shi su shu \n",n);
    }
    else{
        printf("%d shi su shu ",n);
    }

}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值