一月总结
来源:互联网 发布: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();}
阅读全文
0 0
- 一月总结
- 一月总结
- 一月总结
- 一月总结
- [原创]一月总结
- 实习一月总结
- 五楼一月总结
- 一月五号总结
- 一月六号总结
- 一月计划总结;
- 第十一月学习总结
- 毕业一月总结
- 一月学习总结
- 学习一月总结
- 实习一月总结
- 打字一月总结
- web开发一月总结
- 一月英语总结
- hadoop编程(8)-MapReduce案例:次排序(Secondary Sort)详解
- Android深入了解自定义属性
- java浅拷贝VS深拷贝
- 004:神秘的数组初始化
- [luogu1272]重建道路(树形dp)
- 一月总结
- 通用链表,队列的实现
- Python网络爬虫(七):百度文库文章爬取器
- Codevs 3286&&洛谷 P1966 火柴排队
- Worley Noise(一)
- 图论模版
- C++三大特性 -- 继承
- LINUX内核内存屏障
- 为安卓项目添加依赖库的一个注意事项