两道笔试编程题(求水仙数和求平方根数组之和)
2015-08-10 21:45
399 查看
第一道是求水仙数的问题,在规定范围内,求得;
这道题目还有要求输入测试用例时的格式,一组两对的输入格式。另外一个考点是求一个数的每一位;详细见代码:
第二题是求一个数组的各元素之和。第一个元素是用户输入元素,第二个元素分别是前一个数的平方根。数组大小也是用户输入决定的,例如用户输入81 4\n2 2\n,那么输出为94.73\n3.41
不多说了,详细看代码:
这道题目还有要求输入测试用例时的格式,一组两对的输入格式。另外一个考点是求一个数的每一位;详细见代码:
// shuixianhuashu.cpp : 定义控制台应用程序的入口点。 /* 题目是求特定范围内的水仙数,例如100<=m<=n<=999 @midhidemudong @2015-8-10-21:24 */ // #include "stdafx.h" int main() { unsigned m1 = 100, n1 = 100, m2 = 100, n2 = 100; printf("please input two groups Numbers m and n,conditions that 100<=m<=n<=999\n"); //下面两个while循环的作用就是能够读入两行输入,每行两个数据,并以空格隔开。根据题目要求,称之为两对一组数据; while (scanf_s("%d %d", &m1, &n1)) //先读入两个数据 { char ch = getchar(); //在读入一个回车键,表示一行结束; if (ch == '\n') break; } while (scanf_s("%d %d", &m2, &n2)) { char ch = getchar(); if (ch == '\n') break; } unsigned temp[10]; bool Find1 = false, Find2 = false; int count = 0; for (unsigned i = m1; i <= n1; i++) { int a = 0, b = 0, c = 0; a = i / 100; //如何求一个整数各位上的数?最高位是原数除以10^n b = i / 10 - a * 10; //次高位可以是:除以10余10,b=(i/10)%10; c = i - a * 100 - b * 10; //这种方法也可以,而且没有除法和余运算; if (i == (a*a*a + b*b*b + c*c*c)) { temp[count++] = i; Find1 = true; } } if (Find1) { for (int i = 0; i < count; i++) printf("%d ", temp[i]); printf("\n"); } else printf("no\n"); for (unsigned i = m2; i <= n2; i++) { int a = 0, b = 0, c = 0; a = i / 100; b = i / 10 - a * 10; c = i - a * 100 - b * 10; if (i == (a*a*a + b*b*b + c*c*c)) { temp[count++] = i; Find2 = true; } } if (Find2) { for (int i = 0; i < count; i++) printf("%d ", temp[i]); printf("\n"); } else printf("no\n"); return 0; }
第二题是求一个数组的各元素之和。第一个元素是用户输入元素,第二个元素分别是前一个数的平方根。数组大小也是用户输入决定的,例如用户输入81 4\n2 2\n,那么输出为94.73\n3.41
不多说了,详细看代码:
// shulieqianNxianghe.cpp : 定义控制台应用程序的入口点。 /* @mishidemudong @2015-8-10-21:37 */ // #include "stdafx.h" #include"math.h" float SumArray(int n, int m) { double *temp = new double[m]; temp[0] = n; double sum = temp[0]; for (int i = 1; i < m; i++) { temp[i] = sqrt((double)temp[i - 1]); sum += temp[i]; } delete[]temp; return sum; } int _tmain(int argc, _TCHAR* argv[]) { int n1, m1; while (scanf_s("%d %d", &n1, &m1)) { char ch = getchar(); if (ch == '\n') break; } int n2, m2; while (scanf_s("%d %d", &n2, &m2)) { char ch = getchar(); if (ch == '\n') break; } printf("%.2f\n%.2f", SumArray(n1, m1), SumArray(n2,m2)); return 0; }
相关文章推荐
- Spring面试问答
- 用过滤器过滤全站非法字符
- ASP.NET并发处理
- [转]Java中子类调用父类构造方法的问题分析
- 翻译:怎样理解C++中的Aggregate和POD类型---An answer from stackoverflow
- LRU缓存介绍和JAVA实现
- 用MATLAB画误差对比图
- c++中的三种排序,比较基础,因为作为一个编程员总要会几种排序方法
- C#高级编程----第一部分完结
- java新版中唤醒指定线层对象
- Principles of good RESTful API Design 好的 RESTful API 设计
- machine learning in coding(python):拼接原始数据;生成高次特征
- 在myeclipse中写mysql语句出现的一个报错
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- 找不到lua_open
- 续之前那个图书管理代码,还在修改实现中
- C++_嵌套类
- Java中的数据库处理—增删改查
- c++学习笔记
- SpringMVC 集成JSR303数据校验