您的当前位置:首页正文

c语言练习

来源:个人技术集锦


22~素数求和问题

时间限制:3000 ms | 内存限制:65535 KB

难度:2

描述

现在给你N个数(0输入

第一行给出整数M(0每组测试数据第一行给你N,代表该组测试数据的数量。

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

输出

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

#include

int main()

{

int i,j,k,m,a[1001];

int sum=0;

scanf(\"%d\

while(i--)

{

scanf(\"%d\

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

{

scanf(\"%d\

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=0;

}

return 0;

}

31~5个数求最值

时间限制:1000 ms | 内存限制:65535 KB

难度:1

描述

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

输入

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

输出

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

#include

int main()

{

int a[5];

int max,min,i;

scanf(\"%d\

max=min=a[0];

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

{scanf(\"%d\

if(maxmax=a[i];

if(min>a[i])

min=a[i];

}

printf(\"%d %d\\n\

return 0;

}

39~水仙花数

时间限制:1000 ms | 内存限制:65535 KB

难度:0

描述

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

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

输入

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

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

输出

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

否则输出No

#include

int main()

{

int a,b,c,n;

scanf(\"%d\

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\

}

return 0;

}

40~公约数和公倍数

时间限制:1000 ms | 内存限制:65535 KB

难度:1

描述

小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。

输入

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

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

#include

int main () {

int N;

scanf(\"%d\

while (N--) {

int n, m, p;

scanf(\"%d%d\

p= n * m;

while (m != n) {

if (m > n)

m = m - n;

else

n = n - m;

}

printf(\"%d %d\\n\

}

41~三个数从小到大排序

时间限制:3000 ms | 内存限制:65535 KB

难度:0

描述

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

输入

输入三个正整数

输出

给输入的三个正整数排序

#include

int main() {

int a[3],i,j,temp;

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

scanf(\"%d\

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 \

return 0;

}11~奇偶数分离

时间限制:3000 ms | 内存限制:65535 KB

难度:1

描述

有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。

输入

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

每组有一个整型偶数n。

输出

第一行输出所有的奇数

第二行输出所有的偶数

#include

int main()

{

int t;

scanf(\"%d\

while(t--)

{

int i,n;

scanf(\"%d\

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

if(i%2!=0) printf(\"%d \

printf(\"\\n\");

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

if(i%2==0) printf(\"%d \

}

return 0;

}

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

#include

void main()

{

int num[20],time=0,i;

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

scanf(\"%d\

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\

}

#include

#include

int isprime (int n)

{

int i;

int m=sqrt(n);

验证哥德巴赫猜想

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

if(n%i==0)

break;

return(i==m+1);

}

void main()

{

int i,even;

do

{

scanf(\"%d\

}

while(even<4||even%2!=0);

for(i=2;i{

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

printf(\"%d=%d+%d\\n\

}

}

在数组中找key元素

普通法

#include

int f(int a[],int n,int key)

{

int i;

for(i=0;iif(a[i]==key)

return i;

return -1;

}

int main()

{

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

key=8;

scanf(\"%d\\n\

for(i=0;iscanf(\"%d\

for(i=0;iif(a[i]==key)

s=i;

if(s!=-1)

printf(\"%d\\n\

else

printf(\"%2d\\n\

return 0;

}

#include

int f(int a[],int n,int key)

{

int i;

for(i=0;i函数法

if(a[i]==key)

return i;

return -1;

}

int main()

{

int n,a[100],key,i;

key=8;

scanf(\"%d\\n\

for(i=0;iscanf(\"%d\

printf(\"%d\\n\

return 0;

}

递归法

#include

int f(int a[], int n, int key)

{

if(n < 0)

return -1;

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

return n - 1;

return f(a, n-1, key);

}

int main()

{

int n,a[100],key,i;

key=8;

scanf(\"%d\\n\

for(i=0;iscanf(\"%d\

printf(\"%d\\n\

return 0;

}

素数距离问题

#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\

while(n--)

{

scanf(\"%d\

if(a==1)

printf(\"2 1\\n\");

else

{

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

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

#include

if(d1<=d2)

else

}

}

return 0;

}

代换

printf(\"%d %d\\n\

printf(\"%d %d\\n\

#define N 3.14159

#define mylove(x) x*x

void main()

{

double r=3,s;

s=N*mylove(r);

printf(\"%lf\\n\

}

#include

#define A(x) ((x)>0?(x):(-x))

double my(double x)

{

参数化宏与函数

return x>0?x:-x;

}

void main ()

{

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

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

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

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

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

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

}

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

#include

#define min(x,y) (x>y?y:x)

void main()

{

int x,y;

scanf(\"%d %d\

printf(\"%d\\n\

}

#include

#define UPPER

void main()

{

char str[100];

定义宏,小变大,大不变

int i;

gets(str);

#ifdef UPPER

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

void main()

{

char str[100];

int i,flag;

gets(str);

do

{

printf(\"请输入一个整数:1大写,2小写!\\n\");

scanf(\"%d\

} 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);

}

因篇幅问题不能全部显示,请点此查看更多更全内容