- 点击跳转专栏=>Unity3D特效百例
- 点击跳转专栏=>案例项目实战源码
- 点击跳转专栏=>游戏脚本-辅助自动化
- 点击跳转专栏=>Android控件全解手册
- 点击跳转专栏=>Scratch编程案例
- 点击跳转=>软考全系列
- 点击跳转=>蓝桥系列
👉关于作者
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
👉实践过程
需要所有整理的文档可底部卡片联系我,直接发压缩包。
😜6174问题
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数
比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4
输入
第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数
输出
经过多少次上面描述的操作才能出现循环
样例输入
1
1234
样例输出
4
#include <stdio.h>
//产生新的黑洞数
int BlackHole(int num)
{
int a[4]={0},temp,i,j;
a[0]=num%10;
a[1]=num/10%10;
a[2]=num/100%10;
a[3]=num/1000;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
return (a[3]*1000+a[2]*100+a[1]*10+a[0])-(a[0]*1000+a[1]*100+a[2]*10+a[3]);
}
//判断是否进入循环
int is_equal(int num[],int temp,int i)
{
int j;
for(j=0;j<i;j++)
{
if(temp==num[j])
return 1;
}
return 0;
}
main()
{
int n;
scanf("%d",&n);
while(n--)
{
int num[10]={0};
int temp,i=0;
scanf("%d",&num[0]);
temp=num[0];
do
{
num[i]=temp;
temp=BlackHole(temp);
i++;
}
while(!is_equal(num,temp,i));
printf("%d\n",i);
}
return 0;
}
😜笨小熊
笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
输入
第一行数据N(0<N<100)表示测试数据组数。
每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
输出
每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
样例输入
2
error
olympic
样例输出
Lucky Word
2
No Answer
0
#include <stdio.h>
#include <string.h>
int permit(int num)
{
int i;
if(num<=1)
return 0;
for(i=2;i*i<num+1;i++)
{
if(num%i==0)
return 0;
}
return 1;
}
main()
{
int N;
scanf("%d",&N);
while(N--)
{
char str[100];
int num[100]={0},maxn,minn;
int i=1,j=0,k=1;
num[0]=1;
scanf("%s",str);
//查找最多字母与最少字母的个数分别存入maxn和minn
while(i<strlen(str))
{
int st=0;
int sl;//9999
for(j=0;j<k;j++)
{
if(str[i]==str[j])
{
num[j]++;
st=1;
break;
}
}
if(st==0)
{
str[k]=str[i];
num[k]=1;
k++;
}
i++;
}
minn=maxn=num[0];
for(i=0;i<k;i++)
{
if(num[i]>maxn)
maxn=num[i];
if(num[i]<minn)
minn=num[i];
}
if(permit(maxn-minn))
{
printf("Lucky Word\n%d\n",maxn-minn);
}
else
{
printf("No Answer\n0\n");
}
}
return 0;
}
😜鸡兔同笼
已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。
输入
第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)
a行里,每行都有一个n和m.(0<m,n<100)
输出
输出鸡兔的个数,或者No answer
样例输入
2
14 32
10 16
样例输出
12 2
No answer
#include <stdio.h>
main()
{
int a;
scanf("%d",&a);
while(a--)
{
int m,n;
int i,temp=0;
scanf("%d%d",&n,&m);
for(i=0;i<=n;i++)
{
if(i*4+(n-i)*2==m)
{
printf("%d %d\n",n-i,i);
temp=1;
}
}
if(temp==0)
printf("No answer\n");
}
return 0;
}
😜小学生算数
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
输入
输入两个正整数m,n.(m,n,都是三位数)
输出
输出m,n,相加时需要进位多少次。
样例输入
123 456
555 555
123 594
0 0
样例输出
0
3
1
#include <stdio.h>
main()
{
int n,m;
scanf("%d%d",&n,&m);
while(n!=0&&m!=0)
{
int i=0,sum=0;
if((n%10+m%10)>=10)
{
sum++;
i=(n%10+m%10)/10;
}
if(((n/10%10+m/10%10)+i)>=10)
{
sum++;
i=((n/10%10+m/10%10)+i)/10;
}
if(((n/100+m/100)+i)>=10)
{
sum++;
}
printf("%d\n",sum);
scanf("%d%d",&n,&m);
}
return 0;
}
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。