一月总结

来源:互联网 发布:youcam摄像头软件 编辑:程序博客网 时间:2024/04/30 08:27

数组

//数组不做越界检查void f(int a[3][2]){    a[1][2] = 100;}void main(){    int a[3][2] =     {         1,2,        3,4,        5,6    };    printf("\n%d", a[1][2]);      //要取第三行第二列,但是数组没有第三行第二列怎么办.    //把它当做一维数组理解,a[i][j]对应的就是一维数组中的下标为:行数 * 列数 + j 的元素    //所以a[1][2] = a[1*2 + 2] = a[4],就是a[2][0],就是要取数组中的第五个元素5.    f(a);    printf("\n%d", a[1][2]);    getchar();}

二维数组如果没有数,按一位数组算a[1][2] = a[1*2 + 2] = a[4],就是a[2][0],就是要取数组中的第五个元素5.

数组二分查找法

void main(){    int a[20], head = 0, end = 20, mid = (head + end) / 2, key, i;   //head表示头,end表示尾,mid表示中间,key代表我们输入的数    for (i = 0; i < end; i++)    {        a[i] = i + 1;        printf("%d  ", a[i]);   //初始化数组后,数组元素呈从小到大的造型排列    }    printf("\n请任意输入一位数字:  ");    scanf("%d", &key);    getchar();    while (key != a[mid])    {        key > a[mid] ? (head = mid + 1) : (end = mid - 1);   //跟中间位置比,大了,就把前面的全部砍掉。小了,就把后面的全部砍掉。        mid = (head + end) / 2;  //每次缩小范围后,都要重新定位中间位置,为下一次的比较做准备          if (head == end && key != a[mid])     //当砍到只剩一位时,说明没有找到。        {            printf("数组中不存在您输入的数字\n");            getchar();            return;    //找不到就跳出整个函数,否则就是死循环了。        }    }    printf("您要找的数字在数组中的下标是%d    ", mid);   //如果程序能运行到这里,说明找到了。    getchar();}

不断的取中间值,直到找到为止;遇到除不净的时候取中间值如:11/2中间值就是6

矩阵旋转void main(){    int a[5][5], b[5][5], i, j;    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            a[i][j] = 10 + rand() % 91;            //b[j][4 - i] = a[i][j];    //顺90度            //b[4-i][4 - j] = a[i][j];  //180度            //b[4 - j][i] = a[i][j];    //逆90度            b[4 - i][j] = a[i][j];    //上下镜像翻转            //b[i][4 - j] = a[i][j];      //左右镜像翻转            printf("%5d", a[i][j]);        }        printf("\n");    }    //printf("\n\t顺时针旋转90度\n\n");    //printf("\n\t顺时针旋转180度\n\n");    //printf("\n\t逆时针旋转90度\n\n\n");    printf("\n\t上下镜像翻转\n\n");    //printf("\n\t左右镜像翻转\n\n");    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            printf("%5d", b[i][j]);        }        printf("\n");    }    getchar();}

//杨辉三角

void main(){    int a[10][10] = { 0 },i,j;    for (i = 0; i < 10; i++)    {        for (j = 0; j < 10; j++)        {            if (j == 0)            {                a[i][j] = 1;            }            if (j > 0 && i >= j)             {                a[i][j] = a[i - 1][j] + a[i - 1][j - 1];            }  //核心代码            if (i >= j)            {                printf("%5d", a[i][j]);            }        }        putchar('\n');    }    getchar(0);}

函数

运用函数递归调用,打印100加到1的和int add(int num){    //printf("\n%d", num);    if (num == 1)    {        return 1;    }    else    {        return num + add(num - 1);  //4 + add(3) // 4 + 3 + add(2) //4 + 3 + 2 + add(1)//4 + 3 + 2 + 1;    }}void main(){    int n;    scanf("%d", &n);    getchar();    printf("\n\n从1加到%d的结果是%d", n, add(n));    getchar();}
运用函数递归调用,打印1加到100的和int add(int num,int i){    if (num == i)    {        return num;    }    else    {        return i + add(num,i+1);  //1 + add(5,2) //  1 + 2 + add(5,3) //1 + 2 + 3 +add(5,4) //1 + 2 + 3 +4 + add(5,5) //1 + 2 + 3 +4 + 5    }}void main(){    int n;    scanf("%d", &n);    getchar();    printf("从1加到%d的结果是%d", n, add(n,1));    getchar();}
编写一个函数,用于返回菲薄纳西数列int fibonacci(int n){    int  a = 1, b = 1, sum = 0;    for (int i = 2; i < n; i++)    {        sum = a + b;        a = b;        b = sum;    }    return sum;}void main(){    int n;    scanf("%d", &n);    getchar();    printf("sum = %d", fibonacci(n));    getchar();}

循环

判断一个数是否为水仙花数void checkNum(int a){    int g = a % 10;    int s = (a / 10) % 10;    int b = a / 100;    return (g*g*g + s*s*s + b*b*b == a) ? printf("\n%d是水仙话术", a) : NULL;}void main(){    int i;    for (i = 100; i < 1000; i++)    {        checkNum(i);    getchar();}
//判断质数int checkPrimer(int num){    int i;    for (i = 2; i < num; i++)    {        if (num%i == 0)        {            return 0;        }    }    if (i == num && i != 1)    {        return 1;    }    return 0;}void main(){    int a = 129;    checkPrimer(a) ? printf("%d是质数", a) : printf("%d不是质数", a);    getchar();}
//习题9:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。void main()  //90 = 2 * 3 * 3 * 5{    int num,i = 2,a = 0;    scanf("%d",&num);    getchar();    printf("\n%d = ",num);    while (num / i >= 1)    {        if (num % i == 0)        {            !a ? printf("%d", i) : printf(" * %d", i);            num /= i;             a++;        }        else        {            i++;        }       }    getchar();}
原创粉丝点击