编写一个程序,读入一个正整数,把所有那些连续的和为给定正整数的正整数找出来。
#include
int main()
{
int x,sum=0,t;
printf("请输入一个正整数:");
scanf("%d",&x);
while(x!=0)
{
t=x%10;
x=x/10;
sum+=t;
}
printf("该数的各位数字之和:%d",sum);
}
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
这个问题看起来不是很简单,需要设计一个算法:
先讲数学:
设:
an=a+(n-1)*d (这里d=1)
a1=a
an=a+n-1
sn=(a1+an)n/2=(2a-1+n)/2
再回到这个编程上来:
我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增数列使得和为sn。
这里我们可以用循环来判定,给定一个n,sn已知,就可以求出a,如果a为正整数那么就可以找到等差数列的首项,加上n给定,d=1,那么就可以写出这个和式子。
代码如下:
#include
void main()
{
int input,i,n,flag;
float a;//等差数列的首项不一定为整数
flag=0;
printf("输入判断的整数:
");
scanf("%d",&input);
for(n=2;n<=input;n++)
{
a=(2*input+n-n*n)/(2.0*n);//求的首项
if(int(a)==a&&a>0)//如果为整整数,则满足要求
{
printf("%d=%d",input,int(a));//输出的序列为整数,a实质是整数,那么强制转化类型不影响结果
for(i=1;i<=n-1;i++)
printf("+%d",int(a+i));//等差数列的其他项也为整数,a+i实质是整数,装换类型
printf("
");
flag++;//flag记录满足要求的数列数
}
}
if(flag==0) //flag初始为0,通过上面的循环,如果有满足的在则不为0,为0则说明不能写成等差数列
printf("%d不能被表示成n连续正整数之和
",input);
}
#include<stdio.h>
void main()
{
int i;
int mubiaoshu;
int temp;
int sum=0;
while(1)
{
printf("请输入一个数:");
scanf("%d",&mubiaoshu);
for(i=1;i<=mubiaoshu /2;i++)
{
sum = i;
temp = i;
while(sum < mubiaoshu)
{
temp += 1;
sum += temp;
if(sum == mubiaoshu)
{
printf("可以得到%d到%d\n",i,temp);
break;
}
}
}
printf("\n");
}
}
/*wintc vc++ 都可通过*/
#include <stdio.h>
#include<math.h>
/* function is s= (n-m+1)*(n+m)/2 */
/*change it is n=(-1+sqrt(1+4*m*m-4*m+8*s))/2 */
/*and than n=(-1+sqrt(1+4*m*(m-1)+8*s))/2 */
long fun(long m,long s)
{
return (-1+sqrt(1+4*m*(m-1)+8*s))/2;
}
long check(long n,long m)
{
return (n-m+1)*(n+m)/2;
}
long main()
{
long s,m,n,cnt;
while(1)
{
scanf("%ld",&s);
cnt=0;
for(m=1;m<=s/2;m++)
{
n=fun(m,s);
if(check(n,m)==s)
{
cnt++;
printf("%ld~%ld ",m,n);
}
}
printf("\n");
printf("have %ld solve!\n",cnt);
}
return 0;
}
C语言 编写一个程序,输入一个正整数,求出它是几位数。
思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。参考代码:include <stdio.h>int main(){ int n,num=0;scanf("%d",&n);while(n){num++;n\/=10;}printf("...
用C语言编写程序,输入一个正整数n(1<n<=10),再输入n个整数,将这n个数...
include "stdio.h"int main(){ int i,j,n;int a[12];int min,mx;scanf("%d",&n);for(i=0;i<n;i++){ scanf("%d",&a[i]);} for(i=0;i<n;i++){ min=a[i];mx=i;for(j=i+1;j<n;j++){ if(a[j]>min){ min=a[j];mx=j;} } j=a[i];a[i]=a[mx];a...
C语音程序:输入一个正整数x,求其所有约数只之和,结果放到变量sum中,并...
include<stdio.h>int main(){int x,i,sum=0; scanf("%d",&x); for(i=1;i<=x\/2;i++) if(x%i==0)sum+=i; \/\/如果要包含x自身这个约数,就再加一句:sum+=x; printf("%d\\n",sum); return 0;}
编写程序,要求用户输入一个正整数,计算该正整数的阶乘,并输出。
include <stdio.h>int JC(int n){if (n == 0 || n == 1){return 1;}return n * JC(n - 1);}void main(){int n;scanf("%d", &n);printf("%d\\n", JC(n));}
如何用C语言编写一个计算正整数位数的程序?
此程序可通过以下步骤实现:1、输入一个正整数 2、将整数转换为字符串(使用sprintf函数)3、求字符串的长度(strlen函数),即正整数的位数 代码如下:include <stdio.h>#include <string.h>int main(){long num;char str[20];scanf("%ld", &num);sprintf(str, "%ld", num);printf("%d", ...
编写程序,实现从键盘输入一个正整数,输出该正整数的位数。
\/* 写程序用输出一个由用户输入的正整数的位数,例如26的位数为2;2341的位数为4。*\/ include "stdio.h"void main(){ int sum,i=0;printf("please input a sum (sum>=0 && 整数)");scanf("%d",&sum);while(sum!=0){ sum=sum\/10;i++;} printf("sum是%d位数\\n",i);} 正确的 ...
编写程序:输入一个不多于五位数的正整数,要求顺序输出它的每一位数
从高位到低位分解输出正整数,参考代码如下:include<stdio.h> int main(){ long n;int a[5],m=0,i;scanf("%ld",&n);if(n<=0||n>99999)return 0;while(n!=0){ a[m++]=n%10;n\/=10;} for(i=0;i<m;++i)printf("%d ",a[m-1-i]);return 0;} ...
编程,输入一个10进制正整数,然后输出它所对应的八进制数.
可以参考下面的代码:include <stdio.h> int main(int argc, char* argv[]){ int num;scanf("%d",&num);printf("%o",num);return 0;}
编写函数printb,程序要求输入一个正整数,以二进制书写形式输出_百度...
include <stdio.h>void DToB(int n);int main(void){ int num; printf("输入一个正整数:"); scanf("%d",&num); DToB(num); return 0;}void DToB(int n){ int num[sizeof(int)*8]; int i=0; while(n) { i++; num[i]=n%2; n=n\/2...
c语言 输入一个正整数n,输出n的所有因子
直接输出结果:当您需要在C语言中编写程序来找出一个正整数n的所有因子时,首先需要定义一些整型变量,以便进行运算。程序的流程如下:步骤1:初始化两个整数变量n和m,确保它们都是大于2的正整数,作为输入。步骤2:设置一个临时变量t,其值为m,同时定义一个变量i,初值设为2,用于遍历可能的因子。...