我是靠谱客的博主 健壮荷花,最近开发中收集的这篇文章主要介绍c语言for循环、while循环、函数嵌套以及递归作业练习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

博客主页:https://blog.csdn.net/weixin_46094737?type=blog

下面开始做作业。

1、 从键盘输入一串字符,统计里面字母、数字、其他字符的个数(while循环)

分析:首先题目要求的是输入一串字符,然后统计相关字符出现的个数,我的思路这样的,首先一个一个的去拿字符,每拿一个字符判断一次,利用while()循环判断,既然要用到循环,必不可少的就是进入循环以及跳出循环的条件:(ch=getchar())!='n',有了这个思路即可。

 源代码:

#include <stdio.h>
int main()
{
int a,b,c;
char ch;
printf("请输入一串字符:n");
while((ch=getchar())!='n')
{
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
a++;
else if(ch>='0'&&ch<='9')
b++;
else
c++;
}
printf("该串字符中共有%d个字母n",a);
printf("该串字符中共有%d个数字n",b);
printf("该串字符中共有%d个其他字符n",c);
return 0;
} 

运行结果:

2、键盘录入一个数,请判断它数能被几个9整除 。如81就可以被2个9整除。

这一题乍一看好像还挺简单,但是在我编写程序的过程中发现,总是会出现一些不明的结果,排除低级错误之后,我发现这一题用函数调用,会是代码结构比较清晰。

 源代码:

#include <stdio.h>
int main()
{
int a,b;
printf("请输入一个整数:");
scanf("%d",&a);
b=count(a);
printf("%d能被%d个9整除",a,b);
}
int count(int a)
{
int i=0;
int b;
if(a%9==0)
{
i++;
b=a/9;
i += count(b);
}
else
;
return i;
}

运行结果:

3、计算顾客比例,统计30以上以及30以下的人数比例。

这一题比较简单,没有使用函数,就是按照流程一步一步写完即可,及时在输入顾客年龄的时候,需要使用一个简单的for(;;)循环来存储年龄的值即可。

源代码:

#include <stdio.h>
int main()
{
int a,b;
float i,j;
for(a=1;a<=10;a++)
{
printf("请输入第%d个顾客的年龄:",a);
scanf("%d",&b);
if(b>30)
i++;
else if(b<30)
j++;
else
;
}
i=i/10;
j=j/10;
printf("三十岁以上的比例为%.1f%%n",i*100);
printf("三十岁以下的比例为%.1f%%",j*100);
return 0;
}

运行结果:

4、输入一个整数,然后升序显示它的所有最小因子。如120,输出2,2,2,3,5

本题解题思路的关键在于,输入一个数,从2开始循环除,然后直接输入结果,这个结果就是我们需要的每次除的最小因子。

 源代码:

#include <stdio.h>
#include <math.h>
int main()
{
int a,i=2;
printf("请输入一个整数:");
scanf("%d",&a);
printf("%d最小因子有:",a);
while(i<=a)
{
if(a%i==0)
{
printf("%d ",i);
a /= i;
}
else
i++;
}
return 0;
}

运行结果:

5、如果一个正整数等于除它本身之外其他所有因数之和,这个数就称之为完会数。例如:6是

本题思路也较为明朗,1、找出一个整数的所有因数,利用for(;;)循环一个数一个数的去除,然后取余,如果余数为0,则这个除数就是这个整数的因数,还有一个问题就是,这个整数不是我们从键盘输入的(不是判断!!!),所以这个整数也需要利用一次for(;;)循环去拿。

此题考察的就是对for循环的嵌套使用。

 源代码:

#include <stdio.h>
int main()
{
int n,i,j,sum;
printf("请输入您要查找的完全数的范围:n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum += j;
}
if(sum==i)
printf("%d ",i);
}
return 0;
}

运行结果:

6、梅森数(Mersenne Prime)指的是形如 -1的正整数,其中指数 n 是素数。如果一个梅森数是素数,则称其为梅森素数。例如,当 n=2,3,5,7 时,-1 都是素数,但 n=11 时,-1 显然不是梅森素数。编写程序找出(n<=31)以内的所有梅森数 。

本题较为复杂一点,首先分析我们不难发现,我们首先就是要解决如何输出31(包含31)以下的所有素数,然后拿这些素数去进行指数运算即可,最后就是将得到的指数在进行一次素数判断即可,最后输出这些素数。

 源代码:

#include <stdio.h>
#include <math.h>
int prime(int n)
{
int i,k;
k=sqrt(n)+1;//输出二次方根,然后加1,即可得到素数
for (i=2; i<=k; i++)
{
if (n%i == 0)
return 0;
}
}
int main()
{
int m,i;
printf("梅森素数:n");
for (i=2; i <= 31;i++)
{
m=pow(2,i)-1;
if (prime(m))
printf("M(%d)=%dn",i,m);
}
return 0;
}

运行结果:

7、(自由落体)假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。

本题思路也比较清晰,首先分析小球每次落地之后的反弹高度:

落地次数落地后高度
150
225
312.5
47.5

源代码:

#include <stdio.h>
int main()
{
float a,n;
a=count(n);
return 0;
}
int count(int i)
{
int n;
float sum=100.0,m=100.0;
printf("请输入小球的落地次数:n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m *= 0.5;
sum += m;
printf("小球落地第%d次后高度为:%fn",i,m);
printf("小球共经过了%f米n",sum);
}
return m;
}

运行结果:

最后

以上就是健壮荷花为你收集整理的c语言for循环、while循环、函数嵌套以及递归作业练习的全部内容,希望文章能够帮你解决c语言for循环、while循环、函数嵌套以及递归作业练习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部