C语言-课后作业-4

网友投稿 751 2022-09-14

C语言-课后作业-4

C语言-课后作业-4

April 06 循环语句

第一题:判断循环语句执行几次

代码01:

#define _CRT_SECURE_NO_WARINGS#include int main(){ int i = 0; int j = 0; for (i = 0, j = 0; j = 0; i++, j++) { j++; printf("输出第%d\n", i); } printf("循环执行几次??\n"); return 0;}

答案01:

判断语句j=0,直接就是恒假,不执行语句,不信话可以换成j=1试试,嘿嘿

代码02:

#define _CRT_SECURE_NO_WARINGS#include //判断打印几次int main() { int i = 0; int j = 0; for (; i < 10; i++) { for (; j < 10; j++) { printf("此段代码最深结构处打印几次,即思考代码的时间复杂度::\n"); } } return 0;}

答案02:

十次,i=0第一次时,j循环就到了10,之后j恒等于于10,所以只有十次

代码03:

#define _CRT_SECURE_NO_WARINGS#include //问此段输出代码执行几次???int main(){ int i = 0; for (; ;) { printf("hhhhhhh"); }}

答案03

死循环,因为for语句中的条件表达式不写省略时,就默认恒为真,所以死循环,04学习中提过的。

第二题:计算n的阶乘

代码

#define _CRT_SECURE_NO_WARINGS#include int main(){ int i = 1; int n=0; int mul = 1; printf("请输入任意整数:\n"); scanf("%d", &n); //scanf键盘输入函数 for (i = 1; i <= n; i++) { if (i==0) { printf("mul恒等于==%d\n", i); } else { mul = mul*i; printf("阶数==%d\n",i); printf("阶乘mul==%d\n", mul); } } return 0;}

结果

第三题:计算n的阶乘之和,n=10

代码

#define _CRT_SECURE_NO_WARINGS#include int main(){ int i = 1; int n = 0; int mul = 1; int sum=0; printf("请输入任意整数:\n"); scanf("%d", &n); //scanf键盘输入函数 for (i = 1; i <= n; i++) { if (i == 0) { printf("mul恒等于==%d\n", i); } else { mul = mul * i; sum = mul + sum; printf("阶数 == %d\n", i); printf("阶乘mul == %d\n", mul); printf("和==%d\n", sum); } } return 0;}

结果

第四题:在数组中查找到7

代码

#define _CRT_SECURE_NO_WARINGS#include //遍历法int main(){ int arr[10] = { 1,2,3,4,5,5,6,7,8,9 }; int i; for (i = 0; i <= 10; i++) { if (arr[i] == 7) printf("列序数== %d\n", i); } printf("算法复杂度为=O(n)\n"); return 0;}

结果

第五题:用二分法减低算法复杂度

代码

#define _CRT_SECURE_NO_WARINGS#include int main(){ int arr[] = { 0,1,2,3,4,5,6,7,8,9,10 }; //不写数组长度,通过数组内容自动分配长度 int i = 0; //放头下标,也就是位序变量 int j = 0; //放尾下标 int m = 0;//中间位序 int find = 7;//查找的值 //1.先计算数值长度,确定最后下标数,为二分法准备 j = sizeof(arr) / sizeof(arr[0])-1; //sizeof 关键字计算数组长度,即数组总字节byte 除以 单个数据元素字节 = 元素个数 //2.二分法,就是每次都从中间猜数,所以现在我们找数组中间位置, //但是要注意:数组长度是奇数,好理解且方便定位 位序, //如果是偶数就要想想这么解决了这个不可以整除的两数之和了 for (i, j; i<=j;)//当前序大于后序跳出循环 { m = (i + j) / 2; printf("m一次二分\n"); //3.比较中间数与目标数的大小 //中间的小时 if (arr[m] < find) { i = m+1; printf("前序变化一次\n"); } //中间的大时 else if (arr[m] > find) { j = m-1; printf("后序变化一次\n"); } else if (arr[m] == find) { printf("找到了,可以跳出循环了\n"); printf("位序==%d,值==%d\n", m, arr[m]); break; } //m = (i + j) / 2; //printf("m一次二分\n"); } printf("i=%d,j=%d,m=%d\n", i, j, m); printf("没有找到数据,失败::\n"); return 0;}

结果

第六题:演示两个字符互换

代码

#define _CRT_SECURE_NO_WARINGS#include #include //引用strlen库函数/* 演示两个字符互换 April 09 */int main(){ int i = 0;//前下标 int j = 0;//后下标 char n; char arr01[] = {'#','#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#' ,'#' ,'#','\0'}; //16个, char arr02[] = "welcome to bit!";//15个,实际上还有一个终止符 \0,所以这里面一共有十六个元素 //j = sizeof(arr01) / sizeof(arr01[0]) - 2;//减二是为了排除这个\0对元素替换的影响 j = strlen(arr01) - 1;//用库函数,计算长度,到\0符号停止且\0不算入长度 printf("j==%d\n", j); for (i,j;i<=j;i++,j--)//前序大于后序跳出循环 { arr01[i] = arr02[i]; arr01[j] = arr02[j]; printf("arr01==%s\n", arr01); scanf("%c", &n);//用输入函数打断,感受变化 } return 0;}

结果

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:#yyds干货盘点#Ngrok(内网穿透工具)使用教程
下一篇:SpringMVC:Controller 及 RestFul风格(springmvccontroller单例线程安全)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~