算法入门

%d 读入或输出int变量
%c 读入或输出char变量
%f 读入或输出float变量
%s 读入或输出char * 变量
%lf 读入或输出double 变量
%e 以科学计数法格式输出数值
%x 以十六进制读入或输出 int 变量
%I64d 读入或输出 _int64 变量(64位整数) (%lld)
%p 输出指针地址值
%.5lf 输出浮点数,精确到小数点后5位

回文数
/*问题描述:输入一个整数,判断一个该数是否为回文数。
输入要求:输入一系列的整数n,n<100000000
输出要求:如果是回文数输出Yes,如果不是回文数输出No
输入样例:1234
121
-12321
100
输出样例:No
Yes
Yes
No

*/
#include<stdio.h>
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
int m = 0, k = n;
while (k)
{
m = m * 10 + k % 10;
k /= 10;
}
if (m == n)printf(“Yes\n”);
else printf(“No\n”);

}

return 0;

}
错误:
1)回文数是与原输入数字进行判断,数字处理过程中绝不能把中间数字和原输入数字混淆。
2)写代码的思路,数据的输入,处理,输出。算法,主要优化中间的处理过程。
3)微优化,结尾输出用了一个三目运算符
4)将注释直接从网站直接贴到VS2015中,可能会无法识别,VS2015做出如下反馈信息
这是编码不一样的原因,详见
Unicode字符集,将全世界的文字存储到计算机http://m.biancheng.net/view/vip_1730.html

1>d:\程序编译\learning\learning\源.cpp : error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式

素数因子

问题描述:输入一个整数,输出它的所有素数因子
输入要求:输入一系列的整数(0,1,-1除外),每行一个
输出要求:输出所有的素数因子,每个因子之间用1个空格分开,最后一个因子后面没有空格
输入样例: 8
30
125
输出样例:2 2 2
2 3 5
5 5 5
解题思路:
1)两个过程,因子先找出因子 再判断素数
处理得出因子的过程,两种,一是遍历从1到n,而是从1到√n 检索因子i,判断条件为n%i==0;即为因子
2) 数字存储 与前面不同,素数因子需要集中输出,所以需要把找到的素数因子存到一个足够大的数组之中存储下来,需要标记处存下了多少的素数因子
3)输出输到最后一个素数因子时要自动换行
4)利用函数处理 捆绑成两个函数,第一个负责用数组把存下的因子传过去,第二个需要把传过来的因子数组处理成一个只剩下素数的因子数组。
5)错误示范
问题描述:输入一个整数,输出它的所有素数因子
输入要求:输入一系列的整数(0,1,-1除外),每行一个
输出要求:输出所有的素数因子,每个因子之间用1个空格分开,最后一个因子后面没有空格
输入样例: 8
30
125
输出样例:2 2 2
2 3 5
5 5 5
//#include<stdio.h>
//#include<math.h>
//void main()
//{
// int n;
// while (scanf("%d", &n) != EOF)
// {
// int b[100]
// for (int i = 0; i < = sqrt(n); i++)
// {
// if()
// }
// }
//}
题目已给信息要求输出的是能够进行质因数分解的因子。 !!!
///问题描述:输入一个整数,输出它的所有素数因子
输入要求:输入一系列的整数(0,1,-1除外),每行一个
输出要求:输出所有的素数因子,每个因子之间用1个空格分开,最后一个因子后面没有空格
输入样例: 8
30
125
输出样例:2 2 2
2 3 5
5 5 5
//#include<stdio.h>
//#include<math.h>
//int gcd(int n)
//{
// int i;
// for (i = 2; i < n; i++)
// {
// if (n%i == 0)return 0;
//
// }
// return 1;
//}
//void main()
//{
// int n;
// while (scanf("%d", &n) != EOF)
// {
// int i,m=n;
// for (i=2; i <=n; i++)
// {
// if (gcd(i) == 1)
// {
// n /= i;
// printf("%d “, i);
// }
// }
// printf(”\n");
// }

数字黑洞
问题描述:任意一个每位数字不完全相同的4位正整数,将各位上数字重新组合成一个最大数和一个最小数相减,重复这个过程,必定得到6174。
输入要求:输入一系列的4位正整数,占一行。
输出要求:占一行,最终得到6174的变换次数。
输入样例:1234
1000
6174
输出样例:3
5
0
1)四个数字分别提取出来,排个序
2)按照从大到小和从小到大加起来,对数位按权展开
3)作差

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值