标签 c语言 下的文章

一些c语言学习中的话,也是我的一个总结

2015年11月09日进入蓝鸥学习,然后现在第一阶段完事2015-11-24,两周/15天.
第一阶段学的是C语言,也是一个基础,之前在学校的时候也有学过C好像是2013年末吧,
然后上课也没有听过,在加上时间这么长,也全部忘记了.
然后2015-11-10 开始正式学习C语言,从开始学都现在,也从有点了解都慢慢遗忘,我也搞不懂到底怎么了.
2015-11-23-晚自习20:00开始C语言的测试,然后发现什么也不会,看不明白,尤其是在需要计算的时候,更加晕乎乎的.我不禁怀疑我的思考问题的方式,理解问题的方式(或者说是智商不够用),然后最近这几天特别的烦躁,在凳子上坐不住.而且特别压抑,总感觉自己这个不行,那个不行.而且奇怪的是上课的时候,我明明记住了,但是等下课之后,就考试迷迷糊糊的,一点一点忘记.我自己也搞不明白,好像没有学进去的样子,(好像是左耳朵进来右耳朵出去),弄的我也很尴尬,在别人学习进度都不错的情况下,感觉脱了后腿.
然后学习的时候,思想老是走空,不知道在想什么,不受控制的样子.而且像概念什么的也没有理解,或者说是没有记住,然后老师一提问,我就蒙逼了,很是尴尬.
下一阶段就是OC了,感觉好遥远,也忐忑,不会,或者是跟不上,或者又发生什么事.很是蛋疼.
唉,就这些吧,看情况了!或者说我是真不适合学这个,蛋疼的日子!

2015-11-20 C9_结构体指针

//
// main.m
// C9_结构体指针
//
// Created by YIem on 15/11/20.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

struct test {
int a;
float b;
char c;
};
typedef struct test TEST;
int main(int argc, const char * argv[]) {

// 结构体指针
int  a = 100;
int *p = &a;
TEST t = {1, 2, 'a'};
TEST *pT = &t;
printf("%d\n", t.a);
printf("%d\n", (*pT).a);
// 高能: -> 指向操作符
printf("%d\n", pT->a);
// 变量名.成员变量
// (*地址).成员变量
// 地址->成员变量
    // 这三种变量形式都是一样的




TEST t1 = {2, 2, 'b'};
TEST t2 = {3, 3, 'c'};
TEST ttt[] = {t, t1, t2};
// 结构体数组的指针遍历
for (int i = 0; i < 3; i++) {
    TEST *tt = ttt + i;
    // ttt[i].a
    // (*(ttt + i)).a
    // (ttt + i)->a
    printf("%d %f %c\n", tt->a, tt->b, tt->c);//
}





return 0;

}

2015 -11-20 内存管理 -------填坑

//
// main.m
// C9_内存管理
//
// Created by YIem on 15/11/20.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
// 填坑:
// 1.字符串
char s1[] = "iPhone";// s1 是一个常量地址不能被++
char *s2 = "iPhone";// s2 可以++ // s2 保存在常量,本身空间在栈区
// s1++; // 错误
s2++;
s1[] = 'a';
// s2[

// 通过malloc开辟一段'堆'空间 返回空间首地址 使用p6变量保存起来 p6变量自身在 '栈' 中
int *p6 = malloc(4);
printf("%p %p\n", p6, &p6);

// 其他内存分配函数
// calloc 分配空间后会清空
// 参数1: 元素个数
// 参数2: 单个元素大小
int *p7 = calloc(5, sizeof(int));
free(p7);

// realloc  重新分配空间
int *p8 = malloc(10);
// 参数1: 需要重新分配内存空间首地址
// 参数2: 新的空间大小
p8 = realloc(p8, 20);
free(p8);
printf("%lu\n", sizeof(p8));










return 0;

}

C_5函数 函数 的四大结构

//
// 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");
}

C5_函数2 函数参数: 形(形式)参 / 实(实际)参

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

#import <Foundation/Foundation.h>

/// 求和
int sum(int a, int b);// 声明
int sum(int a, int b){//定义

return a + b;

}
int sub(int a, int b);
int sub(int a, int b) {
return a - b;
}
int ji(int a, int b);
int ji(int a, int b) {
return a * b;
}
int chu(int a, int b);
int chu(int a, int b) {
return a / b;
}
double yu(int a, int b);
double yu(int a, int b) {
return a % b;
}
/// 交换
void exchange(int a, int b);
void exchange(int a, int b) {
int temp = a;
a = b;
b = temp;
}

