您的位置:首页 > 编程语言

两道笔试编程题(求水仙数和求平方根数组之和)

2015-08-10 21:45 399 查看
第一道是求水仙数的问题,在规定范围内,求得;

这道题目还有要求输入测试用例时的格式,一组两对的输入格式。另外一个考点是求一个数的每一位;详细见代码:

// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: