Linux C 编程一站式学习 第6章循环语句习题答案
2021/7/3 7:22:54
本文主要是介绍Linux C 编程一站式学习 第6章循环语句习题答案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
6.1while循环习题(66页)
1.1用while循环的方法求最大公约数
1 #include <stdio.h> 2 int Euclid(int a,int b) 3 { 4 int c = (a%b); 5 while(c != 0) 6 { 7 a = b; 8 b = c; 9 c = a%b; 10 } 11 return b; 12 } 13 14 int main(int argc, char *argv[]) 15 { 16 int a,b; 17 printf("please input two postive numbers:"); 18 scanf("%d %d",&a,&b); 19 printf("GCD is %d\n",Euclid(a,b)); 20 21 return 0; 22 }
1.2求Fibonacci数列的第N项
1 #include <stdio.h> 2 3 int fib(int x) 4 { 5 int n=1,num1=1,num2=1,result; 6 if(x==0 || x==1) 7 return 1; 8 else 9 { while(n != x) 10 { 11 result=num1+num2; 12 num1=num2; 13 num2=result; 14 n++; 15 } 16 } 17 return result; 18 } 19 20 int main(int argc, char *argv[]) 21 { 22 int x; 23 printf("please input a postive number:"); 24 scanf("%d",&x); 25 printf("%d\n",fib(x)); 26 return 0; 27 }
2.编写一个程序计算一下1到100的所有整数中出现多少次数字9。
1 #include <stdio.h> 2 int count() 3 { 4 int sum=0,i=1,first,second; 5 while(i <= 100) 6 { 7 first=i%10; 8 second=(i/10)%10; 9 if (first==9 ||second==9) 10 sum=sum+1; 11 i++; 12 } 13 return sum; 14 } 15 16 int main(int argc, char *argv[]) 17 { 18 printf("There are %d numbers contain '9' between 1--100\n",count()); 19 return 0; 20 }
每次循环打印的i值不会加1,因为每次循环时都执行了int i=0;所以一直在打印0,经过测试确实如此。
测试代码:
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 while(1) 5 { 6 int i =0; 7 printf("%d",i); 8 i=i+1; 9 } 10 11 12 return 0; 13 }
测试结果:一直打印0
6.4 break和continue语句(70页)
1.求素数这个程序只是为了说明break和continue的用法才这么写的,其实完全可以不用break和continue,请读者修改一下循环的结构,去掉break和continue而保持功能不变。
1 #include <stdio.h> 2 int is_prime(int n) 3 { 4 int i,sum=0; 5 for(i=2;i<n;i++) 6 if(n % i == 0) 7 sum++; 8 if(!sum) 9 return 1; 10 else 11 return 0; 12 13 } 14 15 int main(int argc, char *argv[]) 16 { 17 int i; 18 for(i=2;i <= 100;i++) 19 { 20 if(is_prime(i)) 21 printf("%d\n",i); 22 } 23 return 0; 24 }
思路:引入一个量sum来计数,因为质数只能被它本身和1整除,i是从2开始增加,剔除了1的这种情况,i<n也剔除了它本身的情况,所以当n能被2~n-1任一个数整除的话,他就不是质数,sum+1,只有当是质数的话sum=0,才能return 1;
2. 在上一节中讲过怎样把for语句写成等价的while语句,但也提到如果循环体中有continue语句,这两种形式就不等价了,想一想为什么不等价了?
因为对于while循环,执行continue语句之后测试控制表达式,如果值为真则继续执行下一次循环;对于for循环,执行continue语句之后首先计算控制表达式3,然后测试控制表达式2,如果值为真则继续执行下一次循环。
6.5嵌套循环(71页)
1. 上面打印的小九九有一半数据是重复的,因为8*9和9*8的结果一样。请修改程序打印这样的小九九:
主要就是第二层循环条件改一下就可以了
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 int i,j; 5 for(i=1;i<=9;i++){ 6 for(j=1;j<=i;j++) 7 printf("%d\t",i*j); 8 printf("\n"); 9 } 10 return 0; 11 }
这道题还没想明白该怎么做,感觉有点没思路啊,明天再考虑考虑,今天先到这把。
这篇关于Linux C 编程一站式学习 第6章循环语句习题答案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结