题目内容: 从键盘输入一个int型的正整数n(已知:0<n<10000),编写程序判断n落在哪个区间。

作者&投稿:柞石 (若有异议请与网页底部的电邮联系)
用C语言编写程序从键盘输入一个正整数数n,输出n!~

编程实现计算n!,也就是n*(n-1)*(n-2)*....*1,可以通过递归函数来实现,具体实现方法:
#include int Func(int n){if(n < 2)
return 1;
else
return n*Func(n-1);
}
void main(){int n =0,m=0;
printf("请输入一个正整数:")
scanf("%d",&n);
m=Func(n);
printf("%d!=%d
",n,m);}
在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)!,这样逐层递归,直到计算出N!。
程序输出结果如下:

扩展资料:
所谓n的阶乘就是从1到n的乘积,所以除了递归法来实现以外,其实我们也可以通过一个for循环,从1到n依次求积同样可以达到计算n!的目地。
具体实现代码如下:
#include
int main() {int n,i,s=1;scanf("%d",&n);
for(i=1;i<=n;i++)//for循环求累积
s=s*i;
printf("%d
",s);
return 0;
}
/*运行结果:(例如求5的阶乘)5120*/

#include
#include
#include
void main()
{
int a;
char str1[200];
printf("Please input a integer: "); scanf("%d", &a);
itoa(a, str1, 10);
printf("The length of integer=%d", strlen(str1));
}
C语言实现如下:
#include
void main()
{
int i,j,k,n;
scanf("%d",&n); //输入一个正整数n
for(i=2;i<=n;i++)
{
k=0;
for(j=1;j<=i-1;j++)
if(i%j==0) k+=j;
if(k==i) printf("%d
",i);
//判断i的所有真因子之和是否等于i,是则输出i。
}
}
注意:建议n的取值小于10000,否则程序运行的时间将比较长。
知识扩展:完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。

示例1不正确
#include"stdio.h"
int po(int i)
{
int j;
j=1;
while (i)
{
j*=10;
i--;
}
if (j==1) j--;
return j;
}

int nu(int i)
{
int j;
j=0;
while (i)
{
i/=10;
j++;
}
return j-1;
}

int main()
{
int n;
printf("Please enter the number:\n");
scanf("%d",&n);
if (n < 0||n > 10000) {printf("error!\n");return 0;}
printf("%d: %d-%d\n",n,po(nu(n)),po(nu(n)+1)-1);

return 0;
}

这是网上找到的
下面是我自己的
#include <stdio.h>

int main()
{
int a;

printf("Please enter the number:\n");
scanf("%d",&a);

if (a>=1000 & a <= 9999)
printf("%d: 1000-9999\n",a);
else if (a <= 999 & a >= 100)
printf("%d: 100-999\n",a);
else if (a <100 & a >= 10)
printf("%d: 10-99\n",a);
else if (a>=0 &a < 10)
printf("%d: 0-9\n",a);
else printf("error!\n");

return 0;
}

大家可以一一用分支语句实现这个程序,但是,如果情况太多的话,分支语句太麻烦,我这里用膜除的方法实现他,对于细分到更小的范围也适用,只需修改循环变量就可以了。

#include<stdio.h>
#include<stdlib.h>

main(){
int n,i=1;
printf("Please enter the number:
");
scanf("%d",&n);
while(i<=10000){
i*=10;
if(n%i==n)
break;
}
if(i>10000||n<0)
printf("error!
");
else if(i>10)
printf("%d: %d-%d
",n,i/10,i-1);
else
printf("%d: 0-9
",n);
system("pause");
}



象州县19337017760: 题目内容: 从键盘输入一个int型的正整数n(已知:0<n<10000),编写程序判断n落在哪个区间. -
坚星泻痢: 大家可以一一用分支语句实现这个程序,但是,如果情况太多的话,分支语句太麻烦,我这里用膜除的方法实现他,对于细分到更小的范围也适用,只需修改循环变量就可以了.1234567891011121314151617181920 #include<stdio.h>#include...

象州县19337017760: 分数: 1 x, y, z 被定义为int 型变量,若从键盘为其输入数据,则正确的输入语句是( ) 选择一个答案 a. i分数: 1 x, y, z 被定义为int 型变量,若从键盘为其... -
坚星泻痢:[答案] B

象州县19337017760: 从键盘输入一个整数(int型),把这个数的第3(从0开始)位置为1然后输出 -
坚星泻痢: //#include "stdafx.h"//vc++6.0加上这一行.#include using namespace std; int main(void){ int a,b,n; while(1){ cout 999)...\na="; if(cin >> a,a>999) break; cout} for(b=0,n=1;a;a/=10,n*=10){ if(n!=1000) b+=(a%10)*n; else b+=1000; } coutreturn 0; }

象州县19337017760: 从键盘输入一个int型数可以用a=in.nextInt(),那要从键盘输入一个字符要用什么语句啊 -
坚星泻痢: in.nextchar() 应该没记错.其实你在输入语句的时候输入完'.'后编译器会自动联想的. 你在后面的联想内容里往下看,会有很多nextXXX的,鼠标移上去都有简单的中文注释.不怕麻烦的话就到JAVA帮助文档里去查Scanner类

象州县19337017760: C语言 从键盘上输入2个int型数 比较大小,并且显示最小数 -
坚星泻痢: 你这个代码错误好多 int x[3],i,p,*q;//你要输入4个数,但数组却只申请了3个应该改为int x[4] *q=x[3];//你的指针之前没有初始化,这里却引用指针指向的地址,运行会出错,改为q = x;p=min(*q);//min函数的参数是指针类型,这里却把int类型传...

象州县19337017760: C++语言 从键盘上输入一个int型数,一个浮点型数,比较其大小,并输出其中较大的数
坚星泻痢: #include&lt;stdio.h&gt; #include&lt;iostream&gt; using namespace std; int main() { int a; double b; cin&gt;&gt;a&gt;&gt;b; if(a&gt;b)cout&lt;&lt;a&lt;&lt;endl; else cout&lt;&lt;b&lt;&lt;endl; return 0; }

象州县19337017760: 我怎么从键盘输入一个int/double/字符串 -
坚星泻痢: 对于int型,可以调用函数itoa. char*itoa(int value,char*string,int radix); 功能为将任意类型的数字转换为字符串. int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等. float和doubl

象州县19337017760: 编写一个程序,定义一个4行4列的int型数组,从键盘输入16个相符的数存入其中,计算数组的和并显示. -
坚星泻痢: #include<stdio.h>int sum(int a[4][4]) {int s=0,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)s+=a[i][j];return s; } void main() {int a[4][4],i,j;for (i=0;i<4;i++){for (j=0;j<4;j++)scanf("%d",&a[i][j]);}printf("sum=%d\n",sum(a)); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网