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