c语言中的各种数.docx
《c语言中的各种数.docx》由会员分享,可在线阅读,更多相关《c语言中的各种数.docx(26页珍藏版)》请在冰豆网上搜索。
c语言中的各种数
各种数
1完全平方数:
16=4*4
#include"math.h"
#include"stdio.h"
main()
{
longinti,x,y,z;
for(i=1;i<100000;i++)
{
x=sqrt(i+100);/*x为加上100后开方后的结果,且x,y已定义为整形数据*/
y=sqrt(i+268);/*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf("\n%ld\n",i);
}
getch();这里我不懂是什么东西,不要理会它
}
#include"math.h"
#include"stdio.h"
voidmain()
{
longinti,x,count=0;
printf("完全平方数:
");
for(i=1;i<10000;i++)
{
for(x=1;x<=sqrt(i);x++)
{
if(x*x==i)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
{
printf("\t%ld\t",i);
count++;
}
}
}
printf("\n完全平方数个数:
%ld\n",count);
}这里是正确的
相应的程序:
2
素数:
质数(primenumber)又称素数,有无限个。
一个大于1的自然数,如果除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数
#include"stdio.h"
#include"math.h"
#defineN101
main()
{
inti,j,line,a[N];
for(i=2;ifor(i=2;ifor(j=i+1;j{
if(a[i]!
=0&&a[j]!
=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for(i=2,line=0;i{
if(a[i]!
=0)
{
printf("%5d",a[i]);
line++;
}
if(line==10)
{
printf("\n");
line=0;
}
}
getch();
}
法二:
#include"stdio.h"
#include
voidmain()
{
intn,i,j,flag,count=0;
printf("素数有:
\t");
for(n=3;n<=100;n++)
{
flag=0;/*flag=0不能写在初定义处,要使flag完成一次大循环后重新变为0,否则之后的都会错*/
for(j=2;j<=sqrt(n);j++)
{
if(n%j==0)
{
flag=1;break;
}
}
if(flag==0)
{
printf("%d\t",n);
count++;
if(count%8==0)
printf("\n");
}
}
printf("素数的个数:
%d\n",count);
}
求素数和
#include
#include
intprime(intn)
{
intyes,i;
yes=1;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
{
yes=0;
break;
}
returnyes;
}
main()
{intsum=0,i;
for(i=2;i<=500;i++)
if(prime(i))
sum+=i;
printf("%d\n",sum);
}
21536
3
水仙花数:
153=1*1*1+5*5*5+3*3*3
程序:
#include"stdio.h"
#include"conio.h"
main()
{
inti,j,k,n;
printf("'waterflower'numberis:
");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
}
getch();
}
'waterflower'numberis:
153370371407Pressanykeytocontinue
4:
打印出一个数的因数例如90=2*3*3*5
程序:
#include"stdio.h"
voidmain()
{
intn,i;
printf("\npleaseinputanumber:
\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
while(n!
=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
printf("%d",n);
这是一道经典而精炼的题!
}
pleaseinputanumber:
90
90=2*3*3*5Pressanykeytocontinue
5
完数:
一个数恰好等于其因数之和比如:
6=1+2+3
#include"stdio.h"
#include"conio.h"
main()
{
staticintk[10];
inti,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i {
if((j%i)==0)
{
n++;
s=s-i;*判断是否是完数*/
k[n]=i;用数组存储因数
}
}
if(s==0)
{
printf("%disawanshu",j);
for(i=0;i printf("%d,",k[i]);
printf("%d\n",k[n]);
}
}
getch();
}
6isawanshu1,2,3
28isawanshu1,2,4,7,14
496isawanshu1,2,4,8,16,31,62,124,248
6
题目:
一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
程序:
#include"stdio.h"
#include
voidmain()
{
inti,k,a[10];
longn,m;
printf("pleaseinputanumber");
scanf("%d",&n);
m=n;
k=0;
do
{
a[k]=m%10;
k++;/*之前是a[k++]=m%10换成这样比较看得明白*/
m=m/10;
}while(m!
=0);
k--;
for(i=0;i{
if(a[i]!
=a[k])
break;
}
if(ik*/
printf("%disnotahuiwnenshu",n);
else
printf("%disahuiwenshu",n);
}
最大公约数:
(用递归调用求最大公约数)
#include
intf(intm,intn)
{
intg;
if(n==0)
g=m;
else
g=f(n,m%n);
returng;
}
voidmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d\n",f(a,b));
}
1524
3
最小公倍数:
#include
intmaxgy(inta,intb);
intf(inta,intb);
intmaxgy(inta,intb)
{
intk;
while((k=a%b)!
=0)
{
a=b;
b=k;
}
returnb;
}
intf(inta,intb)
{
intm,d;
m=maxgy(a,b);/*调用最大公约数函数*/
d=a*b/m;
returnd;
}
voidmain()
{
inta,b,c;
scanf("%d%d",&a,&b);
c=f(a,b);
printf("最小公倍数是%d\n",c);
}
1524
最小公倍数是120
Fibonacci数列;输出[100,10000]中最小的和最大的值
#include
voidmain()
{
longF1=1,F2=1,F,n;
doublek;
while(F2<=100)
{
F=F1+F2;
F1=F2;
F2=F;
if(F>=100)
printf("%d\n",F);
}
F1=1,F2=1;
while(F2<=10000)
{
F=F1+F2;
F1=F2;
F2=F;
}
printf("%d\n",F1);
}
144
6765
Pressanykeytocontinue
字符串运算:
字符串处理函数:
1
复制函数:
#include
#include
voidmain()
{
charstr1[10]={"program"},str2[6]={"C++"};
puts(str1);
puts(str2);
strcpy(str1,str2);/*字符串str2中的’\0’也被复制*/
printf("str1:
");
puts(str1);
printf("str2:
");
puts(str2);
}
program
C++
str1:
C++
str2:
C++
2
连接字符串:
#include
#include
voidmain()
{
charstr1[23]={"youareahomosexual"},str2[30]={"andyouarebeantiful!
"};
printf("oldstr1:
");
puts(str1);
strcat(str1,str2);
printf("newstr1:
");
puts(str1);
}
oldstr1:
youareahomosexual
newstr1:
youareahomosexualandyouarebeantiful!
Pressanykeytocontinue
3字符串长度函数
#include
#include
voidmain()
{
charstr1[80]={"ufysy4847/67suhuy"};
printf("str1has%dcharacters\n",strlen(str1));
}
str1has17characters
Pressanykeytocontinue
4从键盘输入两个字符串,若不相等,将短的字符串连接到长的后面并输出;(比较字符串函数,长度比较函数,连接函数)
#include
#include
voidmain()
{
charstr1[80],str2[80];
gets(str1);
gets(str2);
if(strcmp(str1,str2)!
=0)
if(strlen(str1)>strlen(str2))
{
strcat(str1,str2);
puts(str1);
}
else
{
strcat(str2,str1);
puts(str2);
}
}
hjsdiuw314598
bgy2161768
hjsdiuw314598bgy2161768
Pressanykeytocontinue
还有在#include中的intatoi(char*str)将字符串函数转变为整数,通过函数返回;
Longatoi(char*str)
Doubleatoi(char*str)
不用字符串函数求解相关问题
1
统计字符串长度:
#include"stdio.h"
voidmain()
{
intlen;
char*str[20];
printf("pleaseinputastring:
\n");
scanf("%s",str);
len=length(str);
printf("thestringhas%dcharacters.",len);
getch();
}
length(p)
char*p;
{
intn;
n=0;
while(*p!
='\0')
{
n++;
p++;
}
returnn;
}
pleaseinputastring:
jaislbgbad41887818
thestringhas18characters.
2从键盘上输入一个字符串与一个个指定字符,将字符串中出现的指定字符删除。
#include"stdio.h"
#include"string.h"
intfun(char*s,charch)
{
inti,j;
for(i=0,j=0;s[i];i++)
if(s[i]!
=ch)
s[j++]=s[i];
s[j]=0;
returns;
}
voidmain()
{
chars[80],*pstr=s,chdel;
printf("请输入字符串:
");
gets(pstr);
printf("输入你想要删除的字符:
");
scanf("%c",&chdel);
fun(pstr,chdel);
printf("之后变为:
");
puts(pstr);
getchar();
}
请输入字符串:
sdiguya2511ahgs
输入你想要删除的字符:
s
之后变为:
diguya2511ahg
Pressanykeytocontinue
3不用字符串函数比较大小
#include"stdio.h"
#include"string.h"
intcompstr(char,char);/*若写成intcompstr(str1[n],str[n])str1和str2未定义类型,还有居然里面还写个n,无语至极*/
voidmain()
{
charstr1[80],str2[80],n,flag;
printf("请输入字符串str1和str2:
\n");
gets(str1);
gets(str2);
for(n=0;str1[n]!
='\0'&&str2[n]!
='\0'&&flag==0;n++)
flag=compstr(str1[n],str2[n]);
printf("字符串大小比较\t");
if(flag==0)
printf("str1=str2\n");
if(flag>0)
printf("str1>str2\n");
else
printf("str1}
intcompstr(charc1,charc2)
{
intt;
t=c1-c2;
returnt;
}
请输入字符串str1和str2:
jhfhlugfb
fuwwivyt
字符串大小比较str1Pressanykeytocontinue
3---------2
#include
#include
#defineN5/*字符串个数(题目要求10个,这里以5个为例,可以任意更改)*/
/*交换字符串内容*/
voidchange(chara[],charb[])
{
chart[81];
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
//对多个(ln个,即ln行)字符串从小到大排序
voidstr_sort(charstr[][81],intln)
{
inti,j;
for(i=0;ifor(j=0;jif(strcmp(*(str+j),*(str+j+1))>0)change(*(str+j),*(str+j+1));
}
voidmain()
{
inti;
chars[N][81];
printf("请输入%d个字符串:
\n",N);
for(i=0;igets(*(s+i));//输入字符串
str_sort(s,N);//调用函数str_sort()排序
printf("从小到大排序:
\n");
for(i=0;i{
printf("(%d)",i+1);//显示顺序号
puts(*(s+i));//排序后输出
}
}
请输入5个字符串:
jhsddgakj
gdsukf
ysgsg
sygwghodf
dygsdiug
从小到大排序:
(1)dygsdiug
(2)gdsukf
(3)jhsddgakj
(4)sygwghodf
(5)ysgsg
Pressanykeytocontinue
4
#include"stdio.h"
intfun(char*p)
{
intflag=1;
while(*p!
='\0')
{
if(*p=='')
flag=1;
if(*p>='a'&&*p<='z'&&flag==1)
{*p-=32;flag=0;}
p++;
}
return*p;
}
voidmain()
{
inti=0;
charch,str[80];
printf("Inputstringendby.:
\n");
while((ch=getchar())!
='.')
str[i++]=ch;
str[i++]='.';
str[i]='\0';
fun(str);
puts(str);
getchar();
}
Inputstringendby.:
javyhavyad.
JavyHavYad.
Pressanykeytocontinue
(修改版)#include"stdio.h"
intfun(char*p)
{
intflag=1;
while(*p!
='\0')
{
if(*p=='')
flag=1;
if(*p>='a'&&*p<='z'&&flag==1)/*用flag很好,*/
{
*p-=32;flag=0;
}
p++;
}
return*p;
}
voidmain()
{
inti=0;
charch,str[80];
gets(str);
fun(str);
puts(str);
getchar();
}
指针:
/*1将最大一个数与第一个数交换,将最小的一个数与最后的一个数交换*/
#include
voidmain()
{
inta[8],i,*p,max,min,t;
max=min=0;
p=a;
printf("Input8numbers:
");
for(i=0;i<8;i++)scanf("%d",&a[i]);
for(i=1;i<8;i++)
if(*(p+i)<*(p+min))min=i;
if(min!
=7)
{t=*(p+7);
*(p+7)=*(p+min);
*(p+min)=t;
}
for(i=1;i<8;i++)
if(*(p+i)>*(p+max))max=i;
if(max!
=0)
{t=*(p+0);
*(p+0)=*(p+max);
*(p+max)=t;
}
for(p=a;p}Input8numbers:
78952125689
89895712562
结构体:
}
题目:
回答结果(结构体变量传递)
1.程序分析:
2.程序源代码:
#include"stdio.h"
structstudent
{
intx;
charc;
}a;
main()
{
a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);
getch();
}
f(structstudentb)
{
b.x=20;
b.c='y';
}
3,a
#include
structstdud_tyde
{
charname[20];
longnum;
intage;