ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

【C习题】第二章 算法

【C习题】第二章 算法 1思路:先接收第一个输入数值预设为当前最大值循环读取剩下 9 个数字每输入一个就和当前最大值对比如果新数字更大则更新最大值循环结束之后输出保存好的最大值方法1数组存储全部 10 个数字int main() { //先输入10个数将第一个数设为最大值 // 再用第一个数跟后面的九个数比较跟新最大值 int arr[10], i, max; for (i 0; i 10; i) { scanf(%d, arr[i]); } max arr[0]; for (i 1; i 10; i) { if (arr[i] max) { max arr[i]; //更新最大值 } } printf(max: %d\n, max); return 0; }方法2for循环int main() { //先输入10个数将第一个数设为最大值 // 再用第一个数跟后面的九个数比较跟新最大值 int max, num, i; //先读取一个数作为最大值 scanf(%d, max); //再读取后面的九个数 for (i 1; i 10; i) { scanf(%d, num); if (num max) { max num; } } printf(max: %d\n, max); return 0; }求 123…100思路循环方式设置累加变量sum初始值为 0逐个把 1‑100 的数值加到 sum数学公式等差数列求和公式不需要循环一步算出结果执行速度最快。for 循环//int main() //{ // int i, sum; // sum 0; //sum初始值为0 // for (i 1; i 100; i) // { // sum i; // } // printf(%d\n, sum); // return 0; //}while 循环//int main() //{ // //方法2 while循环 // int i1, sum; //变量要初始化 // sum 0; // while (i 100) // { // sum i; // i; // } // printf(%d\n, sum); // return 0; //}等差数列公式公式(首项 末项)* 项数 / 2int main() { //方法3等差数列公式 int sum; sum (1 100) * 100 / 2; printf(%d\n, sum); return 0; }判断一个数 n 能否同时被 3 和 5 整除 是逻辑与运算符代表两个条件必须全部成立一个整数同时被 3 和 5 整除 → 该数是 15 的倍数a%b 代表求 a 除以 b 之后的余数余数等于 0 即代表可以整除。int main() { int n; scanf(%d, n); if (n % 15 0 ) { printf(%d能同时被3和5整除\n, n); } else { printf(%d不能同时被3和5整除\n, n); } return 0; }//判断一个数 n 能否同时被 3 和 5 整除 //int main() //{ // int n; // scanf(%d, n); // if (n % 3 0 n % 5 0) // { // printf(%d能同时被3和5整除\n, n); // } // else // { // printf(%d不能同时被3和5整除\n, n); // } // // return 0; //}输出 100~200 之间所有素数素数质数大于 1除 1 和它自身之外不能被其他整数整除的数字。优化技巧只需循环试探至 sqrt(n)节省运算100‑200 全部为大于 2 的整数偶数一定不是素数可以直接只遍历奇数。思路flag 作为判断标记一开始默认该数是素数一旦发现可以被整除就修改标记并跳出内层循环。sqrt(n)若 n 存在大于其平方根的因数则必然存在对应的小于平方根的因数因此只需要检测到平方根即可。//输出 100~200 之间所有素数 int main() { int n, i, flag; for (n 100; n 200; n) { flag 1; for (i 2; i sqrt(n); i) { if (n % 2 0) { flag 0; break; } } if (flag 1) { printf(%d , n); } } return 0; }
返回列表