C语言笔记(四)
上期答案1.加解密#includestdio.h #includestring.h int main() { int a; printf(请选择功能1-加密 2-解密\n); scanf(%d,a); getchar(); char text[1000]; int i0; if(a1) { printf(请输入需要加密的内容\n); fgets(text,1000,stdin); printf(加密后的结果为\n); while(text[i]!\0) { char ctext[i]; if(cAcZ) { c(c-A4)%26A; } else if(cacz) { c(c-a4)%26a; } printf(%c,c); i; } } else if(a2) { printf(请输入需要解密的内容\n); fgets(text,1000,stdin); printf(解密后的结果为\n); while(text[i]!\0) { char ctext[i]; if(cAcZ) { c(c-A-426)%26A; } else if(cacz) { c(c-a-426)%26a; } printf(%c,c); i; } } else { printf(输入数字不符合选择模式请重新运行程序选择\n); } return 0; }2.利用数组求解数列#includestdio.h #includestring.h int main() { int a[20]{1,1}; int n; printf(%d\n,a[0]); printf(%d\n,a[1]); for(n2;n19;n) { a[n]a[n-2]a[n-1]; printf(%d\n,a[n]); } return 0; }补充作业冒泡法讲解#includestdio.h int main() { int a[10]{0}; int i,j,temp; // i是外层循环轮数j是内层循环每轮的比较 // 第一步先完整输入10个数 printf(请输入10个整型值:\n); for(i0;i10;i) { scanf(%d,a[i]); } // 第二步冒泡排序核心两层循环 // 外层循环10个数最多需要9轮排序 for(i0;i9;i) { // 内层循环每轮比较到 10-1-i 的位置后面i个数已经排好序了不用再比 for(j0;j9-i;j) { // 相邻两个数比较大的往后换实现从小到大排序 if(a[j] a[j1]) { // 正确的两个数交换逻辑 temp a[j]; a[j] a[j1]; a[j1] temp; } } } // 第三步排序完成后输出结果 printf(从小到大排序后的结果\n); for(i0;i10;i) { printf(%d ,a[i]); } return 0; }二维数组二维数组的定义二维数组定义的一般形式为类型说明符 数组名【常量表达式】【常量表达式】#includestdio.h int main() { int a[5][3]{{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}; int i,j; int m_value0,c_value0,f_value0,tatal_value0; float m,c,f,t; for(i0;i5;i) { m_valuea[i][0]; c_valuea[i][1]; f_valuea[i][2]; for(j0;j3;j) { tatal_valuea[i][j]; } } mm_value/5.0; cc_value/5.0; ff_value/5.0; ttatal_value/15.0; printf(m%.1f\nc%.1f\nf%.1f\nt%.1f\n,m,c,f,t); return 0; }#includestdio.h int main() { int i0,j0; printf(输入数组的行数和列数\n); scanf(%d %d,i, j); int a[i][j]; int b[j][i]; int m0,n0; printf(给数组a赋值:\n); for(m0;mi;m) { for(n0;nj;n) { scanf(%d,a[m][n]); } } printf(\n原数组a:\n); for(m0;mi;m) { for(n0;nj;n) { printf(%d ,a[m][n]); } printf(\n); } for(m0;mi;m) { for(n0;nj;n) { b[n][m]a[m][n]; } } printf(\n转置后的数组b:\n); for(m0;mj;m) { for(n0;ni;n) { printf(%d ,b[m][n]); } printf(\n); } return 0; }#includestdio.h int main() { int a[3][4]{0}; int i,j; int hang,lie; int max; printf(请给矩阵赋值:\n); for(i0;i3;i) { for(j0;j4;j) { scanf(%d,a[i][j]); } } maxa[0][0]; hang0; lie0; for(i0;i3;i) { for(j0;j4;j) { if(a[i][j]max) { maxa[i][j]; hangi; liej; } } } printf(max%d\n,max); printf(hang%d\n,hang); printf(lie%d\n,lie); return 0; }#includestdio.h int main() { int a[3][3]; int i,j; printf(请输入9个数字:\n); for(i0;i3;i) { for(j0;j3;j) { scanf(%d,a[i][j]); } } printf(\n输出结果:\n); for(i0;i3;i) { for(j0;j3;j) { if(i 1 || j 1) { printf(%d ,a[i][j]); } else { printf( ); } } printf(\n); } return 0; }二分法二分查找只能用在已经排好序的数组上#includestdio.h int main() { int a[]{-12,0,6,16,23,56,80,100,110,115}; int b; printf(请输入一个数:\n); scanf(%d,b); int left0; int right9; int mid; int found0; while(leftright) { mid(leftright)/2; if(a[mid]b) { printf(找到了序号是:%d\n,mid); found1; break; } else if(a[mid]b) { leftmid1; } else { rightmid-1; } } if(found0) { printf(这个数不在数组里面\n); } return 0; }函数一个较大的程序可以分为若干个程序模块每一个模块用来实现特定的功能在高级语言中用子程序实现模块的功能子程序由函数来完成一个C程序可以由主函数和其他若干个函数构成函数的调用关系定义无参函数的一般形式类型标识符 函数名{声明部分语句部分}在定义函数时要用类型标识符指定函数值的类型即函数带回来的值的类型定义有参函数的一般形式类型标识符 函数名形式参数表列{声明部分语句部分}定义空函数的一般形式为类型标识符 函数名{}#includestdio.h int main() { int max(int x,int y); int a,b,c; scanf(%d %d,a, b); cmax(a,b); printf(M is %d,c); return 0; } int max(int x,int y) { int max; maxx; if(xy) { maxy; } else maxx; return max; }