首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

c语言经典案例

2022-06-06 来源:华拓网
1、用筛选法求100之内的素数。

#include

void main()

{

int num[100],i,j;

for (i=0;i<100;i++) num[i]=1;

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

for (j=2;i*j<=100;j++) num[i*j-1]=0;

printf(\"0至100内素数有:\\n\");

for (i=j=0;i<100;i++)

if (num[i]==1) {printf(\"%-4d\

}

2、用选择法对10个整数排序。

#include

void main()

{

int num[10],n,i,j,t,k;

printf(\"请输入十个整数:\");

for (n=0;n<10;n++) scanf(\"%d\

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

{

k=i;

for (j=i+1;j<10;j++)

if (num[k]if (k!=i) {t=num[i];num[i]=num[k];num[k]=t;}

}

printf(\"从大到小排序为:\");

for (n=0;n<10;n++) printf(\"%d \

}

3、求一个3*3的整型二维数组对角线元素之和。

#include

void main()

{

int num[3][3],i,j;

printf(\"输入二维数组:\\n\");

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

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

scanf(\"%d\j]);

printf(\"两对角线和分别为和%d\\n\

%d

}

5、将一个数组中的值按逆序重新存放。

#include

#include

#include

void main()

{

int num[100],n,i,temp;

srand(time(0));

n=rand()%100+1;

printf(\"生成数组长度为%d\\n生成的数组:\\n\

for (i=0;iprintf(\"\\n数组逆序存放后排列为:\\n\");

for (i=0;ifor (i=0;iprintf(\"\\n\");

}

6、输出以下的杨辉三角形(要求输出10行)。

1

1 1

1 2 1

1 3 3 1

︙ ︙ ︙ ︙

#include

void main()

{

int num[10][10],i,j;

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

{

for (j=0;j<10;j++)

{

if (j-1<0||j==i) num[i][j]=1;

else num[i][j]=num[i-1][j-1]+num[i-1][j];

printf(\"%-4d\j]);

if (j==i) break;

}

printf(\"\\n\");

}

}

7、输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为8 1 6

3 5 7

4 9 2

#include

void main()

{

int n,i,j,k;

printf(\"输入奇数阶魔方阵的阶数:\");

scanf(\"%d\

k=(5*n-1)/2;

for(i=0;i{

for (j=0;jprintf(\"%-4d\

printf(\"\\n\");

}

}

}

9、有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。

#include

#include

#include

void main()

{

int num[15],n,t=0,left,right,middle,key;

srand(time(0));

printf(\"数组为\\n\");

for (n=14;n>=0;n--) t=num[n]=rand()%10+(t+1);

for (n=0;n<15;n++) printf(\"^%-4d\

printf(\"\\n请输入要查找的数:\");

scanf(\"%d\

left=0;

right=14;

while (left<=right)

{

middle=(left+right)/2;

if (key==num[middle]) {t=-1;break;}

if (keyelse right=middle-1;

}

if (t==-1) printf(\"该数是数组中第%d个元素的值\\n\

else printf(\"无此数\\n\");

}

11、输出以下图案:

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

#include

void main()

{

char asterisk[]=\"* * * * *\

int a,b;

for (a=0;a<5;a++)

{

for (b=0;bprintf(\"%s\\n\

}

}

12、有一行电文,已按下面规律译成密码:

第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。

#include

#include

void main()

{

char ch,code[100];

int n=0;

printf(\"请输入密码:\");

while((ch=getchar())!='\\n')

{

if (n==0) printf(\"密码\\n\");

printf(\"%c\

if (isupper(ch)) code[n++]=(26-ch+65+64);

if (islower(ch)) code[n++]=(26-ch+97+96);

if (!isalpha(ch)) code[n++]=ch;

}

code[n]='\\0';

printf(\"\\n原文\\n%s\\n\

}

13、编一个程序,将两个字符串连接超来,不要用strcat函数。

#include

#include

void main()

{

char a[2][100];

puts(\"输入字符串:\");

gets(a[0]);

gets(a[1]);

int i=0;

while(a[0][i]!='\\0') i++;

strcpy(&a[0][i],a[1]);

puts(\"连接后字符串:\");

puts(a[0]);

}

14、编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1#include

void main()

{

char a[2][100];

puts(\"输入字符串:\");

gets(a[0]);

gets(a[1]);

for (int i=0,n=0;a[0][i]!='\\0'&&a[1][i]!='\\0';i++)

if (a[0][i]!=a[1][i]) {n=a[0][i]-a[1][i];break;}

printf(\"%d\\n\

}

15、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,‘\\0’后面的字符不复制。

#include

#include

void main()

{

char a[2][100];

puts(\"输入字符串:\");

gets(a[0]);

gets(a[1]);

a[0][0]='\\0';

strcat(a[0],a[1]);

puts(\"复制后字符串:\");

puts(a[0]);

}

从1累加到100

#include

main()

{

int i,sum=0;

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

sum=sum+i;

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

}

求1!+2!+…+n!:

#include

Void main()

{ double fac, sum=0;

Int i, n;

fac=1;

i=1;

scanf(“%d”,&n);

while(i<=n)

{fac=fac*I;

i++;

sum=sum+fac;

}

printf(“%lf”,sum);

}

求1-3+5-7+。。。+101的值

#include

#include

Void main()

{int a,I,j,sum=0;

i=1;

j=2;

while(1<=101)

{sum=sum+i*power(-1,j);

i=i+2;

j++;}

printf(“%d\\n”,sum);

求1*2*3*…*100

#include

main()

{int i ,sum;

i=1, sum=1;

while(i<101)

i++;

sum=sum*i;

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

}

水仙花数:

#include

main(){

int a,b,c,num;

for(a=1;a<10;a++){

for(b=0;b<10;b++){

for(c=0;c<10;c++){

if(a*100+b*10+c==(num=a*a*a+b*b*b+c*c*c))

printf(\"%d\

从1到1000的素数:

#include \"stdio.h\"

void main()

{int f(int n);

int i,k=0;

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

{if(!f(i))

{printf(\"%5d\

k++;

if(k%15==0)

printf(\"\\n\");

}

}

getch();

}

int f(int n)

{

int j;

for(j=2;j<=n-1;j++)

if(n%j==0)

break;

if(j>=n)

return 0;

else

return 1;

}

最大公约数和最小公倍数:

#include

Void main()

{ int m,n,I,j;

Scanf(“m=%d,n=%d”,&m,&n);

For(i=m;i>=1;i--)

If(m%i==0&&n%i==0)

Break;

for(j=m;j<=m*n;j++)

if(j%m==0&&j%n==0)

break;

printf(“最大公约数%d\\n,最小公倍数%d\\n”,i,j);

}

一球从100米得高度落下,每次反弹至原高度的一半;再落下,求它第十次落地时,公经过多少米?第十次反弹多高?

#include

main()

{int n;

Float s=100,h=s/2;

For(n=2;n<=10;n++)

{

S=s+2*h;

H=h/2;

}

Printf(“s=%f,h=%f”,s,h)

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