第八次上机实验
上机题1:任意输入两个整数(-1000<n<10000),将两数分别反转(逆序)后两相加,相加后的结果再反转后输出
不完善:
#include<stdio.h>
void main()
{
int a,sum=0,j,p;
for(j=1;j<=2;j++)
{
p=0;
printf("请输入一个整数:\n");
scanf("%d",&a);
while(a!=0)
{
p=p*10+a%10;
a=(a-a%10)/10;
}
printf("%d\n",p);
sum=sum+p;
}
printf("他们的和为%d\n",sum);
}
改过:
#include<stdio.h>
int fanzhuan(int x);
void main()
{
int x,y;
printf("请输入2个整数:");
scanf("%d%d",&x,&y);
printf("%d\n",fanzhuan(fanzhuan(y)+fanzhuan(x)));
}
int fanzhuan(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>
int F(int n)
{
int result;
if(n==0||n==1)
result=1;
else
result=n*F(n-1);
return result;
}
void main()
{
int sum,i;
for(i=1;i<=20;i++)
sum=F(i);
printf("输出1+2!+3!+...+20!=%d\n",sum);
}
#include <stdio.h>
int F(int n)
{
int result;
if(n==0||n==1)
result=1;
else
result=n*F(n-1);
return result;
}
void main()
{
int sum,i;
for(i=1;i<=20;i++)
sum=F(i);
printf("输出1+2!+3!+...+20!=%d\n",sum);
}
-----------------------分割线-----------------------
上机题3:编写程序,输入一个正整数N,如果N 是质数则输出Yes,否则输出No。另,由于最小的质数是2,所以先检查它是否小于2,如果是的话,则提示“质数是不能小于2,请重新输入”
要求:利用自定义函数P(N)检查N 是不是质数
#include <stdio.h>
void main()
{ int n,i,j;
for(j=0;j<=10;j++)
{
printf("请输入一个正整数:\n");
scanf("%d",&n);
if(n<2)
printf("质数是不能小于2,请重新输入");
else
{
for(i=2;i<=n;i++)
{
if(n%i==0)
break;
}
if(i<n)
printf("NO\n");
else printf("Yes\n");
}
}
}