int main(int argc, const char * argv[]) {

// 练习1.两个数求和
int he = sum(3, 5);

printf("%d\n", he);
//也可以直接打印(下面)
//printf("%d\n", sum(3, 5));

// 练习2.两个数求差
printf("%d\n", sub(5, 3));
// 练习3.两个数求积
printf("%d\n", ji(4, 6));
// 练习4.两个数求除

printf("%d\n", chu(9, 3));
// 练习4.两个数求余

printf("%.2f\n", yu(6, 4));

// 练习:交换两个数的函数
int a = 3, b = 5;
exchange(a, b);
printf("%d %d\n", a, b);


// 函数参数:

// 形参: 函数声明/定义处的为 形参 形参有类型
// 实参: 函数调用处的为 实参 没有类型 只有具体的 变量/值
// 实参由函数调用处 向函数定义中传递时 是复制过程




return 0;

}

C5_函数3.1 定义 声明

//
// main.m
// C5_函数3.1
//
// Created by YIem on 15/11/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
// main 函数中写函数调用
#import <Foundation/Foundation.h>
#include "MyFunc.h"

// 递归函数 函数定义中调用当前函数
void diGui(){
diGui();
printf("随便\n");
}
// 递归 阶乘 5 * 4 * 3 * 2 * 1
int jieCheng(int n) {
if (1 == n) {
return 1;
}
return n * jieCheng(n - 1);
}

int main(int argc, const char * argv[]) {

// main 函数中写函数调用
printf("%d\n", maxTwo(3, 4));
// 函数嵌套调用
printf("%d\n", maxTwo(maxTwo(3, 4), 5));
// 函数中 只能调用函数 不能定义函数
// 定义只能写在main函数的外面
printf("%d\n", maxThree(3, 4, 5));
printf("%d\n", maxTwo(maxThree(3, 4, 5), 6));




//diGui();


return 0;

}

- 阅读剩余部分 -

2015-11-16- C_5函数

//
// 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");
}

C语言---给定某年某月某日,输出其为这一年的第几天

C语言---给定某年某月某日,输出其为这一年的第几天

int y = 0, m = 0, d = 0, ds = 0;

scanf("%d%d%d", &y, &m, &d);
ds = d;
switch (m - 1) {
    case 11:
        ds += 30;
    case 10:
        ds += 31;
    case 9:
        ds += 30;
    case 2:
        if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
            ds += 1;
        }
        ds += 28;
    default:
        break;
}

2015-11-14-C-5_二维数组

//
// main.m
// C5_二维数组
//
// Created by YIem on 8/15/15.
// Copyright (c) 2015 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

#if 0
// 二维数组的定义
// 类型 数组名[第一维度(行)][第二维度(列)] = {初值};
int a[5] = {2, 7, 4, 3, 6};
int b[2][3] = {1, 2, 3, 4, 5, 6};
// 数组最后补0
int c[2][3] = {1, 2, 3, 4};
int d[2][3] = {{1, 2}, {3, 4}};
// 第一维度(行数)可以不写 但列数必须要写
int e[][3] = {1, 2, 3, 4, 5, 6};
// 数组名[行][列] 访问元素
printf("%d\n", e[1][

// 练习: 定义一个4 * 5的二维数组 随机赋值34 - 56 输出打印
int f[4][5] = {0};// 空数组
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 5; j++) {
        f[i][j] = arc4random() % (56 - 34 + 1) + 34;
        printf("%d ", f[i][j]);
    }
    printf("\n");
}

#endif

