机题1:任意输入两个整数(-1000<n<10000),将两数分别反转(逆序)后两相加,相加后的结果再反转后输出
我的程序:
#include<stdio.h>
void main()
{
int n,x=0,m,y=0,sum,z=0;
printf("请输入两个数:\n");
scanf("%d%d",&n,&m);
while(n!=0)
{
x=x*10+n%10;
n=n/10;
}
while(m!=0)
{
y=y*10+m%10;
m=m/10;
}
printf("输出:%d %d\n",x,y);
sum=x+y;
printf("sum=%d\n",sum);
while(sum!=0)
{
z=z*10+sum%10;
sum=sum/10;
}
printf("反转后的sum=%d\n",z);
}
或:
#include<stdio.h>
int daoxu(int n)
{
int x=0;
while(n!=0)
{
x=x*10+n%10;
n=n/10;
}
return x;
}
void main()
{
int n,m;
printf("请输入2个数:\n");
scanf("%d%d",&n,&m);
printf("%d %d\n",daoxu(n),daoxu(m));
printf("%d\n",daoxu(n)+daoxu(m));
printf("%d\n",daoxu(daoxu(n)+daoxu(m)));
}
截图:
-----------------------分割线-----------------------
上机题2:求1+2!+3!+...+20!的和
要求:利用递归函数
我的程序:
#include<stdio.h>
long jc(int n)
{
long sum1=1;
if(n==1) return 1;
return n*jc(n-1);
}
void main()
{
long sum=0;
for(int i=1;i<=20;i++)
{
sum=sum+jc(i);
}
printf("1!+2!+...+20!=%ld\n",sum);
}
-----------------------分割线-----------------------
上机题3:编写程序,输入一个正整数N,如果N 是质数则输出Yes,否则输出No。另,由于最小的质数是2,所以先检查它是否小于2,如果是的话,则提示“质数是不能小于2,请重新输入”
要求:利用自定义函数P(N)检查N 是不是质数
我的程序:
#include<stdio.h>
int zhishu(int n)
{ int i,j=2;
for(i=2;i<n;i++)
{
if(n%i==0)
return 1;
j++;
}
if(j==i)
return 0;
}
void main()
{
int n,m;
printf("请输入一个数:\n");
scanf("%d",&n);
if(n<=2)
printf("质数不能小于2,请重新输入!");
if(zhishu(n)==0)
printf("Y\n");
if(zhishu(n)==1)
printf("N\n");
}