书法网站优化关键词,wordpress游戏网站主题,怎么做网贷网站,wifi优化大师下载变种水仙花#xff08;来自牛课网#xff09;
题目
变种水仙花数 - Lily Number#xff1a;把任意的数字#xff0c;从中间拆分成两个数字#xff0c;比如1461 可以拆分成#xff08;1和461#xff09;,#xff08;14和61#xff09;,#xff08;146和1),如果所有拆…变种水仙花来自牛课网
题目
变种水仙花数 - Lily Number把任意的数字从中间拆分成两个数字比如1461 可以拆分成1和461,14和61,146和1),如果所有拆分后的乘积之和等于自身则是一个Lily Number。
例如
655 6 * 55 65 * 5
1461 1*461 14*61 146*1
求出 5位数中的所有 Lily Number。
输入描述
无
输出描述
一行5位数中的所有 Lily Number每两个数之间间隔一个空格。
解题方法
该题目主要的考察点是如何把一个数字分成两部分
例如1234 可以分成 123*4 12*34 1*234
123*41234除10可以得到1231234%10可以得到4
12*341234除100可以得到121234%100可以得到34
1*2341234除1000可以得到11234%1000可以得到234
因为要求五位数中的所有水仙花数例如12345我们可以这样处理
for(int j 10; j 10000; j * 10)
{//i 12345sum (i / j) * (i % j);
}if(sum i)
{printf(%d , i);
}
那么难点解决了我们来把代码补充完整
int main(void)
{int i 0;for (i 10000; i 100000; i){int sum 0;for (int j 10; j 10000; j * 10){//i 12345sum (i / j) * (i % j);}if (sum i){printf(%d , i);}}return 0;
} 完美解决 序列中删除指定数字(来自牛课网
描述
有一个整数序列可能有重复的整数现删除指定的某一个整数输出删除指定数字之后的序列序列中未被删除数字的前后位置没有发生改变 数据范围序列长度和序列中的值都满足 1≤n≤50
输入描述
第一行输入一个整数(0≤N≤50)
第二行输入N个整数输入用空格分隔的N个整数
第三行输入想要进行删除的一个整数
输出描述
输出为一行删除指定数字之后的序列
解题过程
1. 第一行输入一个整数(0≤N≤50)
该步骤实现简单不作过多解释
int n 0;
scanf(%d, n);
2.第二行输入N个整数输入用空格分隔的N个整数
易实现不作解释
int arr[50] { 0 };
//用来存入数据for(int i 0;i n;i)
{scanf(%d, arr[i]);
}
3.第三行输入想要进行删除的一个整数
我们先输入要删除的数据
int del 0;
scanf(%d, del);假定输入的数字是1、2、3、4、5、9
123459
我们此时可以先定义两个指针变量 i 和 j 我们对输入的数据来逐一分析若是数据不等于输入的数据则 i j 若是解引用得到数据等于输入的数据那么 j 指针在此停留而 i 指针继续向后走 再将 i 指针解引用得到的值覆盖掉 就、j 指针停留位置的数据然后 i 指针和 j 指针继续向后走每走一次都用 i 指针解引用所表示的值覆盖掉 j 指针解引用所表示的值。但是我们发现。当我们对数组中的最后一个元素进行覆盖操作时最后一个本身数据不会被覆盖所以最后的一个数据会存在两次我们此时打印数组的时候就需要少打印最后那一位数。我们来用代码实现
int i 0;
int j 0;
for( ; i n; i)
{if(arr[i] ! del){arr[j] arr[i];//该步骤相当于自己和自己赋值j;}
}走完这个for循环我们再把数组打印一遍此时我们需要少输出1位因为最后一位重复了
for(int k 0; k j; k)
{printf(%d , arr[k]);
}
到这里程序就写完了我们把各个模块连接起来
#define _CRT_SECURE_NO_WARNINGS 1
#include stdio.h//删除数组中指定的元素
int main(void)
{int n 0;scanf(%d, n);int arr[50] { 0 };//用来存入数据for (int i 0; i n; i){scanf(%d, arr[i]);}int del 0;scanf(%d, del);int i 0;int j 0;for (; i n; i){if (arr[i] ! del){arr[j] arr[i];//该步骤相当于自己和自己赋值j;}}for (int k 0; k j; k){printf(%d , arr[k]);}return 0;} 同样也是完美运行 结尾
那么本节我们关于C语言的两道习题的所有内容就到此结束了希望能给你带来帮助