
【C语言解题篇】必须要会的循环试题!!
发布日期:2021-05-04 20:14:43
浏览次数:21
分类:技术文章
本文共 2271 字,大约阅读时间需要 7 分钟。
目录
查找数字
编写代码在一个整形有序数组中查找具体的某个数
要求:找到了就打印数字所在的下标,找不到则输出:找不到。
解题关键:利用while循环,利用二分查找法,即找出每次的中间元素,当找的数比中间下标元素小时,就不用从右边找,当找的数比中间元素大时,就不用从坐边找。
代码示例:
#includeint main(){ int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int k = 0; scanf_s("%d", &k);//输入要查找的数字 int i = 0; int left = 0;//数组首元素下标 int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数 int right = sz - 1;//数组最后元素下标 while (left <= right) { int mid = (left + right) / 2;//中间元素下标 if (arr[mid] < k)//要找的数在中间元素的右边 { left = mid + 1; } else if (arr[mid] > k)//要找的数在中间元素的左边 { right = mid - 1; } else { printf("找到了,下标是:%d", mid); break; } } if (left > right) { printf("找不到了"); } return 0;}
字符从中间缩聚
要求:演示多个字符从两端移动,向中间汇聚
解题关键:
初始化两个字符串数组,数组大小必须一致,用strlen求出字符串的长度。
定义left,right作为数组第一个元素和最后一个元素的下标,将一个数组的左下标元素赋值另一个数组的左下标元素,右边也一样,然后让left++,right--。
代码示例:
#include#include #include int main(){ char arr1[] = "welcom to bit"; char arr2[] = "#############"; int left = 0; int right = strlen(arr1) - 1; while (left <= right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf("%s\n", arr2); left++; right--; //Sleep(300);//睡眠 //system("cls");//清空屏幕,让代码一行显示 } return 0;}
密码登录
编写代码实现,模拟用户登录情景,并且只能登录三次。
要求:只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序
解题关键:
for循环控制输入次数
使用strcmp(字符串比较函数)判断输入的字符串是否与密码相等,当其值为0时则表示相等,输入正确
代码示例:
#include#include int main(){ int i = 0; char password[20] = { 0 }; for (i = 0; i < 3; i++) { printf("请输入密码:\n"); scanf("%s", password); if (strcmp(password, "123456") == 0) { printf("登录成功!\n"); break; } else { printf("输入错误,重新输入!\n"); } } if (3 == i) { printf("三次均输入错误,即将退出程序!\n"); } return 0;}
最大公约数
给定两个数,求这两个数的最大公约数
解题方法:
相减法,两个数最大公约数最大为两数中的较小值,若不是则max--
辗转相除法,利用while循环反复求余,当余数为0时,被除数则是最大公约数
代码示例:
#includeint main(){ int m = 0; int n = 0; int c = 0;//余数 scanf_s("%d%d", &m, &n); //相减法 int max = 0; if (m > n)//判断两个数中的较大值 { max = n; } else { max = m; } while (1) { if (m % max == 0 && n % max == 0) printf("%d", max); break; } max--;//两个数最大公约数最大为两数中的较小值,不是则max--; return 0; //辗转相除法 while (c = m % n)//当m%n=0时,n就是最大公约数 { m = n; n = c; } printf("%d", n); return 0; //最小公倍数=(m*n)/最大公约数}
总结
相信这些题大家多多少少看过,解题方法也有很多,这些题对于大家掌握循环语句的知识很重要,他们也可以运用在自定义函数中求解,但是这是最基本的思路方法。如果大家感觉有帮助的话,那就请一键三连支持我吧!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月31日 11时34分53秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
jQuery练习t123
2019-03-03
jQuery练习t128,从0到1
2019-03-03
jQuery练习t130,从0到1
2019-03-03
jQuery练习t167,从0到1
2019-03-03
jQuery练习t203,从0到1
2019-03-03
jQuery练习t249,从0到1
2019-03-03
jQuery练习t250,从0到1
2019-03-03
jQuery练习t256,从0到1
2019-03-03
jQuery练习t270,从0到1
2019-03-03
jQuery练习t271,从0到1
2019-03-03
jQuery练习t272,从0到1
2019-03-03
jQuery练习t277,从0到1
2019-03-03
jQuery练习t288,从0到1
2019-03-03
jQuery练习t309,从0到1
2019-03-03
jQuery练习t310,从0到1
2019-03-03
jQuery练习t313,从0到1
2019-03-03
asp.net4.5练习~test4-2
2019-03-03
asp.net4.5练习~test4-4
2019-03-03
asp.net 4.5 练习~test4-10
2019-03-03
asp.net 4.5 练习~test5-2
2019-03-03