#if 0
// 字符串数组
// 字符的二维数组 字符串的一维数组
char strings[4][20] = {"iPhone", "Sumsung", "Huawei", "ZTE"};
// 获取字符
printf("%c\n", strings[1][4]);
// 获取字符串
printf("%s\n", strings[2]);
// 字符串数组遍历
for (int i = 0; i < 4; i++) {
printf("%s\n", strings[i]);
}
// 练习: 写一个字符串数组 内容为周围四个人名字拼音 遍历输出
char names[][20] = {"JiangXingFei",
"LiZhongRen",
"WangLiQian",
"WangJun",
"ZhouYou",
"YuTao"};
int count = sizeof(names) / sizeof(names[

#if 1
// 多维数组
// 三维数组
int a[2][3][4] = {0};
// 层
for (int i = 0; i < 2; i++) {
// 行
for (int j = 0; j < 3; j++) {
// 列
for (int k = 0; k < 4; k++) {
a[i][j][k] = arc4random() % 10;
printf("%d ", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
// 数组每多一个维度 需要多加一个循环使用
// 数组元素个数 等于各个维度的乘积
#endif

return 0;

}

2015-11-14-第四次作业低能儿版本- iOS开发

//
// main.m
// 第四次作业低能儿版本
//
// Created by YIem on 15/11/13.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
#define SIZE (20)
#define string
int main(int argc, const char * argv[]) {

#if 0
//第一题
int a[SIZE] = {0}, i = 0;
for(i = 0; i < SIZE; i++)
{
a[i] = i + 10;
printf("a[%d] = %d\n", i, a[i]);
}
#endif

#if 0
//第二题
int a[SIZE] = {0}, i = 0;
for(i = 0; i < SIZE; i++)
{
a[i] = 10 - i;

    printf("a[%d] = %d\n", i, a[i]);
}

#endif

#if 0
// 第三题
int a[SIZE] = {0}, i = 0, sum = 0;
for(i = 0; i < SIZE; i++)
{
a[i] = i + 10;

    printf("a[%d] = %d\n", i, a[i]);
  sum += a[i];
}

 printf("sum = %d\n", sum);

#endif

#if 0
// 第四题
int a[SIZE] = {0}, i = 0, sum = 20;
for(i = 0; i < SIZE; i++)
{
a[i] = i + 10;

    printf("a[%d] = %d\n", i, a[i]);
    sum -= a[i];
    
}
//sum = sum + (2 * a[0]); //或者 写成这样

printf("sum = %d\n", sum);

#endif
#if 0
// 第五题
int a[SIZE] = {0}, i = 0, sum = 0, max = 0, min = 0;
for(i = 0; i < SIZE; i++)
{
a[i] = arc4random() % (50 -10 +1) +10;

    printf("a[%d] = %d\n", i, a[i]);
    sum += a[i];
    if (max < a[i]){//最大值
        max = a[i];
    }
    if (0 == i || min > a[i]){//最小值
        min = a[i];
    }

}
printf("最大值=:%d\n", max);
printf("最小值=:%d\n", min);
   printf("元素之和= %d\n", sum);

#endif
#if 0
//第六题
int a1[5] ={0}, a2[5] = {0}, temp = 0, a3[10] = {0};
for (int i = 0; i < 5 - 1; i++) {
a1[i] = arc4random() % (40 - 20 + 1) + 20;
a2[i] = arc4random() % (40 - 20 + 1) + 20;

}

for (int i = 0; i < 5 - 1; i++) {
    for (int j = 0; j < 5 - 1 - i; j++) {
        if (a1[j] > a1[j + 1]) {
            int temp = a1[j];
            a1[j] = a1[j + 1];
            a1[j + 1] = temp;
        }
        
    }
   
    }
for (int i = 0; i < 5; i++) {
    printf("%d ", a1[i]);
}
printf("\n");
for (int i = 0; i < 5 - 1; i++) {
    for (int j = 0; j < 5 - 1 - i; j++) {
        if (a2[j] > a2[j + 1]) {
            int temp = a2[j];
            a2[j] = a2[j + 1];
            a2[j + 1] = temp;
        }
        
    }
   
}
for (int i = 0; i < 5; i++) {
    printf("%d ", a2[i]);
   
}
printf("\n");

for (int i = 0; i < 10; i++) {
    if (i < 5) {
        a3[i] = a1[i];
    }
    else {
        a3[i] = a2[i - 5];
    }
    }
for (int i = 0; i < 10; i++) {
    printf("%d ", a3[i]);
}
printf("\n");

#endif
// a3[i] = a1[i] a2[i];

#if 0
// 第七题
int a = 0, b = 0, c = 0;
printf("输入年月日(如20150101):\n");
scanf("%d %d %d", &a, &b, &c);

#endif

#if 0
// 第八题
int a[10] = {2, 5, 9, 6, 4, 1, 5, 8, 0, 30};
for (int i = 0; i < 10 - 1; i++) {

    for (int j = 0; j < 10  - 1 - i; 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 < 10 ; i++) {
    printf("%d", a[i]);
    printf("\n");
}

#endif

#if 0
// 第九题

int a[] = {5, -9, 32, 77, 64, -24, 14, 0, 21, 45}, max = 0, min = 0, min5 = 0, max4 = 0;
for(int i = 0; i < 10; i++)
{
   
    if (max < a[i]){//最大值
        max = a[i];
        max4 = i;
    }
    if (0 == i || min > a[i]){//最小值
        min = a[i];
        min5 = i;
    }
    

}
printf("从0开始>%d\n从0开始>%d\n", max4, min5);
printf("最大值=:%d\n", max);
printf("最小值=:%d\n", min);

#endif

#if 0

//第十题


for (int i = 0; i < 50; i++) {
    char result[50] = {0};
    char str1[] = "Lanou ";
    char str2[] = "1129_class ";
    char str3[] = " is a fantastic 伐木累!";
    strcat(str1, str2);
    strcat(str1, str3);
    strcpy(result, str1);
    printf("%s", result);
}

#endif

int year,month,day,maxday,daily;
    printf("请输入年份:");
    scanf("%d",&year);
loop:printf("请输入月份:");
    scanf("%d",&month);
printf("请输入日:");
scanf("%d",&day);
    switch(month){
        case 1:daily=0,maxday=31;
            break;
        case 2: daily = 31, maxday = 28;
            break;
        case 3: daily = 59, maxday = 31;
            break;
        case 4: daily = 90, maxday = 30;
            break;
        case 5: daily = 120, maxday = 31;
            break;
        case 6: daily = 151, maxday = 30;
            break;
        case 7: daily = 181, maxday = 31;
            break;
        case 8: daily = 212, maxday = 31;
            break;
        case 9: daily = 243, maxday = 30;
            break;
        case 10: daily = 273, maxday = 31;
            break;
        case 11: daily = 304, maxday = 30;
            break;
        case 12: daily = 334, maxday = 31;
            break;
    }
       daily += day;
    printf("%d年%d月%d日是这年的第%d天!!!\n",year,month,day,daily);
    



return 0;

}
第四节作业_低版本.key.zip

2015-11-13 C4_数组 --c语言

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

#import <Foundation/Foundation.h>

#define SIZE (5)//宏定义
// 宏命名 1.全大写字母 eg: SIZE MAX MIN
// 2.k + 驼峰命名 eg: kSize kMax kMin
int main(int argc, const char * argv[]) {
// 参数宏
#define ADD(a, b) ((a) + (b))// ->单个加括号 整体加括号 保证数据安全

// 数组 Array

// 构造类型 用来保存一组 相同数据类型的 数据

// 数字定义
    // 类型 说明符 数组名[元素的个数] 赋值运算符(=) 初值{ 初值};
    // 元素个数为 整型表达式(常量)iOS

#if 0
int a[SIZE] ={1, 2, 3, 4, 5};
int a2[5] = {0};// 创建空数组
int a3[5] = {1, 2, 3};
// 数组创建时 元素个数和初值 最少有一个
int a4[] = {1, 2, 3, 4, 5};

// 浮点型 数组
float a5[5] = {1.2 , 3.4, 5.6};
// 字符 数组
char a6[5] = {'a', 'p', 'p', 'l', 'e'};

// 访问/ 设置 数组元素

// // 通过 数组名[索引/ 下标]
a4[1] = 100;
printf("%d\n", a4[2]);
#endif
//遍历
#if 0
int a7[] = {1, 2, 3, 4, 5};
//数组元素个数
// sizeof 获取某个表达式/类型的大小
// unsigned long > %lu
printf("**%lu\n", sizeof(a7[]));
// 个数 = 总大小 / 单个大小

int count = sizeof(a7) / sizeof(int)//也可以写成sizeof(a7[0])

;
// i >index 索引
for (int i = 0; i < count; i++) {
printf("%d\n", a7[i]);
}
#endif
// 练习 1.定义一个具有20个元素的整型数组, 每个元素的取值范围是30-70之间,求数组的和
#if 0
int a[20] = {0}, sum = 0;
for (int i = 0; i < 20; i++) {
a[i] = arc4random() % (70 -30 +1) +30;
sum += a[i];
printf("-%d",a[i]);
}
printf("\nsum = %d\n", sum);

// 练习2.复制一个数组,即两个数组 容量一样,把其中一个数组中的元素 复制 到另外一个数组中

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

#endif

// 练习3.生成 2个数组,每个数组都有 10个元素 ,元素取值范围 20-40之间,数组对应元素相加,放到另外一个数组中

#if 0
int a1[10] = {0}, a2[10] = {0}, a3[10] = {0};
for (int i = 0; i < 10; i++) {
a1[i] = arc4random() % (40 - 20 + 1) + 20;
a2[i] = arc4random() % (40 - 20 + 1) + 20;
// 这样子 赋值 值不一样
a3[i] = a1[i] + a2[i];
}
for (int i = 0; i < 10; i++) {
printf("%d ", a1[i]);
}
printf("\n");
//
for (int i = 0; i < 10; i++) {
printf("%d ", a2[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%d ", a3[i]);
}
printf("\n");

#endif
// 区分概念
// int a[5] -> 定义数组 [5] 代表元素个数
// a[5] 访问 -> 数组使用 [5] 代表下标/索引
// 一个5个元素的数组 下标的变化为0-4 (元素个数-1) 如果访问a[5] 则发生数组越界

/****** 数组排序******/

//冒泡排序

#if 0
int a[5] = {2, 7, 4 , 9, 6};
// 外层 循环 控制每次找到 一个最大值 放在最后
// -1 如果是5个数 4个数序时 整个数组就会有序
for (int i = 0; i < 5 - 1; i++) {
// 内层 循环 控制比较和交换
for (int j = 0; j < 5 - 1 - i; j++) {
// 比较 和 交换
// -1 防止越界访问
// -i 防止重复对有顺序的数进行比较
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]);
    }
    printf("\n");
}

#endif
// 练习: 随机产生 10个[20-40]数,幷对10个数从小到大排序 从大到小排序
#if 0
int a[10] ={0};
for (int i = 0; i < 10 - 1; i++) {
a[i] = arc4random() % (40 - 20 + 1) + 20;
}
for (int i = 0; i < 10 - 1; i++) {
// 内层循环 控制比较和交换
// -1 防止越界访问
// -i 防止重复对有序区的数进行比较
for (int j = 0; j < 10 - 1 - i; 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 < 10; i++) {
    printf("%d ", a[i]);
   
}
printf("\n");

#endif

#if 0
int a[10] ={0};
for (int i = 0; i < 10 - 1; i++) {
a[i] = arc4random() % (40 - 20 + 1) + 20;
}
for (int i = 0; i < 10 - 1; i++) {
// 内层循环 控制比较和交换
// -1 防止越界访问
// -i 防止重复对有序区的数进行比较
for (int j = 0; j < 10 - 1 - i; 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 < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
#endif

#if 1
/****** 字符数组/字符串******/

// 字符数组
char c[] = {'a', 'p', 'p', 'l', 'e', };// 可以加'\0' 变成字符串
//字符串 String
char string[] = "apple";// 有\0 时结束打印
//字符串的结尾处有"\0" 总大小 = 字符个数+1
printf("%lu %lu\n", sizeof(c), sizeof(string));

// 打印字符串
int i = 0;
while (string[i]) {
    printf("%c", string[i]);
    i++;
}
printf("\n");
// 打印
// 数组名为数组的 首地址 通过首地址 逐个访问数组元素 直到\0 停止
printf("%s\n", string);

// 字符串操作函数
// <string.h> 库文件
// 字符串长度 string length
// 字符个数不包含结尾的\0
printf("%lu\n", strlen(string));

//**** 字符串考贝 string copy
char newStr[10] = "";
// 参数一: 目标字符串
// 参数二: 原字符串
strcpy(newStr, string);
printf("%s\n", newStr);

//**** 字符串拼接
// 参数一: 目标字符串
// 参数二: 原字符串

strcat(newStr, "TV");// 在appple 后面接TV
printf("%s\n", newStr);

//**** 字符串比较 string compare

char str1[] = "iPhone6s";
char str2[] = "iPhone7";
// 第一个第二个字符串中 从左向右 第一个不相同的字符对应的 ASCII码的差值计算
int result = strcmp(str1, str2);
printf("%d\n", result);

//结果为负 升序 Ascending
//结果位正 降序 Descending

#endif

//****** ******//

// 参数宏使用
printf("%d\n", ADD(3, 5) * ADD(3, 5));
//宏的作用 : 完全替换
// 宏在使用时,需要考虑数据安全问题

return 0;

}

2015-11-12 第三节作业

//
// main.m
// 第三节作业
//
// Created by YIem on 15/11/12.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

//第一题

#if 0
int max = 0;
for (int i = 0; i < 20; i++) {
int a = arc4random() % (100 - 10 + 1) + 10;
printf("%d\n", a);
max = max > a ? max : a;//最大值
}
printf("max = %d\n", max);
#endif

//第二题

#if 0
int i, j, k, n, m = 0;
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(i100+j10+k==iii+jjj+kkk){
printf("%d ",i100+j10+k);
m++;
}
}
printf("\n");
printf("%d\n", m);
#endif
//第三题
#if 0
int a, b, c;
for( a = 0; a < 10; a++){//百位0-9
for( b = 0; b < 10; b++){//十位0-9
for( c = 0; c < 10; c++){//个位0-9
if((a * 100 + b * 10 + c) + (c * 100 + b * 10 + a) == 1333){
printf("%d %d %d\n", a, b, c);
}
}
}
}
#endif

//第四题

    //第一种/ 不会啊 数学老师早爆炸了

#if 0
int num1 = 0, num2 =0;
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
for (int gcd = num1 < num2 ? num1 : num2; gcd >= 1; gcd--) {
if (num1 % gcd == 0 && num2 % gcd == 0) {
printf("最大公约数是:%d\n最小公倍数是:%d\n", gcd, (num1 * num2) / gcd );
break;
}
}

#endif

    //第二种

//第五题

#if 0
double m, h, sum;//定义类型
int k ; //开始时 h , m 一样
for (h = m = 100, sum = 0, k = 1;k <= 10; k++) {
printf("%d-%.2f-%.2f\n", k, h, m);//k=次数,h=弹起高度,m=落下高度
sum += m;// 计算落下 的总高度
m = h;//第二次落下高度对应第一次弹起高度
h = m / 2.0;//跳回原来高度的一半
if ( k == 10 ) {// 当K 等于10时输出以下
printf("%.2f\n", h);//第十次高
printf("%.2f\n", sum);//落下的总 多少米
}
}

#endif

//第六题





















return 0;

}
第三节作业.key.zip

2015-11-12 -C3_循环结构

//
// main.m
// C3_循环结构
//
// Created by YIem on 15/11/12.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

/* // 限时代码 4min
char a = 0;
scanf("%c", &a);
if (a > '0' && a < '9') {
printf("数字\n");
} else if (a > 'a' && a < 'z'){
printf("小写字母\n");
} else if (a >'A' && a < 'Z'){
printf("大写字母\n");

}   else{
    printf("其他\n");
}
*/

/****** 程序的三种结构******/
//  顺序 分支 循环


// 循环
    //满足条件时 重复做某事
    // 循环条件 下重复执行  一段代码


/****** for 循环 ******/
// 循环增量初始化    条件        增量变化

// for (int i = 0; i < 5; i++) {
// printf("Yiem \n");
// // system("say YIem");// 系统函数 发出声音
// }
// // 死循环
// for (; YES; ) {
// printf("死循环\n");
// }

    //练习: 正序打印1-5的数
    //

// for (int i = 1; i <= 5; i++) {
// printf("%d\n", i);
// }
// for (int i = 5; i >= 1; i--) {
// printf("%d\n", i);
// }

// // 练习 打印1-100之间的偶数
// for (int i = 1; i <= 100;i++) {
// //判断偶数
// if (i % 2 ==0){
// printf("%d\n", i);
// }
//
// }
// 练习 1用for打印出1-100之间7的倍数
// 2用for打印1-100个位为7的数
// 3用for打印出1-100之间十位为7的数
// 4用for打印出1-100之间不是7的倍数并且不包含7的数
// for (int i = 1; i <= 100; i++) {
// if (i % 7 ==0) {
// printf("%d\n", i);
// }
//
// }
// for (int i = 1; i <= 100; i++) {
// if (i % 10 == 7) {
// printf("%d\n", i);
// }
// }
// for (int i = 1; i <= 100; i++) {
// if (i / 10 ==7) {
// printf("%d\n", i);
// }
// }
// 第一种
// for (int i = 1; i <= 100; i++) {
// if (i % 7 != 0 && i % 10 != 7 && i / 10 !=7) {
// printf("%d\n", i);
// }
//
// }
//第二种
// for (int i = 1; i <= 100; i++) {
// if (! (i % 7 == 0 || i / 10 == 7 || i % 10 ==7)) {
// printf("%d\n", i);
// }
//
// }
/* // 敲7 游戏
for (int i = 1; i <= 100; i++) {
if (60 == i) {
printf("Game Over\n");
break;// 打断/终止 本层循环
}
if (i % 7 ==0 || i / 10 ==7 || i % 10 == 7) {
printf("啪\n");
continue;// 继续循环 跳过后续的代码
}
printf("%d\n",i);

}

*/

/****** 随机数******/
// printf("%d\n",arc4random() % 11);
// 范围随机数的公式 最大值 最小值 最小值
// arc4random() % (max - min + 1) + min

// printf("%d\n", arc4random() % (98 - 46 + 1) + 46);

// 练习 用for打印10个随机数(范围10-30),求最大值和最小值

//  第一种
/*
for (int i = 0; i < 10 ; i++) {
    printf("%d\n", arc4random() % (30 - 10 + 1) + 10);
}
 */
//  第二种
/*
int max = 0, min = 30;// 解决方案1
for (int i = 0; i < 10 ; i++) {
   int a =  arc4random() % (30 - 10 + 1) + 10;
    printf("%d ", a);
    max = max > a ? max : a;
    // 第一次进入循环时 直接赋值
    if (0 == i){
        min = a;// 解决方案2
    }
    min = min < a ? min : a;
 */
    /* 第二种 最大值最小值 解决方案
    if (max < a){//最大值
        max = a;
    }
    if (0 == i || min > a){//最小值
        min = a;
    }
     */

// }
// 最小值 有两种解决方案
// printf("\n");
// printf("max = %d\n", max);
// printf("min = %d\n", min);
//

/****** 循环嵌套******/
// 外层循环控制 行数
// for (int j = 0; j < 3; j++){
// //内层循环控制 一行中的内容长度
// // 打印5个* // for (int i = 0; i < 5; i++){
// printf(" * ");
// }
// // 回车
// printf("\n");
// }
/* int w = 0 , l = 0;// 自定义 打印几行
printf("请输入\n");
scanf("%d", &w );
printf("请输入\n");
scanf("%d", &l );

for (int i = 0; i < w; i++){
    for (int j = 0; j < l; j++) {
        printf("*");
    }
    printf("\n");
}
 */

/* for (int i = 0; i < 4; i++){

            // 打印空心
    if (i != 0 && i != 4 - 1) {// 是否是第二行和第三行是第二行或者是第三行的时候进行打印*
        //
        printf("*");
        // 打印空格
        for (int j = 0; j < 6 - 2; j++) {
            printf(" ");
        }
        printf("*");
        printf("\n");
        continue;
    }
            for (int j = 0; j < 6; j++){
                printf("*");
            }
            // 回车
            printf("\n");
        }

/
/

// 练习: 打印9*9乘法口诀
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf(" [ %d * %d = %d ] ", j, i, j * i);
}
printf("\n");
}
*/

#if 0
// 练习: 000-999
// 百位
for (int i = 0; i < 10; i++) {
// 十位
for (int j = 0; j < 10; j++) {
// 个位
for (int k = 0; k < 10; k++) {
printf("%d %d %d\n", i, j, k);
}
}
}
#endif
#if 0
/****** while******/
int i = 1;
while (i <= 100) {
printf("%d\n", i);
// while 中一定不要忘记写循环变量的增加
i++;
}

// for 模拟while
int j = 1;
for (; j <= 100;) {
    printf("%d\n", j);
    j++;
}

#endif
#if 0
// 练习 : 10亿 每天花一半 能花多少天

int money = 1000000000, days = 0;
//当有钱时 循环继续
while (money) {
    //每天 花一半
    money /= 2;
    days++;
}
printf("%d\n", days);

#endif
/****** do...while 循环******/
/* int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 100);

//while死循环
//  1/YES
while (1) {
    
}
//for死循环
for (; 1; ){
    
}

*/
#if 0 // int的最大值 + -21亿之间
// 练习" 输入一个整数 求这个整数的位数
int num = 0, b = 0;
printf("输入:\n");
scanf("%d", &num);

while (num) {
    num /= 10;
  
    b++;
}
printf("%d\n", b);

#endif

return 0;

}

2015-11-11-蓝鸥 第二次作业

//
// main.m
// 第二节作业
//
// Created by YIem on 15/11/11.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
/*第一题
int a;
printf("请输入一个整数");
scanf("%d", &a);
if(a%2 == 0)//a除以2,是否有余数,判断余数是否等于0.
printf("%d是偶数\n", a);
else printf("%d是奇数\n", a);
/
/
第二题
int a2 = 0;
printf("输入一个数\n");
scanf("%d", &a2);
if (a2 > 0) {
printf("正数\n");
} else if (a2 < 0){
printf("负数\n");
} else if (a2 == 0){
printf("0\n");
}
/
/
第三题
int a3_1 = 0, a3_2 = 0, a3_3 = 0;
printf("输入第一个年龄\n");
scanf("%d", &a3_1);
printf("输入第二个年龄\n");
scanf("%d", &a3_2);
printf("输入第三个年龄\n");
scanf("%d", &a3_3);
if (a3_1 > a3_2 && a3_1 > a3_3) {
printf("最大者的年龄:%d", a3_1);
} else if (a3_2 > a3_3 && a3_2 > a3_1){
printf("最大者的年龄:%d", a3_2);
} else if (a3_3 > a3_1 && a3_3 > a3_2){
printf("最大者的年龄:%d", a3_3);
}

*/

/*第四题
float a4 = 0;
printf("输入行李重量\n");
scanf("%f", &a4);
if (a4 <= 50 ) {
printf("价格为:%.2f",a4 * 0.15);
} else if (a4 >50){
printf("价格为:%.2f",(50 * 0.15) +((a4 - 50) * 0.25));
}
/
/
第五题
float x = 0, y = 0;

printf("输入X\n");
scanf("%f", &x);
if (x < 1) {
    y = x;
}else if (x >= 1 && x < 10){
    y = 2 * x - 1;
}else if (x >= 10){
    y = 3 * x - 11;
}
printf("y的值为:%.2f",y);
*/

/*第六题
float a6_1 = 0, a6_2 = 0;

char a6_4 ;

printf("输入如34+56:\n");
scanf("%f%c%f", &a6_1,&a6_4,&a6_2);

if (a6_4 == '+') {
    printf("运算结果为:%.2f\n", a6_1 + a6_2);
}   else if (a6_4 == '-'){
    printf("运算结果为:%.2f\n", a6_1 - a6_2);
}   else if (a6_4 == '/'){
    printf("运算结果为:%.2f\n", a6_1 / a6_2);
}   else if (a6_4 == '*'){
    printf("运算结果为:%.2f\n", a6_1 * a6_2);
}
*/
/*第七题
int a7_1 = 0, a7_2 = 0, a7_3;
printf("输入第一个数据\n");
scanf("%d", &a7_1);
printf("输入第二个数据\n");
scanf("%d", &a7_2);
printf("输入第三个数据\n");
scanf("%d", &a7_3);
BOOL c1 = a7_1 + a7_2 > a7_3;
BOOL c2 = a7_1 - a7_2 < a7_3 && a7_3 > a7_2 - a7_1;
if (c1 && c2) {
    printf("为三角形");
}
  else{
    printf("不为三角形");
}
*/
/*第八题
 //第一种

int a8_1 = 0, a8_2 = 0, a8_3 = 0;
printf("请输入三个数:");
scanf("%d%d%d", &a8_1, &a8_2, &a8_3);

if ((a8_1 > a8_2 && a8_1 < a8_3) || (a8_1 < a8_2 && a8_1 > a8_3)) {
    printf("%d为中间数\n", a8_1);
} else if ((a8_2 > a8_1 && a8_2 < a8_3) || (a8_2 < a8_1 && a8_2 > a8_3 )){
    printf("%d为中间数\n", a8_2);
} else if ((a8_3 > a8_2 && a8_3 < a8_1) || (a8_3 < a8_1 && a8_3 > a8_2)){
    printf("%d为中间数\n", a8_3);
}
*/
/*第二种 蒙蔽了
float a8_1 = 0, a8_2 = 0, a8_3 = 0;
int b8_1 = 0, b8_2 = 0, b8_3 = 0, b8_4 = 0;
printf("请输入三个数:");
scanf("%f%f%f", &a8_1, &a8_2, &a8_3);
b8_1 = a8_1 >= a8_2 ? a8_1 : a8_2;
b8_1 = b8_1 >= a8_3 ? b8_1 : a8_3;
b8_2 = a8_1 <= a8_2 ? a8_1 : a8_2;
b8_2 = b8_2 <= a8_3 ? b8_2 : a8_3;
b8_3 = a8_1 + a8_2 + a8_3;
b8_4 = b8_3 - b8_1 - b8_2;
printf("b8_4 = %d\n", b8_4);
*/


return 0;

}

2015-11-11 C语言 C2_分支结构

//
// main.m
// C2_分支结构
//
// Created by YIem on 15/11/11.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>
//枚举
enum seasons{
//将一些字符串和数字对应
//枚举值默认从0开始 向下逐行加1
//提高可读性
Spring = 1,
summer,
autumn,
winter,

};

int main(int argc, const char * argv[]) {

/******BOOL类型******/
    //表示真假
    //值:YES/NO
    //计算时 系统会自动替换为1/0
    //非0即为真
BOOL b1 = YES;
BOOL b2 = NO;
printf("b1:%d b2:%d\n", b1, b2);

/******关系运算符******/

    // > >= < <= == !=
BOOL b3 = 5 > 3;
printf("b3: %d\n", b3);
BOOL b4 = 3 < 4 < 5;//不能连续判断
printf("b4: %d\n",b4);

/******逻辑运算符******/
    //  与(&&) 运算符左右两侧的表达式都为真 逻辑表达式为真
    //  或(||) 运算符左右两侧的表达式都为假 逻辑表达式为假
    //  非(!) 对当前的结果取反
BOOL b5 = 3 < 4 && 4 < 5;
printf("b5: %d\n",b5);

// BOOL b5 = 3 < 4 && 4 < 5;
// printf("b5: %d\n",b5);
// BOOL b5 = 3 < 4 || 4 < 5;
// printf("b5: %d\n",b5);
BOOL b6 = !(3 < 4);
printf("b6: %d\n",b6);
//短路
// e1 && e2 表达式
//短路与 一假即假 e1为假时 e2的结果对整体没有影响 不会被执行
//短路或 一真为真 e1为真时 e2的结果对整体没有影响 不会被执行

/******if 语句******/
    // 1.如果...就...

// if (如果看到卖西瓜的) {
// 买一个包子
// }

// if (5 > 3) {
// printf("你真聪明\n");
// }
//练习:输入m 打印男
// char c = 0;
// scanf("%c",&c);
// if ('m' == c) {
// printf("男\n");
//
// }
// 2.如果...就...否则...
// char b7 = 0;
// scanf("%c",&b7);
// if ('m' == b7) {
// printf("男");
// } else {
// printf("女");
// }

//整行移动代码 command + Alt []
/*
int b8 = 0;
scanf("%d", &b8);
BOOL cond1 = b8 % 400 == 0;
BOOL cond2 = b8 % 4 ==0;
if (cond1 || cond2) {
    printf("闰年");
} else {
    printf("平年");
}

if(b8 % 400 == 0 || (b8 % 4 == 0 && b8 % 100 != 0))
{
    printf("润年");
}
*/
/*    // 3.如果...就...否则如果...就...
char key = 0;
printf("input:");
//getchar();//   从键盘缓冲区获取\n 相当于消除\n
scanf("%c", &key);
if (key > '0' && key <= '9') {
    printf("数字\n");
} else if (key >= 'a' && key <= 'z'){
    printf("小写字母\n");
} else if (key >= 'A' && key <= 'Z'){
    printf("大写字母\n");
} else {
    printf("其他字符\n");
}
*/

/****** Switch...case...******/
// int telephone = 0;
// scanf("%d", &telephone);
// // switch的条件中 必须填写整型表达式
// switch (telephone) {
// case 110:
// printf("职业规划部1\n");
// break;// break 停止当前case 如果没有break 则会顺序向下执行下一个case
// case 119:
// printf("职业规划部2\n");
// break;
// case 120:
// printf("职业规划部3\n");
// break;
// case 130:
// printf("职业规划部4\n");
// break;
// case 140:
// {
// int a = 0;
// // case 中定义变量时 必须加括号约束
// printf("职业规划部5\n");
// break;
// }
// default:
// printf("其他\n");
// break;
// }
//
// 枚举和switch 配合使用
// 练习: 从控制台输入1~4, 对应打出 春夏秋冬 的英文单词

// int season = 0;
// scanf("%d",&season);
// switch (season) {
// case 1:
// printf("春\n");
// break;
// case 2:
// printf("夏\n");
// break;
// case 3:
// printf("秋\n");
// break;
// case 4:
// printf("冬\n");
// break;
//
// default:
// break;
// }
int x = 0;
scanf("%d",&x);
switch (x) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");

    default:
        break;
}




    return 0;

}
C2_分支结构.zip

Title - Artist
0:00