每天3-4道c语言练习题(第11天)输入一个整数,并将其反转后输出 输入n为偶数时,当输入n为奇数时 猴子分桃问题 809*a=800*a+9*a 其中a代表的两位数, 809*a为四位数
作者:互联网
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