C必背18个经典程序文件_第1页
C必背18个经典程序文件_第2页
C必背18个经典程序文件_第3页
C必背18个经典程序文件_第4页
C必背18个经典程序文件_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言入门经典必背18个程序

1、产输出9*9口诀。共9行9列,i控制行,j控制列。*/

main()

{int“result;

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

{for(j=l;j<10;j++)

(

result=i*j;

表示左对齐,占3位*/

)

每一行后换行*/

)

)

2、/*古典问题:有一对兔子,从出生后第3个月起每一个月都生一对兔子,小兔子长到

第三个月后每一个月又生一对兔子,假如兔

子都不死,问每一个月的兔子总数为多少?

兔子的规律为数列1,1,2,3,5,8,13,21.…*/

main()

(

long

inti;

fl=f2=l;

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

控制输出,每行四个*/

fl=fl+f2;/*前两个月加起来赋值给第三个月*/

f2=fl+f2;浮前两个月加起来赋值给第三个月*/

)

)

3、/*判断101-200之间有多少个素数,并输出所有素数与素数的个数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则说

明此数不是素数,反之是素数。*/

main()

intm,i,k,h=O,leap=l;

for(m=101;m<=200;m++)

{k=sqrt(m+l);

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

if(m%i==O)

{leap=O;break;}

if(leap)/*循环完毕后,leap依然为1,则m是素数*/

1

leap=I;

4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编

找出1000以的所有完数。*/

main()

(

staticintk[10];

intij,n,s;

for(j=2;j<1000y++)

(

n=-l;

s=j;

for(i=l;i<j:i++)

{if((j%i)==0)

{n++;

s=s-i;

k[n]=i;

)

}

if(s==0)

2/12

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

)

1

I

5、/*下面程序的功能是将•个4x4的数组进行逆时针旋转90度后输出,要求原始数组

的数据随机输入,新数组以4行4列的

方式输出,

请在空白处完善程序。*/

main()

{inta[4][4],b[4][4],ij;/*a存放原始数组数据,b存放旋转后数组数据*/

/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

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

for(j=0y<4y++)

b[3-j][i]=a[ilUl;

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

{fbr(j=Ou<4y++)

)

6、/*编程打印直角辉三角形*/main()

(inti.j.a[6][6]:

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

{a[i][i]=l;a[iJ[O]=l;}

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

for(j=l;j<=i-l;j++)

a[i]U]=a[i-l]U]+a[i-UU-l];

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

{forg=0;j<=iy++)

3/12

7、/*通过键盘输入3名学生4门课程的成绩,分别求每一个学生的平均成绩和每门课程

的平均成绩。

要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

其中最后一列和最后一行分别放每一个学生的平均成绩、每门课程的平均成绩与班级总平

均分。*/

#include<stdio.h>

#include<stdlib.h>

main()

{floata[4][5],suml,sum2;

inti,j;

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

for(j=0y<4y++)

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

{sum1=0;

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

suml+=a[i][j];

a[i][4]=suml/4;

}

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

{sum2=0;

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

sum2+=a[i][j];

a[3][j]=sum2/3;

}for(i=0;i<4;i++)

{for(j=0j<5j++)

1

4/12

8./*完善程序,实现将输入的字符串反序检出,如输入windows输出swodniw.

*/

#include<string.h>

main()

{charcl2(X)J,cl;

intij,k;

k=strlen(c);

for(i=0j=k-l;i<k/2;i++,j-)

{cl=c[i];c[i]=c[j];c[j]=cl;}

)

指针法:

voidinvert(char*s)

{inti,j,k;

chart;

k=strlen(s);

for(i=0,j=k-l;i<k/2;i++j-)

{t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;)

}

main()

{HLE*fp;

charstr[200],*p,i,j;

exit(O);

)

gets(str);

prinlf("%s”,str);

fprintf(fp.

“%s”,str);

invert(str);

printf("

%s”,str);

fprintf(fp.

“%s”,str);

fclose(fp);}

5/12

9、/*下面程序的功能是从字符数组s中删除存放在c中的字符v*/*include<stdi

o.h>

main()

{chars[80],c;

intj,k;

gets(s);

c=getchar();

if(s|j]!=c)

s[k++]=s[jj;

1

10、/*编写一个voidsort(int*x,intn)实现将x数组中的n个数据从大到小排序。n与数

组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_l.oul中*/#include<stdio.h>

voidsort(int*x,intn)

(

inti,j,k,t;

for(i=0;i<n-l;i++)

(

k=i;

fbr(j=i+l;j<n;j++)

if(xU]>x[k])k=j;

if(k!=i)

(

t=x[i];

x[i]=x[k];

x[k]=t;

)

)

}

voidmain()

{FILE*fp;

6/12

int*p,i,a[10J;

p=a;

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

p=a;sort(p,10);

for(;p<a+10;p++)

fclose(fp);

}

11、已知数组a中的元素已按由小到大顺序罗列,以下程序的功能是将输入的一个

数插入数组a中,插入后,数组a中的元素仍

然由小到大顺序罗列*/

main()

{inta[10]={0,12,17,20,25,28,30);;*a[0]为工作单元,从a[l]开始存放数据*/intx,i,j=6;

/*j为元素个数*/

a[0]=x;

i=j;/*从最后一个单元开始*/

while(a[i]>x)

{a[i+l]=a[i];i-;}/*将比x大的数往后挪移一个位置♦/

a[++i]=x;

j++;/*插入x后元素总个数增加*/

1

12、/*编写函数replace(char*s,charc1,charc2)实现将s所指向的字符串中所有字符cl

用c2替换,字符串、字符cl和c2

均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件pl0_2.

out中*/

#include<sldio.h>

7/12

replace(char*s,charcI,charc2)

{if(*s==cl)

*s=c2;

s++;

)

}

main()

{FILE*fp;

charstr[100],a,b;

exit(0);}

gets(str);

replace(str,a,b);

fclose(fp);

}

13、/*在一个字串si中查找一子串s2,若存在则返回子串在主串中的起始位置

,不存在则返回-1o*/

mainQ

}

intsearch(charsl[],chars2[])

{inti=0,j,len=strlen(s2);

while(sl[i]){

fbr(j=();j<len;j++)

if(sl[i+j]!=s2[j])break;

if(j>=len)returni;

8/12

elsei++;

1

return-1;

)

14、/*用指针变量输出结构体数沮元素。*/structstudent

(

intnum;

char*name;

charsex;

intage;

18}};

main()

{inti;

structstudent*ps;

/*用指针变量输出结构体数组元素。*/

for(ps=stu;ps<stu+5;ps++)

/*用数组下标法输出结构体数组元素学号和年龄。*/

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

)

15、/*建立一个有三个结点的简单链表:*/#defineNULLOslructstudent

(

intnum;

char*name;

intage;

structstudent*next;

};

voidmain()

(

structstudenta,b,c,*head,*p;

对结点成员进行赋值*/

9/12

head=&a;/*建立链表,a为头结点*/

a.next=&b;

b.next=&c;

c.next=NULL;

p=head;/*输出链表*/

do{

p=p->next;

}while(p!=NULL);

}

16、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读

彻底相同的字符串。Winclude<stdio.h>

#include<string.h>

#include<string.h>

main()

{chars[l(X)];

intij,n;

输入字符串:

gets(s);

n=strlen(s);

是回文串I

不是回文串

17、/*冒泡排序,从小到大,排序后结果输出到屏幕与文件myf2.out*/

#include<stdio.h>

voidfun(inta口,intn)

{intij,t;

for(i=0;i<=n-1;i++)for(j=0;j<i;j++)

if(a[j]>a[j+1J){t=a|j];a[jj=a[j+l];a[j+l]=t;}

)

main()

{inta[I()]={12,45,7,8,96,4,10,48,2,46},n=10,i;

FILE*f;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论