上机题1:任意输入两个整数(-1000<n<10000),将两数分别反转(逆序)后两相加,相加后的结果再反转后输出
#include<stdio.h>
int F(int x);
void main()
{
int x;
printf("请输入一个整数:");
scanf("%d",&x);
printf("%d",F(x+F(x)));
}
int F(int x)
{
int y=0;
while(x!=0)
{
y=y*10+x%10;
x=x/10;
}
return y;
}
运行程序截图:
-----------------------分割线-----------------------
上机题2:求1+2!+3!+...+20!的和
要求:利用递归函数
#include<stdio.h>
long fact(int a);
void main()
{
int sum=0;
for(int i=1;i<21;i++)
{
sum+=fact(i);
}
printf("1!+2!+3!+...+20!=%d",sum);
}
long fact(int a)
{
int s;
if(a==1||a==0)
s=1;
else
s=a*fact(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");
else
printf("No");
return 0;
}
void main()
{
int x;
printf("输入一个正整数:");
scanf_s("%d",&x);
if (x<2)
{printf("质数是不能小于2,请重新输入\n");
int x;
printf("输入一个正整数:");
scanf_s("%d",&x);
P(x);}
else P(x);
}
运行程序如图: