算法入门

    xiaoxiao2025-03-14  39

    %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)