前言:今天是咱们第九期刷牛客网上的题目。
目标:对短除法的使用,对函数的递归使用熟练。
鸡汤:绊脚石乃是进身之阶。先干为敬,大家随意。
这里采用 flag 来判断是否为水仙花数
#include
#include
int main()
{
//初始化
int m = 0;
int n = 0;
int a = 0;
int b = 0;
int c = 0;
int flag = 0;
//多组输入
while((scanf("%d %d",&m,&n)) != EOF)
{
int i = 0;
for(i = m;i <= n;i++)
{
//取出每一位数字
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if(pow(a,3) + pow(b,3) + pow(c,3) == i)
{
printf("%d ",i);
flag = 1;
}
}
//判断
if(flag !=1)
{
printf("no\n");
}
//flag回0
flag = 0;
}
return 0;
}
一定要把int sum = 0放在循环里,每次循环必须使 sum变为0
在循环中嵌套循环每个数字剥离出来
#include
int main()
{
//初始化
int i = 0;
int j = 0;
//循环
for(i = 10000;i < 99999;i++)
{
int sum = 0;
//这里把每个数字剥离出来
for(j = 10;j <= 10000;j = 10*j)
{
sum = sum + (i / j) * (i % j);
}
//判断是否为水仙花数
if(sum == i)
{
printf("%d ",i);
}
}
return 0;
}
这里记住是多组输入
#include
int main()
{
int a, max = 0, small = 100, sum = 0, count = 0;
while (scanf("%d", &a) != EOF)
{
if (a > max)//判定最高分
{
max = a;
}
if (a < small)//判定最低分
{
small = a;
}
sum += a;
count++;//计数器
if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
{
printf("%.2f\n", (sum - max - small) / 5.0);
count = 0;//重置
max = 0;//重置
small = 100;//重置
sum = 0;//重置
}
}
return 0;
}
#include
int main()
{
//初始化
int num = 0;
int i = 0;
//输入
scanf("%d",&num);
while(num)
{
i = num % 10;
num = num / 10;
printf("%d",i);
}
return 0;
}
这里采用短除法
短除法演示:
如十进制120 —> 六进制
120/6=20 ----余0
20/6=3 ----余2
3/6=0 ----余3 (注:此处为c中所用除法。)
递归函数
使用函数
#include
//函数
void print(int x)
{
if(x>5)
{
print(x/6);
}
printf("%d",x%6);
}
int main()
{
//初始化
int n=0;
//输入
scanf("%d",&n);
//调用函数
print(n);
return 0;
}
#include
int main()
{
//初始化
int data = 0;
int sum = 1;
int data2=0;
int k = 1;
//输入
scanf("%d",&data);
for(int i = 1;k < data;i++)
{
for(int j = 0;j < i;j++)
{
if(k > data)
break;
sum += i;
k++;
}
}
return 0;
}
#include
int main()
{
int n;
scanf("%d", &n);
int i = 0;
for(i = 1; i <= n; i++)
{
int t = 0, num = i;
while(num > 0)
{
t = t*10 + num % 10;
num = num / 10;
}
if(t == i)
printf("%d\n", i);
}
return 0;
}
#include
int main(void)
{
int i;
while((scanf("%d", &i)) != EOF)
{
for(int n = 0; n < i; n ++)
{
printf("*");
if( n == i - 1 )printf("\n");
}
}
return 0;
}
#include
int main()
{
int x;
while(scanf("%d",&x)!=EOF)
{
for(int i=1;i<=x;i++)
{
for(int j=1;j<=x;j++)
{
if(j==x)
printf("*\n");
else
printf("* ");
}
}
}
}
#include
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
for(int a=0;a<=i;a++)
printf("* ");
printf("\n");
}
}
return 0;
}
今天的刷题内容就到这里啦,如果上面的题目你有更优的解法,请打在下面的评论区中,独乐乐不如众乐乐。麻烦大家举起自己的小手,给博主三连,有你们的支持就是我最大的动力。预知后事如何,且听下回分解。