C++题目,我课也听了啊,可我就是不会…有没有大佬帮忙看一下这些题? 20
题目比较多,没有逐个加详细的注释,有不明白的直接追问或者私信吧,运行效果图:
完整代码如下:
#include <stdio.h>
//数学函数头文件,用于第三题的求平方根
#include <math.h>
//////////////////////////////////////////////////////////////////////////
//第一题
int GetQ1Value(int t)
{
if (t < 0)//n==0
{
return 0;
}
if (0 == t)//n==1
{
return 1;
}
//N>=2
int lN_2 = 0;//n-2
int lN_1 = 1;//n-1
while (lN_1 + lN_2 <= t)
{
int lN = lN_1 + lN_2;
lN_2 = lN_1;
lN_1 = lN;
}
return lN_1 + lN_2;
}
void Q1_Main()
{
int t = 1000;
int lResult = GetQ1Value(t);
printf("Q1 = %d\r\n", lResult);
}
//////////////////////////////////////////////////////////////////////////
//第二题
int Q2_GetAddEnd(int lNowValue, int n)
{
if (n == 0)
{
return lNowValue;
}
lNowValue *= 10;
lNowValue += 2;
return Q2_GetAddEnd(lNowValue, n-1);
}
void Q2_Main()
{
int n = 5;
int lResult = 0;
for (int i = 1; i <= n; i++)
{
lResult += Q2_GetAddEnd(0, i);
}
printf("Q2 = %d\r\n", lResult);
return;
}
//////////////////////////////////////////////////////////////////////////
//第三题
bool IsPrimeNumber(int lNumber)
{
//求平方根,该函数用到了头文件math.h
int lLimit = (int)sqrt((double)lNumber);
for (int i = 2; i <= lLimit; i++)
{
if (lNumber % i ==0)
{
return false;
}
}
return true;
}
void Q3_Main()
{
for (int i = 1000; i < 2000; i++)
{
if (IsPrimeNumber(i))
{
printf("Q3 min=%d, ", i);
break;
}
}
for (int i = 2000; i > 1000; i--)
{
if (IsPrimeNumber(i))
{
printf(" max=%d", i);
break;
}
}
printf("\r\n");
}
//////////////////////////////////////////////////////////////////////////
//第四题
int Q4_Fun(int n)
{
static int lResult = 0;
for (int i = 1; i <= n; i++)
{
if (n % 2 == 0)
{
lResult += i;
}
}
return lResult;
}
void Q4_Main()
{
int n = 100;
int lResult = Q4_Fun(n);
printf("Q4 = %d\r\n", lResult);
}
//////////////////////////////////////////////////////////////////////////
//第五题
bool IsPalindrome(int lNumber)
{
int lNumberR = 0;
int lNumberTemp = lNumber;
while (lNumberTemp > 0)
{
lNumberR *= 10;
lNumberR += (lNumberTemp % 10);
lNumberTemp /= 10;
}
return lNumber == lNumberR;
}
void Q5_Main()
{
printf("q5 = ");
for (int i = 1; i <= 500; i++)
{
if (IsPalindrome(i))
{
printf("%d,", i);
}
}
printf("\r\n");
}
//////////////////////////////////////////////////////////////////////////
//第六题
#define Q6_X(a,b) (((a)+(b))/2.0)
#define Q6_AREA(x,h) ((x)*(h))
void Q6_Main()
{
double a = 5, b = 10, h = 5;
double x = Q6_X(a, b);
double lArea = Q6_AREA(x, h);
printf("Q6 = %g\r\n", lArea);
}
int main()
{
Q1_Main();
Q2_Main();
Q3_Main();
Q4_Main();
Q5_Main();
Q6_Main();
printf("end\r\n");
return 0;
}