求整数解问题 C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙
C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙
C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙
重点学习取出每一位的过程,莫只是抄了了事。
#include <iostream.h>int main (){int n;cout<<"pls input n";cin>>n;int s[10]={0};存储每个数字出现个数for(int i=1;i<=n;i++){连续从后边取出一位进行计数int shang,yushu;shang=i;while(shang!=0){yushu=shang%10;s[yushu]++;shang=shang/10;}}输出结果cout<<i<<":"<<s[1]<<endl;}定义一程序求出任意一整数中“4”出现的次数,并求出整数400-499中所有“4”的个数
代码: #include <stdio.h>
int num_of_4(int n);void main()
{
int n,i,sum=0;
printf("请输入一个整数:n");
scanf("%d",&n);
printf("%d中4出现的次数是:%dn",n,num_of_4(n));
for(i=400;i<=499;i++)
{
sum=sum+num_of_4(i);
}
printf("400-499中所有4的个数是:%dn",sum);
}int num_of_4(int n)
{
int num=0;
while(n!=0)
{
if(n%10==4)
num++;
n=(int)(n/10);
}
return num;
} 图:
输出一个整数n,输出n的位数中2出现的次数。
#include<stdio.h>
void main() { int x,n;
scanf("%d",&x); n=0; while ( x ) { if ( x%10==2 ) n++; x/=10; } printf("%dn",n);
}
给出一个整数n,其中n小于等于1000.请求出1~n中所有的素数的个数
var
n,i,j,s:integer;
x:boolean;
begin
read(n);
s:=2;
x:=true;
if n<=3 then s:=n-1
else
for i:=4 to n do
begin
for j:=2 to trunc(sqrt(i)) do
if (i mod j=0) then begin x:=false;quit;end;
if x then s:=s+1;
x:=true;
end;
write(s);
end.
【【不清楚,再问;满意, 请采纳!祝你好运开!】】

给出一个整数n,其中n小于等于100.然后给出n个数,在这n个数中,其中一个数出现的次数是超过n的一半
假定输入的每一个数不超过10000:
var a:array[1..10000]of integer;
x,i,s:integer;
begin
readln(n);
for i:=1 to n do
begin
read(x); inc(a[x]);
end;
for i:=1 to 10000 do
if a[i]>(n +1) div 2 then break;
if a[i]>(n +1) div 2 then writeln('It is ',a[i])
else writeln('No such number!');
end.
从键盘输入任意一个整数n,求1×2×3×……×n
#include<stdio.h>void main()
{
int n,i,sum=1;
printf("input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum*=i;
printf("sum=%dn",sum);
}
用C++编程:任意一个整数n01,然后反序输出该整数
#include <iostream.h>
int f(int n)
{
if(n<10)
return n;
else
cout<<(n%10);
return f(n/10);
}
void main()
{
int a;
cin>>a;
cout<<f(a)<<endl;
}
任意给定一个大于1的整数n,设计一个算法求出n的所有因数。
n的因数,设为x,可得n=kx,k为常数,明显,k也为n的因数。所以求n的因数,可以求枚举1到n^0.5的所有数,判断这个数是否能被n除尽,那么n/x必然也为n的因数,且除了x^2=n的特殊情况,其他的x和n/x都不相等。为了看起来舒服,可以排序一下。
c语言代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp (const void *aa,const void *bb) 比较函数
{
return *(int *)aa-*(int *)bb;
}
int main()
{
int x,n,i,=0;
int num[10000];
scanf ("%d",&n);
for (x=1;x<=sqrt(n);++x)
{
if (n%x==0) {num[++]=x;if (x!=(n/x))num[++]=n/x;}
}
qsort(num,,sizeof(num[0]),cmp);
for (i=0;i<;++i)
printf ("%d ",num[i]);
printf ("n");
return 0;
}
这个算法并不高效果,不过算10亿以内的整数n,肯定能不到1秒出解的
伪代码如下
算法开始:
执行后面的内容直到n=1为止
(
令i从2取到[√n]
如果(i|n),则(输出i,令n=原来的n除以i,退出"令i从2取到[√n]"这个循环)
)
算法结束.
行了
---------------------
这样还深奥?真是让人没办法的lz啊。。
那看这个:
第一步:获得n的值
第二步:令i为1
第三步:把i的值加上1
第四步:如果i能整除n则继续执行第五步,否则跳到第六步
第五步:令n的值为[n除以i],并且显然i是n的因数,输出i,跳到第七步
第六步:如果i<[√n],则跳到第三步
第七步:如果n大于1,那么跳到第二步