函数、数组练习

#import <Foundation/Foundation.h>
#include <stdio.h>
#include <stdbool.h> //< 系统定义的>      “自定义的”
bool leapYear(int year);
bool leapYear(int year)
{
    bool leap = false;      //方便以后修改
    if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))
    {
        leap = true;
    }
    return leap;
}

int maxCommonDiv(int num1,int num2);
int maxCommonDiv(int num1,int num2)
{
    if(num1 == num2)
    {
        return num2;
    }
    
    int min = 0;
    int commonDIC = 0;
    min=(num1 < num2)?num1:num2;  //求出2个数中那个数最小
    for (int i = 1; i <= min; i++) {    //循环最小数次求模
        if (num1 % i == 0 && num2 % i ==0) {
            commonDIC = i;    //得到最大公约数
        }
    }
    return commonDIC;
}


void revert(int arr[],int len);
void revert(int arr[],int len)
{
    if(len <= 0){
        return;         // 跳出函数
    }
    
    int temp = 0;
    for (int i = 0; i < len / 2; i++) {
        temp = arr[i];
        arr[i] = arr[len-1-i];
        arr[len-1-i] = temp;
    }
    
}

struct date
{
    int year;
    int month;
    int day;
};

int getdayInMonth(int month,int year);
int getdayInMonth(int month,int year)
{
    int day = 0;
    switch (month) {
        case 1:case 3:case 5:case 7:case 8:case 10:case 12:
        {
            day = 31;
            break;
        }
        case 4:case 6:case 9:case 11:
        {
            day = 30;
            break;
        }
            
        case 2:
        {
            if(leapYear(year))
            {
                day = 29;
            }
            else
            {
                day = 28;
            }
            
            break;
        }
            
            
        default:
            break;
    }
    return day;
}

void bullue(int arr[],int len);
void bullue(int arr[],int len)
{
    int tmp = 0;
    for (int i = 0; i < len - 1 ;i++ ) {
        for (int j = 0; j <len - 1 -i; j++) {
            if(arr[j] > arr[j+1])
            {
                tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }}

void insert(int arr[],int len,int num);
void insert(int arr[],int len,int num)
{
    //寻找位置
    int loc = 0;     //定位置
    for (int i = 0; i < len; i++)
    {
        if (arr[i] < num)    // 先跳出小于它的数
        {
            continue;
        }
        loc = i;         //定位置
        break;    
    }
    //移位
    for (int j = len; j > loc; j--) {    //从后到当前位置
        arr[j] = arr[j -1];    //把前一个值赋到最后的值中
    }     
    arr[loc] = num; //将当前位的num置赋
    //输出
    for (int k = 0; k < len; k++) {
        printf("%d	",arr[k]);
    }
    printf("
");
}


int main(int argc, const char * argv[])
{
    //定义一个函数。功能:传入一个年份,求该年是不是闰年。函数名字 bool leapYear(int year);
    int y = 2012;
    printf("%d is or not leap year:%d
",y,leapYear(y));
 
    
    //定义一个函数。作用是求整数num1和num2的最大公约数,并返回该值。函数名字int maxCommonDivisor(int num1,int num2);
    printf("最大公约数为:%d
",maxCommonDiv(2,4));
    
    
    //将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6, 5, 4,1.要求改为:1,4,5,6,8;并将数组中的值输出。
    int arr[] = {1,3,5,7,9};
    revert(arr, 5);
    for (int i = 0; i < 5; i++) {
        printf("%d	",arr[i]);
    }
    
    
    //定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题。
    struct date d = {2014,2,1};
    int day = 0;
    for (int i = 1;i < d.month; i++) {
        day += getdayInMonth(i,d.year); 
    }
    day += d.day;
    printf("%d-%d-%d是一年中的第%d天
",d.year,d.month,d.day,day);
    
    
    //编写一个函数用“冒泡法”对10个字符 reputation 按由小到大顺序排序。
    //char a[11] = {'r','e','p','u','t','a','t','i','o','n',''};
    char a[] = "reputation";
    int temp = 0;
    for (int i = 0; i < 9; i++) {                  //控制趟和下标
        for (int j = 0; j < 10 - i -1; j++) {       //控制次数和下标
            if(a[j] > a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    printf("a = %s
",a);
    
    
    //编写子函数:(1)用”冒泡法”将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。 主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。
    int k[6] = {1,56,7,10,12};
    insert(k,6,8);
    
    
    //随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
    //产生一个10到50间的随机数
    int r = 0;
    int x = 10,y1 =50;
    r = arc4random() % (y1- x + 1)+x;
    printf("%d
",arc4random());
    printf("%d
",r);

//    srand((unsigned int)time(NULL));
//    int r = rand()%41+10;       //[10,50]
//    printf("r = %d
",r);
           return 0;
}
原文地址:https://www.cnblogs.com/huen/p/3485932.html