上机题1:
任意输入两个整数(-1000<n<10000),将两数分别反转(逆序)后两相加,相加后的结果再反转后输出
#include<stdio.h>
long dx(long x)
{int y=0;
while(x!=0)
{
y=y*10+x%10;
x=x/10;
}return y;}
void main()
{ int a,b,c,d;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
c=dx(a);
printf("第一个数的逆序数为:%d\n",c);
d=dx(b);
printf("第二个数的逆序数为:%d\n",d);
int e;
printf("逆序的和为:%d\n",c+d);
e=dx(c+d);
printf("最后结果为:%d\n",e);
}
运行结果:
上机题2:
求1!+2!+3!+...+20!的和
要求:利用递归函数
#include<stdio.h>
long jc(int a);
void main()
{
int sum=0;
for(int i=1;i<21;i++)
{
sum+=jc(i);
}
printf("1!+2!+3!+...+20!=%d",sum);
}
long jc(int a)
{
int s;
if(a==1||a==0)
s=1;
else
s=a*jc(a-1);
return(s);
}
运行效果:
上机题3:
编写程序,输入一个正整数N,如果N 是质数则输出Yes,否则输出No。另,由于最小的质数是2,所以先检查它是否小于2,如果是的话,则提示“质数是不能小于2,请重新输入”
要求:利用自定义函数P(N)检查N 是不是质数
#include<stdio.h>
int P(int a)
{int n=0,i;
for(i=1;i<=a;i++)
{if (a % i==0)n++;
else continue;}
if (n==2)
printf("Yes\n");
else
printf("No\n");
return 0;
}
void main()
{while (1)
{int x;
printf("输入一个正整数:");
scanf_s("%d",&x);
if (x<2)
printf("质数是不能小于2,请重新输入\n");
else
{P(x);break;}
}
}
运行结果: