1、实验题目
第1题 设计一个程序,输入一个十进制数,输出相应的十六进制数。
第2题 当x>1时,Hermite多项式定义为Hn(x)={ 1 n=0; 2x n=1; 2xHn-1(x)-2(n-1)Hn-2(x) n 1; } 注释:Hn-1,Hn-2中的n-1,n-2为下标。当输入浮点数x和整数n后,求出Hermite多项式前n项的值。
第3题 判断s所指的字符串是否是“回文”。(即顺读和逆读是相同的字符串)
2、实验过程及结果(包括设计思路、程序代码、运行结果等)
第1题
【设计思路】:
输入一个十进制数,由于最初不能确定输入的十进制数转换后的十六进制数需要分配多大的空间,所以先判断该数能被16除(/)后商不为零的次数,就可以动态分配存储十六进制的数组的长度,再将该数循环地除以16得到得余数(%)就是16进制序列,并用之前的字符数组存放结果。先得到的是低位,最后顺序要反过来!(介于0到10的数直接输出,大于10的要用a,b,c,d,e,f表示)
【程序代码】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
int a, b, i = 0, j;
string m;
Console.Write("请输入一个十进制整数:");
a = Convert.ToInt32(Console.ReadLine());
b = a;
while (b != 0)
{
b /= 16;
i++;
}
string[] s = new string[i];
for (j = 0; j < i; j++)
{
m = Convert.ToString(a % 16);
a = a / 16;
if (Convert.ToInt32(m) >= 0 && Convert.ToInt32(m) < 10)
{
s[j] = m;
}
else
{
switch (m)
{
case "10": s[j] = "A"; break;
case "11": s[j] = "B"; break;
case "12": s[j] = "C"; break;
case "13": s[j] = "D"; break;
case "14": s[j] = "E"; break;
case "15": s[j] = "F"; break;
default: break;
}
}
}
for (j = i - 1; j >= 0; j--)
{
Console.Write(s[j]);//逆循环输出才能得到十六进制数
}
Console.Read();
}
}
}
第2题
【设计思路】:
观察函数,可以知道用递归思想,先定义一个关于该多项式的函数,再自己调用自己。同时运用if语句。
【程序代码】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static double H(double x, int n)
{
double s = 0;
if (n == 0)
s = 1;
else if (n == 1)
s = 2 * x;
else
if (n > 1)
s = 2 * x * H(x, n - 1) - 2 * (n - 1) * H(x, n - 2);
return s;
}
static void Main(string[] args)
{
double x;
int n;
Console.WriteLine("请分别输入x与n的值并回车:");
x = Convert.ToDouble(Console.ReadLine());
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(H(x, n));
Console.Read();
}
}
}
第3题
【设计思路】:
整体思路就是把输入的字符串存进在一个数组里,然后利用数组首尾互相验证是否相等,对于偶数个字符,各验证到一半就可以,而对于奇数个字符串就感觉不太好处理,其实这个时候+1凑成偶数再“/”2就可以了。
【程序代码】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
string s;
int m=0;
Console.WriteLine("请输入字符串;");
s= Console.ReadLine();
for (int i = 0; i < (s.Length + 1) / 2; i++)
{
if (s[i] != s[s.Length - 1 - i])
{
m =0;
break;
}
else
{
m = 1;
}
}
if (m==1)
{
Console.WriteLine("满足字符串");
}
else
{
Console.WriteLine("不满足字符串");
}
Console.Read();
}
}
}