标签:练习题 桃子 结果 int 猴子 809 include 输入
1.题目
输入一个整数,并将其反转后输出。
#include <stdio.h>
#include <math.h>
void main(){
int a,b=0,n,i;
printf("请输入一个整数:");
scanf("%d",&a);
n=log10(a)+1;
for(i=0;i<n;i++){
b*=10;
b=b+a%10;
a/=10;
}
printf("整数反转后结果为:%d",b);
}
代码分析: 使用log()函数,其中需要引用math.h头文件,用来计算a的位数,结果需要加一(因为 10^2=100,即2=log10(100), 当 a=9(或99)时,n=0(或1),所以结果应该加一)。
从第二次循环开始,b*=10;先把提取出来的(个位数)变成十位数,再次循环的时候就变成百位数了。我觉得这就是这一题的突破口。
运行结果
2.题目
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,
当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。
#include <stdio.h>
float i;
float two(int n){
float s=0,a;
for(i=2;i<=n;i+=2){
a=1/i;
s+=a;
}
return s;
}
float one(int n){
float s=0;
for(i=1;i<=n;i+=2){
s=s+1/i;
}
return s;
}
void main(){
int n;
float num;
printf("请输入一个整数:");
scanf("%d",&n);
if(n%2==0){
num=two(n);
}else{
num=one(n);
}
printf("结果为%f",num);
}
代码分析:刚开始的时候我把变量i声明为整数型(即int i) 最后结果不论我的函数怎莫变,结果s的值一直是31750,我可纳闷,花费了一个多小时,找不出问题,最后看了好多人的写法他们都是在1/i 这一步前加(float)强制转换,最后我直接把变量i声明为浮点型即可解决问题。
运行结果
3.题目
海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,
这只猴子把多的一个扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成五份,
又多了一个,它同样把多的一个扔入海中,拿走了一份,第三,第四,第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?
#include <stdio.h>
void main(){
int a,i=0,s;
for(a=4;i<5;a=a+4){
s=a;
for(i=0;i<5;i++){
if(s%4==0){
s=s/4*5+1;
}else{
break;
}
}
}
printf("原来岛上最少有%d个桃子",s);
}
代码分析:这一题用逆推的方法,设第五个猴子分完桃子后剩下的桃子的个数(通过题意知道剩下的桃子个数肯定是4的倍数,由此用for循环依次递增直到符合题意条件为止。
运行结果
4.题目
809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,
8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
#include <stdio.h>
void main(){
int a;
for(a=10;a<100;a++){
if(809*a<10000&&8*a<100&&9*a<1000&&9*a>99){
if(809*a==800*a+9*a){
printf("a=%d\n809*a=%d",a,809*a);
break;
}
}
}
}
运行结果
标签:练习题,桃子,结果,int,猴子,809,include,输入 来源: https://blog.csdn.net/m0_46206606/article/details/122598858
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。