大一的一些题目

// sl.cpp : Defines the entry point for the console application.
//

#include 
<stdio.h>


void getInput(int* _out_n)
{
    printf(
"Please enter n:");
    scanf(
"%d",_out_n);
    printf(
" ");
}


//1 画个空心的梯形吧
//编程,输入 n ,输出如下例( n=5 )所示的 高和上底均为 n 的等腰空心梯形。 
//       * * * * * 
//     *           * 
//   *                * 
// *                    * 
//* * * * * * * * * * * * * 
void f1(int n)
{
    
int i = 0;
    
int j = 0;

    
for (j = 1; j <= n-1; j++ )
    
{
        printf(
" ");
    }


    
for (j = 1; j <= n; j++ )
    
{
        printf(
"*");
    }


    printf(
" ");

    
for (i = 1; i < n-1; i++)
    
{
        
for (j = 1; j <= 2*n+i-1; j++)
        
{
            
if (j == n-|| j == 2*n+i-1)
            
{
                printf(
"*");
            }

            
else
            
{
                printf(
" ");
            }

        }

        printf(
" ");
    }


    
for (j = 1; j <= 3*n-2; j++ )
    
{
        printf(
"*");
    }

    printf(
" ");
}

//
//2 小明被罚
//七岁的小明在家中呆着无聊,东跑西窜,招猫逗狗,老爹很生气,后果很严重!被老爸罚去码砖头,要求码成等腰三角形的形状。小明不知道什么是“等腰三角形”,老爸也不解释,只好去问叔叔。
//叔叔用数学语言讲了半天等腰三角形,小明还是不明白,没办法,叔叔只好为小明编写一个程序,在屏幕上显示出等腰三角形的形状,然后再让小明按照显示的形状去码砖头。你就是小明的叔叔,你来编写这个程序吧。输入:     输入等腰三角形的高h。输出:    等腰三角形。
// ps:这道题有问题,只有高h可以任意发挥;

void f2(int h)
{

    
for (int i = 1; i < h; i++)
    
{
        
for (int j = 1; j < h+i-1; j++)
        
{
            
if (j < h-i)
            
{
                printf(
" ");
            }

            
else
            
{
                printf(
"*");
            }

        }

        printf(
" ");
    }

}


//3 编写程序,输出 1000 以内的所有完数及其因子。所谓完数是指一个整数的值等于它的因子之和,例如 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是一个完数。
void f3()
{
    
for (int i = 6; i <=1000; i++)
    
{
        
int temp = 0
        
for (int j = 1; j <= i/2; j++)
        
{
            
if (0 == i%j)
            
{
                temp 
+= j;
            }

        }

        
if (temp == i)
        
{

            printf(
"%d=",i);

            
//for (int j = 1; j <= i/2; j++)
            
//{
            
//    if (0 == i%j)
            
//    {
            
//        printf("%d ", j);
            
//    }
            
//}

            printf(
" ");
        }

    }

    printf(
"hello kitty ");
    getchar();
}
    

//4 一个马戏团表演, n 个座位全满,全部门票收入是 120 元,现在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。编程,输入总人数 n ,输出满足要求的男人、女人和小孩人数的全部方案。 , 若 n 人无法满足条件,则输出 "No output"( 双引号内的部分为输出部分 ) 。 
//输入:人数 n输出:男人、女人和小孩人数 

// test
//for (int i = 0; i < 100; i++)
//{
//    if (f4(i));
//}
bool f4(int n)
{
    
int i = 0;
    
int j = 0;
    
int k = 0;
    
bool b = false;
    
for (i = 0; i <= n; i++)
    
{
        
for (j = 0; j<= n-i; j++)
        
{
            
for (k = 0; k<= n-i-j; k++)
            
{
                
if (1200 == (i*50 + j*20 + k*1))
                
{
                    printf(
"i:%d, j:%d, k:%d ", i, j, k);
                    b 
= true;
                }

            }

        }

    }


    
if (!b)
    
{
        printf(
"No output ");
    }

    
return b;
}


//5 黑色星期五 在西方,星期五和数字 13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的 13 日又恰逢星期五就叫 “ 黑色星期五 ” 。输入某年年号和该年的元旦是星期几( 1-7 ),输出该年所有的 “ 黑色星期五 ” 的日期(年 / 月 / 日) 输入: 4 位年号和该年元旦是星期几输出:所有的 “ 黑色星期五 ” 的日期(年 / 月 / 日)
int isLeapYear(int year) 

    
int leap = 0
    
