//
// main.m
// C_5函数
//
// Created by YIem on 15/11/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

import <Foundation/Foundation.h>

// 函数 的四大结构
/// 1.无返回无参数
void noReturnNoArgus(void) {

printf("无返回无参数\n");
return;// 表示 函数的结束/停止 return 下方的代码永远不会被执行

}
/// 2.无返回 有参数
void noReturnHasArgus(int a, float b, char c) {

printf("无返回有参数:%d, %f %c\n",a, b, c);

}
/// 3.有返回无参数
int hasReturnNoArgus(){

printf("有返回无参数\n");
return 100;

}
/// 4.有返回有参数
int hasReturnHasArgus(int a){

printf("有返回有参数\n");
return a;

}
// 函数的三要素: 定义 调用 声明

// 函数声明
// 格式: 返回值 函数名(参数)
void test();

// 函数声明
int sumN(int n);
// 函数定义
int sumN(int n){

// 算法
//

return n;// return (1 + n) * n / 2;

}

int main(int argc, const char * argv[]) {
// argc -> 个数 argv -> 数组


// Function 函数

// 具有某种功能的代码段
// 完成某件事的一个人

// 函数的格式构成
// 函数返回值 函数名 (参数列表) { 函数体}
// 返回值: 只有void 无符号值 其他所有类型都是有返回
// 有返回值的函数 结尾处必须有return 无返回值的函数 可有可无
// 参数列表: 有参数/无参数  无参数时 只写一个void 或者什么都不写 有参数时 写(参数类型 参数名) 多个参数之间 逗号分隔
// 函数体: 要执行的代码

if 0

/// 函数的调用

// 返回值 = 函数名(参数);
// 1.无返回无参数
noReturnNoArgus();
// 2.无返回有参数
// 也可以通过int a = 100;
noReturnHasArgus(100, 3.14, '+');
// 3.有返回无参数
int b = hasReturnNoArgus();
printf("%d %d\n", b,hasReturnNoArgus());// 可以直接调用hasReturnNoArgus
// 4.有返回有参数
int c = hasReturnHasArgus(100);
printf("%d",hasReturnHasArgus(c));

endif

// 如 < # 输入内容 # >

/// bb




/// <#nihao#>

// 限时代码 2:30

if 0

int a[5] = {7, 2, 4, 5, 6};
for (int i = 0; i < 5; i++) {
    for (int j = 0; j <5 - 1; j++) {
        if (a[j] > a[j + 1]) {
            int temp = a[j];
            a[j] = a[j +1];
            a[j + 1] = temp;
        }
    }
}

for (int i = 0; i < 5; i++) {
    printf("%d",a[i]);
}


endif







//调用测试
test();

// 练习 计算1-n的值

int n = 0;
scanf("%d", &n);
printf("shi %d\n", n = (1 + n) * n / 2);
int result = sumN(n);
printf("%d\n", result);

// 书写过程: 声明->定义->调用
// 执行过程: main函数->自定义函数->回到main函数


return 0;

}

void test(){

printf("suibian\n");

}