概述
博客主页: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米高度自由落下,每次落地后就反跳回原高度的一半。
本题思路也比较清晰,首先分析小球每次落地之后的反弹高度:
落地次数 | 落地后高度 |
1 | 50 |
2 | 25 |
3 | 12.5 |
4 | 7.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循环、函数嵌套以及递归作业练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复