计算机:
1、用下列近似公式计算e的值,要求误差小于10的负5次方。 e=1+1/1!+1/2!+1/3!+.....+1/n!
#include
#include
//用下列近似公式计算e的值,要求误差小于10的负5次方。 e=1+1/1!+1/2!+1/3!+.....+1/n!
int main()
{
int i=1,n=1;
double temp=0.0;
double e=1.0;
for(i=1;1.0/n>=1e-5;i++)
{
n=n*i;
temp=1.0/n;
e+=temp;
}
printf("e=%.6lf",e);
return 0;
}
2 写一个程序,计算输入的一个数中出现0-9各多少次,并按照0-9的次序输出出现的个数。
#include
#include
// 写一个程序,计算输入的一个数中出现0-9各多少次,并按照0-9的次序输出出现的个数。
void fun(int n)
{
int i,j,m;
int array[10];
memset(array,0,sizeof(int)*10);
while(n!=0)
{
m=n%10;
array[m]+=1;
n=n/10;
}
for(j=0;j<10;j++)
{
printf("%d--%d\n",j,array[j]);
}
}
void main()
{
int n;
scanf("%d",&n);
fun(n);
return 0;
}
3、判断一个字符串是否是对称的字符串,例如abcddcba,要求返回值是布尔类型。
#include
#include
#define N 1024
typedef enum
{
false,
true
} bool;
bool fun(char* str)
{
int i=strlen(str)-1,j=0;
while(j<=i)
{
if((str[i])!=(str[j])){
return false;
break;
}
j++;i--;
}
return true;
}
void main()
{
char str[N];
gets(str);
if(true==fun(str))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
4、写一个函数实现大数乘法
#include
#include
#include
#define N 1024
char a[N],a1[N];//两个大数 字符串
int b[N],b1[N];//转换成数组
int d[N*2];//积
void cheng(int max,int b[],int b1[],int d[])
{
int i,j;
//相×
for(i=0;i9)
{
d[i]=d[i]-10;
d[i+1]=d[i+1]+1;
}
}
}
int main()
{
int max,i,j,k;
scanf("%s",a);
scanf("%s",a1);
int c=strlen(a);
int c1=strlen(a1);
if(c>c1)//找出最长数组的长度
max=c;
else
max=c1;
memset(b,0,sizeof(b));
memset(b1,0,sizeof(b1));
memset(d,0,sizeof(d));//初始化 将数组中的所有数全部化为0
//依次倒叙把字符数组存入到整形数组中
for(i=c-1,j=0;i>=0;i--)
{
b[j++]=a[i]-'0';//字符型住那换成整形 借助ASCii码
}
for(i=c1-1,j=0;i>=0;i--)
{
b1[j++]=a1[i]-'0';
}
cheng(max,b,b1,d);//调用
//输出
int flag=0;
for(i=N*2;i>=0;i--)
{
if(flag)
{//借助flag标志,输出第一个不是0的位数前面所有的数
printf("a%d",d[i]);
}
else if(d[i])
{//倒叙输出 后面都是0,一直循环到第一个不是0的数
printf("b%d",d[i]);
flag=1;
}
}
if(!flag)
{//若俩数是0 和 0,或者一个数是0,则输出0
printf("%c",'0');
}
return 0;
}
5、写如下程序:1-20这20个数围成一圈,要求相邻的两个数和是素数(用一个数字序列模拟,第一个数为1),如果这个歌全可以围成,就输出这个圈,不能组成。(这个题我不会,emmm!球的某一大神的代码,嗯 大神们看看吧)
摘自:https://zhidao.baidu.com/question/59280067.html
#include
#include
#include
int Num[20], WaitList[20];
int arrPrime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37};
int isPrime(int n)
{
int i;
for (i = 0; i < 12; i++)
{
if (n == arrPrime[i])
{
return 1;
}
}
return 0;
}
void Insert(int Pos)
{
int i, j;
for (i = Num[Pos - 1] % 2; i < 20; i += 2)
{
if (WaitList[i] != 0)
{
if (isPrime(Num[Pos - 1] + WaitList[i]))
{
Num[Pos] = WaitList[i];
WaitList[i] = 0;
if (Pos == 19)
{
if (isPrime(Num[0] + Num[19]))
{
for (j = 0; j < 20; j++)
{
printf("%d ", Num[j]);
}
printf("\n");
//getch();
}
}
else
Insert(Pos + 1);
}
WaitList[i] = i + 1;
}
}
}
void main()
{
int i;
for (i = 0; i < 20; i++)
{
WaitList[i] = i + 1;
}
for (i = 0; i < 20; i++)
{
Num[0] = i + 1;
WaitList[i] = 0;
Insert(1);
WaitList[i] = i + 1;
}
}