if(year%100 == 0 && year%400 ==0
        leap 
= 1
    
else if(year%100 != 0 &&year%4 ==0
        leap 
= 1
    
return leap; 
}
     

void f5()
{
    
int daysOfMonth[] ={31,28,31,30,31,30,31,31,30,31,30,31}
    
int y,w; 
    
int i; 
    
int offset[12]; 
    scanf(
"%d %d",&y,&w); 
    
if(isLeapYear(y)) 
        daysOfMonth[
1= 29
    offset[
0= 12
    
for(i = 1;i < 12;i++
    

        offset[i] 
= offset[i-1+ daysOfMonth[i-1]; 
        
if((w+offset[i])%7 == 5
            printf(
"%d/%d/%d ",y,i+1,13); 
    }

}


//6猴子吃桃子 
//有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第 2 天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第 5 天吃了前一天剩下的一半加 5 个)。到第 n 天早上再想吃的时候,就只剩下一个桃子了。 
//输入:天数 n输出:第一天的桃子个数
//int n = 0;
//getInput(&n);
//printf("%d",f6(n));
int f6(int n)
{
    
if (n == 1)
    
{
        
return 1;
    }

    
else
        
return 2*(f6(n-1)+n-1);
}


//7 若正整数A的全部约数(包括1,不包括A本身)之和等于B ; 且整数B的全部约数(包括1,不包括B本身)之和等于A,则 A 、 B 为亲密数。编程,输入正整数A,输出亲密数 A , B(A<=B) ,若不存在亲密数,则输出 No output 。 
//输入:正整数 A     输出:形如 A-B 的 亲密数对 
//for (int i = 1; i < 1000; i++)
//{
//    f7(i);
//}
void f7(int a)
{
    
int t1 = 0;
    
for (int i = 1; i <= a/2; i++)
    
{
        
if (a%==0)
        
{
            t1 
+= i;
        }

    }

    
int t2 = 0;
    
for (int j = 1; j <= t1/2; j++)
    
{
        
if (t1%== 0)
        
{
            t2 
+= j;
        }

    }


    
if (t2 == a)
    
{
        printf(
"%d-%d ",a,t1);
    }

    
//else
    
//{
    
//    printf("No output ");
    
//}
}

//8 输出一个字母K吧
//输入 n 值,输出如图所示图形 (当 n=4)
//*      * 
//*    * 
//*  * 
//*  
//*  * 
//*    *
//*      *
//int n = 0; 
//getInput(&n);
//f8(n);
void f8(int n)
{
    
for (int i = 1; i < n; i++)
    
{
        printf(
"*");
        
for (int j = 2; j <= n-i+1; j++)
        
{
            
if (j == n-i+1)
            
{
                printf(
"*");
            }

            
else
            
{
                printf(
" ");
            }

        }

        printf(
" ");
    }

    printf(
"* ");
    
for (int i = 2; i <= n; i++)
    
{
        printf(
"*");
        
for (int j = 2; j <= i; j++)
        
{
            
if (j == i)
            
{
                printf(
"*");
            }

            
else
            
{
                printf(
" ");
            }

        }

        printf(
" ");
    }
    
}


//9 画一个字母组成的菱形  输入顶行字符和图形的高,输出如图所示图形。
//例如顶行字符为 ' A ' ,图形的高为 5 
//        A 
//      B   B 
//    C       C 
//  D           D 
//E               E 
//  D           D 
//    C       C 
//      B   B 
//        A 
//int n = 0;
//
//getInput(&n);
//
//f9(n);
void f9(int n)
{
    
char t='A';
    
for (int i = 1; i <= n; i++)
    
{
        
for (int j = 1; j <= n+i-1; j++)
        
{    
            
if (j == n-i+1 || j == n+i-1)
            
{

                printf(
"%c",t);
            }

            
else
            
{
                printf(
" ");
            }

        }
    
        t
++;
        printf(
" ");
    }

    t 
-= 2;
    
for (int i = 2; i <= n; i++)
    
{
        
for (int j = 1; j <= 2*n-i; j++)
        
{    
            
if (j == i || j == 2*n-i)
            
{
                printf(
"%c",t);
            }
    
            
else
            
{
                printf(
" ");
            }

        }

        t
--;
        printf(
" ");
    }

}


//10 输入 n 值,输出如图回型方阵 ,例如:当 n=5 时 : 
//3 3 3 3 3                      
//3 2 2 2 3                     
//3 2 1 2 3                  
//3 2 2 2 3                        
//3 3 3 3 3
//int n = 0;
//
//getInput(&n);
//
//f10(n);
void f10(int n)
{
    
int m = n/2+n%2;
    
int i,j;
    
int k,a,b;
    
for( i = 1; i <= n; i++)
    

        b 
= i;
        a 
= n+1-i;     
        
if( b > a) k=b,b=a,a=k;
        
        k 
= m ;
        
        
for(j = 1; j <= n; j++)
        

            printf(
"%d",k);
            
if (j< b) k--;
            
else if(j>=a) k++;
        }

        printf(
" ");
    }
    
    printf(
"   -- 回 型 方 阵 -- "); 
}


int main(int argc, char* argv[])
{
    
int n = 0;

    getInput(
&n);

    f10(n);

    
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值