c語言丑數
1.
#include <stdio.h>
int main()
{
int n,m,count=0;
scanf("%d",&n);
m = n;
while(m%2==0) m/=2;
while(m%3==0) m/=3;
while(m%5==0) m/=5;
while(m%7==0) m/=7;
if(m!=1)
{
printf("no\n");
return 0;
}
for(m=1;m<=n/2;m++)
{
if(n%m==0)
count++;
}
printf("%d\n",count);
}
----
2.
#include <stdio.h>
#include <math.h>
int main()
{
int n,m;
double temp;
scanf("%d",&n);
temp = sqrt(double(n));
for(m=2;m<=temp;m++)
{
if(n%m==0)
{
printf("no\n");
return 0;
}
}
printf("yes\n");
}
-----
3.
#include <stdio.h>
int main()
{
char s[1000];
char word[1000];
char* p;
int count = 0;
gets(s);
p = s;
while(sscanf(p,"%s",word)==1)
{
count++;
while(*p==' ') p++;
while(*p!=' '&&*p!=0) p++;
}
printf("%d\n",count);
}
B. C語言編程:輸入兩個正整數m和n,求它們的最大公約數。
代碼及注釋如下:
#include <stdio.h>
int GCD(int a,int b)//定義函數,用來計算最大公約數
{
return b==0?a:GCD(b,a%b);
//此處使用了遞歸,如果b=0,返回a為最大公約數,否則,一直以b與a%b賦給函數,實現輾轉相除
}
int main()
{
int a, b ; //定義實參a, b
int answer ; //定義最後結果
scanf ( "%d%d" , &a, &b) ; //取a,b的值
answer = GCD (a, b) ; //把結果賦給answer
printf ( "%d與%d的最大公約數為%d " , a , b , answer ) ; //輸出結果
}
(2)c語言丑數擴展閱讀:
輾轉相除法求最大公約數的原理:
因為對任意同時整除a和b的數u,有a=su,b=tu,它也能整除r,因為r=a-bq=su-qtu=(s-qt)u。
反過來每一個整除b和r的整數v,有 b=sv , r=tv,它也能整除a,因為a=bq+r=svq+tv=(sq+t)v。
因此a和b的每一個公因子同時也是b和r的一個公因子,反之亦然。
這樣由於a和b的全體公因子集合與b和r的全體公因子集合相同,所以a和b的最大公因子必須等於b和r的最大公因子,這就證明了上邊的等式。即(a,b)=(b,r)。
因而,可以由此,得到兩個數的最大公約數。
C. c語言程序要求「輸入一個n數輸出第n個丑數。丑數是素因子只有2.3.5.7」如何操作
#include<iostream>
#include<climits>
usingnamespacestd;
//遍歷法找丑數
intIsUgly(intnum)//判斷是否是
{
while(num%2==0)
{
num/=2;
}
while(num%3==0)
{
num/=3;
}
while(num%5==0)
{
num/=5;
}
if(num==1)
return1;
else
return0;//notanuglynumber
}
voidGetUglyNumber(intindex)
{//找到第index個丑數
inti,time=0;
if(index<1)
{
cout<<"errorinput"<<endl;
exit(EXIT_FAILURE);
}
for(i=1;i<INT_MAX&&time<index;i++)
{
if(IsUgly(i))
{
time++;
//cout<<i<<"";
}
}
cout<<i-1<<endl;
}
intmain()
{
intNumber;
cout<<"Inputanumber:";
cin>>Number;
GetUglyNumber(Number);
return0;
}
Inputanumber:7
8
Pressanykeytocontinue
D. c語言程序,要求輸入一個n數輸出第n個丑數。丑數是素因子只有2.3.5.7。非常急,謝謝。
含因子2,3,5的正整數被稱作丑數 不含7 1不是丑數。
判斷方法
首先除2,直到不能整除為止,然後除5到不能整除為止,然後除3直到不能整除為止。最終判斷剩餘的數字是否為1,如果是1則為丑數,否則不是丑數。
你的題目是不是輸入n個整數,輸出所有丑數。
#include<stdio.h>
intiscn(intnum);
#definemaxSize10//輸入的最大數字個數可修改
intmain()
{
intcnum[maxSize],num,i,j=0;
printf("輸入最多%d個正整數(不足%d個,可以輸入負數結束輸入):
",maxSize,maxSize);
for(i=0;i<maxSize;i++)
{
scanf("%d",&num);
if(num<0)
break;
if(iscn(num))
cnum[j++]=num;
}
printf("其中所有丑數為:
");
for(i=0;i<j;i++)
printf("%d",cnum[i]);
return0;
}
intiscn(intnum)//檢查整數是否為丑數是返回1不是返回0
{
intchu;
chu=num;
if(num==1)
return0;
while(1)
{
if(chu%2==0)
chu=chu/2;
else
break;
}
while(1)
{
if(chu%5==0)
chu=chu/5;
else
break;
}
while(1)
{
if(chu%3==0)
chu=chu/3;
else
break;
}
if(chu==1)
return1;
else
return0;
}
E. 請教一簡單c語言問題:下面求1~1500丑數編程哪錯了😭
#include<stdio.h>
boolIsUgly(intnumber)
{
while(number%2==0)
number/=2;
while(number%3==0)
number/3=;
while(number%5==0)
number/5=;
return(number==1)?true:false;
}
intmain()
{
inti;
for(i=0;i<1500;i++)
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}
我按照你的截圖運行了一下,報錯沒有定義IsUgly;是因為VC6.0沒有bool的頭文件,所以你使用bool是不對的;
我根據你的程序改進了一下,我們使用bool是為了得到返回值1或者0;
那麼我可以嘗試將bool改成int,在最後判斷number是否是1的時候,返回1或者0;
下面是我改進的代碼,
#include<stdio.h>
intIsUgly(intnumber)//將bool改成int定義IsUgly函數
{
while(number%2==0)
number=number/2;
while(number%3==0)
number=number/3;
while(number%5==0)
number=number/5;
return(number==1)?1:0;//如果number==1,返回1,否則返回0
}
intmain()
{
inti;
for(i=2;i<=1500;i++)//0除以2是0,0除以2的余數還是0,所以如果i=0,就是死循環,
//因為1不是丑數,所以建議從2開始循環;1-1500應該是包含1500的
//並且1500也是丑數,所以是小於等於1500
{
if(IsUgly(i)==1)
printf("%d ",i);
}
return0;
}
F. java和C語言有什麼區別
java是面向對象的編程語言。c是面向過程的編程語言,而且JAVA是可以跨平台的。而C語言不能,但能夠直接操作硬體,並且生成機器碼的效率高。C語言有指針,想要學好C語言,指針就必須學好。JAVA是沒有指針的。在C語言中,是可以不初始化使用的,而在JAVA中,是必須初始化值的。總的來說,C語言是基礎語言,JAVA是面向對象的一門語言。
G. C/C++ 基於NTFS數據流隱藏文件的代碼(難題,勿灌水)
直接網路搜索黑客防線ntfs數據流,在我的印象中08年以前的期刊中有不下3篇是討論ntfs數據流隱藏的。記得有一篇是NTFS數據流的創建與檢測的文章,是C++寫的代碼,你從網上找一下源碼。
H. 編程實現計算正整數NUM的各個位上的數字之積。 例如: 如輸入:123,則輸出應該是:6
不知道你要用什麼語言實現。那就用C吧
#include <stdio.h>
int main()
{
int NUM = 21456; //你設定的正整數
int tmp1,tmp2,idx=0;
int result = 1;
tmp1 = NUM;
while(tmp1> 0)
{
tmp2 = tmp1%10;
result = result * tmp2;
tmp1 = (int)(tmp1 /10); //除去最未末位
}
printf("The NUM is %d, and the result is %d\n",NUM,result);
return 0;
}