c语言练习.docx

上传人:b****6 文档编号:7134783 上传时间:2023-01-21 格式:DOCX 页数:14 大小:17.20KB
下载 相关 举报
c语言练习.docx_第1页
第1页 / 共14页
c语言练习.docx_第2页
第2页 / 共14页
c语言练习.docx_第3页
第3页 / 共14页
c语言练习.docx_第4页
第4页 / 共14页
c语言练习.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c语言练习.docx

《c语言练习.docx》由会员分享,可在线阅读,更多相关《c语言练习.docx(14页珍藏版)》请在冰豆网上搜索。

c语言练习.docx

c语言练习

22~素数求和问题

时间限制:

3000 ms | 内存限制:

65535 KB

难度:

2

描述

现在给你N个数(0

输入

第一行给出整数M(0

每组测试数据第一行给你N,代表该组测试数据的数量。

接下来的N个数为要测试的数据,每个数小于1000

输出

每组测试数据结果占一行,输出给出的测试数据的所有素数和

#include

intmain()

{

inti,j,k,m,a[1001];

intsum=0;

scanf("%d",&i);

while(i--)

{

scanf("%d",&j);

for(k=1;k<=j;k++)

{

scanf("%d",&a[k]);

for(m=2;m<=a[k]/2;m++)

{

if(a[k]%m==0)

break;

}

if(a[k]!

=1&&m>a[k]/2)

sum=sum+a[k];

}

printf("%d\n",sum);

sum=0;

}

return0;

}

31~5个数求最值

时间限制:

1000 ms | 内存限制:

65535 KB

难度:

1

描述

设计一个从5个整数中取最小数和最大数的程序

输入

输入只有一组测试数据,为五个不大于1万的正整数

输出

输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。

#include

intmain()

{

inta[5];

intmax,min,i;

scanf("%d",&a[0]);

max=min=a[0];

for(i=1;i<=4;i++)

{scanf("%d",&a[i]);

if(max

max=a[i];

if(min>a[i])

min=a[i];

}

printf("%d%d\n",min,max);

return0;

}

39~水仙花数

时间限制:

1000 ms | 内存限制:

65535 KB

难度:

0

描述

请判断一个数是不是水仙花数。

其中水仙花数定义各个位数立方和等于它本身的三位数。

输入

有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)

输入0表示程序输入结束。

输出

如果n是水仙花数就输出Yes

否则输出No

 

#include

intmain()

{

inta,b,c,n;

scanf("%d",&n);

while(n)

{

a=n/100;

b=(n-100*a)/10;

c=n-a*100-b*10;

if(a*a*a+b*b*b+c*c*c==n)

printf("Yes\n");

else

printf("No\n");

scanf("%d",&n);

}

return0;

}

40~公约数和公倍数

时间限制:

1000 ms | 内存限制:

65535 KB

难度:

1

描述

小明被一个问题给难住了,现在需要你帮帮忙。

问题是:

给出两个正整数,求出它们的最大公约数和最小公倍数。

输入

第一行输入一个整数n(0

随后的n行输入两个整数i,j(0

输出

输出每组测试数据的最大公约数和最小公倍数

#include

intmain(){

intN;

scanf("%d",&N);

while(N--){

intn,m,p;

scanf("%d%d",&n,&m);

p=n*m;

while(m!

=n){

if(m>n)

m=m-n;

else

n=n-m;

}

printf("%d%d\n",n,p/n);

}

41~三个数从小到大排序

时间限制:

3000 ms | 内存限制:

65535 KB

难度:

0

描述

现在要写一个程序,实现给三个数排序的功能

输入

输入三个正整数

输出

给输入的三个正整数排序

#include

intmain(){

inta[3],i,j,temp;

for(i=0;i<3;i++)

scanf("%d",&a[i]);

for(i=0;i<3;i++)

for(j=i;j<3;j++)

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

for(i=0;i<3;i++)

printf("%d",a[i]);

return0;

}11~奇偶数分离

时间限制:

3000 ms | 内存限制:

65535 KB

难度:

1

描述

有一个整型偶数n(2<=n<=10000),你要做的是:

先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。

输入

第一行有一个整数i(2<=i<30)表示有i组测试数据;

每组有一个整型偶数n。

输出

第一行输出所有的奇数

第二行输出所有的偶数

#include

intmain()

{

intt;

scanf("%d",&t);

while(t--)

{

inti,n;

scanf("%d",&n);

for(i=1;i<=n;i++)

if(i%2!

=0)printf("%d",i);

printf("\n");

for(i=1;i<=n;i++)

if(i%2==0)printf("%d",i);

}

return0;

}

 

输入20个1~20的数,在1~5中的有几个

#include

voidmain()

{

intnum[20],time=0,i;

for(i=0;i<20;i++)

scanf("%d",&num[i]);

for(i=0;i<20;i++)

{

if(num[i]>=1&&num[i]<=20)

{

if(num[i]<=5&&num[i]>=1)

time+=1;

}

}

printf("%d\n",time);

}

验证哥德巴赫猜想

#include

#include

intisprime(intn)

{

inti;

intm=sqrt(n);

for(i=2;i<=m;i++)

if(n%i==0)

break;

return(i==m+1);

}

voidmain()

{

inti,even;

do

{

scanf("%d",&even);

}

while(even<4||even%2!

=0);

for(i=2;i

{

if(isprime(i)==1&&isprime(even-i)==1)

printf("%d=%d+%d\n",even,i,even-i);

}

}

在数组中找key元素

普通法

#include

intf(inta[],intn,intkey)

{

inti;

for(i=0;i

if(a[i]==key)

returni;

return-1;

}

intmain()

{

intn,a[100],key,i,s=-1;

key=8;

scanf("%d\n",&n);

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

if(a[i]==key)

s=i;

if(s!

=-1)

printf("%d\n",s);

else

printf("%2d\n",-1);

return0;

}

函数法

#include

intf(inta[],intn,intkey)

{

inti;

for(i=0;i

if(a[i]==key)

returni;

return-1;

}

intmain()

{

intn,a[100],key,i;

key=8;

scanf("%d\n",&n);

for(i=0;i

scanf("%d",&a[i]);

printf("%d\n",f(a,n,key));

return0;

}

递归法

#include

intf(inta[],intn,intkey)

{

if(n<0)

return-1;

if(a[n-1]==key)

returnn-1;

returnf(a,n-1,key);

}

intmain()

{

intn,a[100],key,i;

key=8;

scanf("%d\n",&n);

for(i=0;i

scanf("%d",&a[i]);

printf("%d\n",f(a,n,key));

return0;

}

素数距离问题

#include

#include

#include

int f1(int m)

{

int i;

int k=(int)(sqrt(m));

for(i=2;i<=k;i++)

{

if(m%i==0)

{

m=m-1;

return f1(m);

}

}

if(i>k)

return m;

 }

 int f2(int m)

{

int i;

int k=(int)(sqrt(m));

for(i=2;i<=k;i++)

{

if(m%i==0)

{

m=m+1;

return f2(m);

}

}

if(i>k)

return m;

 }

 int main()

 {

 int n,a;

 scanf("%d",&n);

 while(n--)

 {

 scanf("%d",&a);

 if(a==1)

 printf("2 1\n");

 else

 {

 int d1=abs(a-f1(a));

 int d2=abs(a-f2(a));

 if(d1<=d2)

 printf("%d %d\n",f1(a),d1);

 else

 printf("%d %d\n",f2(a),d2);

 }

 }

 return 0;

   }

代换

#include

#defineN3.14159

#definemylove(x)x*x

voidmain()

{

doubler=3,s;

s=N*mylove(r);

printf("%lf\n",s);

}

参数化宏与函数

#include

#defineA(x)((x)>0?

(x):

(-x))

doublemy(doublex)

{

returnx>0?

x:

-x;

}

voidmain()

{

printf("A(-3)=%d\n",A((-3)));

printf("my(-3)=%lf\n",my(-3));

printf("A(-3-1)=%d\n",A((-3-1)));

printf("my(-3-1)=%lf\n",my(-3-1));

printf("A(-3.5)=%.1f\n",A((-3.5)));

printf("my(-3.5)=%lf\n",my(-3.5));

}

定义一个求两数较小者的宏

#include

#definemin(x,y)(x>y?

y:

x)

voidmain()

{

intx,y;

scanf("%d%d",&x,&y);

printf("%d\n",min(x,y));

}

定义宏,小变大,大不变

#include

#defineUPPER

voidmain()

{

charstr[100];

inti;

gets(str);

#ifdefUPPER

for(i=0;str[i]!

='\0';++i)

if(str[i]>='a'&&str[i]<='z')

str[i]-='a'-'A';

#else

for(i=0;str[i]!

='\0';++i)

if(str[i]>='A'&&str[i]<='Z')

str[i]+='a'-'A';

#endif

puts(str);

}

输入字符串和一个整数,整数为1,变大,为2,变小

#include

voidmain()

{

charstr[100];

inti,flag;

gets(str);

do

{

printf("请输入一个整数:

1大写,2小写!

\n");

scanf("%d",&flag);

}while(flag!

=1&&flag!

=2);

if(flag==1)

{

for(i=0;str[i]!

='\0';++i)

if(str[i]>='a'&&str[i]<='z')

str[i]-='a'-'A';

}

else

{

for(i=0;str[i]!

='\0';++i)

if(str[i]>='A'&&str[i]<='Z')

str[i]+='a'-'A';

}

puts(str);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1