必须会的C语言经典程序.doc_第1页
必须会的C语言经典程序.doc_第2页
必须会的C语言经典程序.doc_第3页
必须会的C语言经典程序.doc_第4页
必须会的C语言经典程序.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、输出9*9口诀。共9行9列,i控制行,j控制列。#include #include int main()int i,j,result; for (i=1;i10;i+) for(j=1;j10;j+) result=i*j; printf(%d*%d=%-3d,i,j,result);/ -3d表示左对齐,占3位 printf(n);/ 每一行后换行getch();return 0;2、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21.#include #include int main() long f1,f2; int i; f1=f2=1; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n);/ 控制输出,每行四个 f1=f1+f2; / 前两个月加起来赋值给第三个月 f2=f1+f2; / 前两个月加起来赋值给第三个月 getch(); return 0;3、判断101-200之间有多少个素数,并输出所有素数及素数的个数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*#include #include #include#include int main() int m,i,k,h=0,leap=1; printf(n); for(m=101;m=200;m+) k=(int)sqrt(m+1); for(i=2;i=k;i+) if(m%i=0) leap=0; break; if(leap) / 内循环结束后,leap依然为1,则m是素数 printf(%-4d,m); h+; if(h%10=0) printf(n); leap=1; printf(nThe total is %d,h); getch(); return 0;4、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123。编程找出1000以内的所有完数。#include #include int main() static int k10; int i,j,n,s; for(j=2;j1000;j+) n=-1; s=j; for(i=1;ij;i+) if(j%i)=0) n+; s=s-i; kn=i; if(s=0) printf(%d is a wanshu: ,j); for(i=0;in;i+) printf(%d,ki); printf(%dn,kn); getch(); return 0;5、将一个44的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出。(改为MMd)#include #include#includeint main() int a44; / a存放原始数组数据 int b44; / b存放旋转后数组数据 int i,j; for(i=0;i4;i+) for(j=0;j4;j+) aij=rand(); for(i=0;i4;i+) for(j=0;j4;j+) printf(%dt,aij); printf(n); for(i=0;i4;i+) for(j=0;j4;j+) b3-ji=aij; printf(n); printf(n); printf(n); for(i=0;i4;i+) for(j=0;j4;j+) printf(%dt,bij); printf(n); getch(); return 0;通用方法#include #include#include#define M 8int main() int aMM; / a存放原始数组数据 int bMM; / b存放旋转后数组数据 int i,j; for(i=0;iM;i+) for(j=0;jM;j+) aij=rand(); for(i=0;iM;i+) for(j=0;jM;j+) printf(%dt,aij); printf(n); for(i=0;iM;i+) for(j=0;jM;j+) bM-1-ji=aij; printf(n); printf(n); printf(n); for(i=0;iM;i+) for(j=0;jM;j+) printf(%dt,bij); printf(n); getch(); return 0;6、编程打印直角杨辉三角形#include#include#include int main() int i,j,a88; for(i=0;i8;i+) for(j=0;j8;j+) aij=1; for(i=2;i8;i+) for(j=1;ji;j+) aij=ai-1j+ai-1j-1; for(i=0;i8;i+) for(j=0;ji+1;j+) printf(%dt,aij); printf(n); getch(); return 0;7、通过键盘输入M名学生N门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。要求所有成绩均放入一个I行J列的数组中,使用随机函数生成所有学生的成绩(60成绩100)其中最后二列分别放每个学生的总成绩和平均成绩,最后一行每门课程的平均成绩,求所有学生的平均分。(可把计算出的数据存入文件)。#include #include #include#define M 10#define N 6int main() float scM+1N+2=0,scsum; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) scij=60+rand()%41; for(i=0;iM;i+) for(j=0;jN;j+) printf(%.0ft,scij); printf(n); for(i=0;iM;i+) scsum=0; for(j=0;jN;j+) scsum+=scij; scij=scsum; scij+1=scsum/N; for(j=0;jN;j+) scsum=0; for(i=0;iM;i+) scsum+=scij; scMj=scsum/M; for(i=0;iM;i+) for(j=0;jN+2;j+) printf(%.2ft,scij); printf(n); for(j=0;jN;j+) printf(%.2ft,scMj); getch(); return 0;8、完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。#include #include#include int main() char ch1024,ct; int i,j,k; printf(Enter a string: ); gets(ch); k=strlen(ch); for(i=0,j=k-1;ik/2;i+,j-) ct=chi; chi=chj; chj=ct; puts(ch); getch(); return 0;指针法:#include#include#include void fun1(char *s) int i,j,k; char ct; k=strlen(s); for(i=0,j=k-1;ik/2;i+,j-) ct=*(s+i); *(s+i)=*(s+j); *(s+j)=ct; int main() char ch1024,*p,i,j; printf(input str:n); gets(ch); fun1(ch); puts(ch); getch(); return 0;9、下面程序的功能是从字符数组中删除指定的字符。#include #include #include int main() char ch80,cde; int j,k; printf(Enter will delete character: ); cde=getche(); printf(nEnter a string: ); gets(ch); for(j=0,k=0;chj!=0;j+) if(chj!=cde) chk+=chj; chk= 0; puts(ch); getch(); return 0;10、编写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。#include #include #include #define M 20void sort(int x,int n) int i,j,k,t; for(i=0;in-1;i+) for(j=0;jxj+1) t=xj; xj=xj+1; xj+1=t; int main() int *p,i,xM; p=x; printf(produce %d numbersn,M); for(i=0;iM;i+) *p+=rand(); p=x; sort(p,M); for(;px+M;) printf(%dt,*p+); getch(); return 0;11、编写函数,利用下面公式计算。 计算的近似值,当某一项的值小于10-8时,输出运算结果。#include#includedouble alpi(double eps) / eps为允许误差 int m=1; double temp=1.0,s=0; while(temp=eps) s+=temp; temp=temp*m/(2*m+1); m+; return(2*s);int main() double eps=1.0e-8,pi; printf(pi=%lfn,alpi(eps); getch(); return 0;12、已知数组k中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数n插入数组k中,插入后,数组k中的元素仍然由小到大顺序排列#include #include #include #define M 10void sort(int x,int n) int i,j,k; for(i=0;in;i+) for(j=0;jxj+1) k=xj; xj=xj+1; xj+1=k; int main() int kM; int i,j=M-5,n,p1=0,p2=0; printf(produce %d number:n,j); for(i=0;ij;i+) ki=rand()%99+1; sort(k,j); for(i=0;i=M) printf(数组没有空间,按任意键返回); getch(); return 1; i=j; while(ki-1n & i) ki=ki-1; i-; j+; ki=n; for(i=0;ij;i+) printf(%dt,ki); getch(); return 0;13、编写函数strcopy将字符串str1复制到字符串str2中。字符串str1由键盘输入。#include #include #include int main() char str11024,str21024; int i=0,j=0; printf(Input String:); gets(str1); YUG printf(Output string:); puts(str2); getch(); return 0;14、在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置,不存在则返回0。#include#include#include#include int fine(char s1,char s2) int i=0,j,len=strlen(s2); while(s1i) for(j=0;j=len) return i; else i+; return 0;int main() char str11024,str21024; int sign; puts(Input String Str1); gets(str1); puts(Input String Str2); gets(str2); sign=fine(str1,str2); if(sign) printf(Fined Substring); else printf(No Substring); getch(); return 0;15、输出结构体数组元素。a)使用结构体变量输出结构体数组元素#include#includestruct student char clas12; int code; char name10; char sex; int age; char addr20;typedef struct student STU;int main() int i; STU stu6= Comsci1201,104300,zhangsan,M,18,BeiJing, Comsci1201,104301,lisi,M,19,TianJin, Comsci1202,104320,wanger,M,20,ShangHai, Comsci1202,104321,sunmei,W,20,ChongQin, Comsci1203,104350,zhaojie,W,19,FuJian, Comsci1203,104351,lihong,W,18,HuNan ; for(i=0;i6;i+) printf(%-10st%dt%-10st%ct%dt%-20sn, stui.clas,stui.code,,stui.sex,stui.age, stui.addr); getch(); return 0;b)使用结构体指针输出结构体数组元素#include#includestruct student char clas12; int code; char name10; char sex; int age; char addr20;typedef struct student STU;int main() int i; STU *sp; STU stu6= Comsci1201,104300,zhang san,M,18,BeiJing, Comsci1201,104301,li si,M,19,TianJin, Comsci1202,104320,wang er,M,20,ShangHai, Comsci1202,104321,sun mei,W,20,ChongQin, Comsci1203,104350,zhao jie,W,19,FuJian, Comsci1203,104351,li hong,W,18,HuNan ; for(sp=stu;spclas,sp-code,sp-name,sp-sex,sp-age,sp-addr);getch(); return 0;c)从文件student.txt读入数据,按name、code、clas、age、sex、adrr的顺序输出到文件newstudent.txt中。写入数据的程序#include#includestruct student char clas12; int code; char name10; char sex; int age; char addr20;typedef struct student STU;int main() int i; STU *sp; FILE *fp; STU stu6= Comsci1201,104300,zhangsan,M,18,BeiJing, Comsci1201,104301,lisi,M,19,TianJin, Comsci1202,104320,wanger,M,20,ShangHai, Comsci1202,104321,sunmei,W,20,ChongQin, Comsci1203,104350,zhaojie,W,19,FuJian, Comsci1203,104351,lihong,W,18,HuNan ; fp=fopen(e:student.txt,w); for(sp=stu;spclas,sp-code,sp-name,sp-sex,sp-age,sp-addr); fclose(fp); getch(); return 0;#include#includestruct student char clas12; int code; char name10; char sex; int age; char addr20;typedef struct student STU;int main() int i; STU stu6; FILE *fp; fp=fopen(e:student.txt,r); if(NULL=fp) printf(File not Open); getch(); return 1; for(i=0;i6;i+) fscanf(fp,%s %d %s %c %d %s, stui.clas,&stui.code,, &stui.sex,&stui.age,stui.addr); printf(%-12st%dt%-10st%ct%dt%-20sn, stui.clas,stui.code,, stui.sex,stui.age,stui.addr); fclose(fp); getch(); return 0;16、输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。#include #include #include#includeint main() char s1024; int i,j,n; printf(输入字符串:n); gets(s); n=strlen(s); for(i=0,j=n-1;i=j) printf(输入字符串是回文串n); else printf(输入字符串不是回文串n); getch(); return 0;17、使用冒泡排序方法,从小到大排序,将排序后的结果输出到文件mydata.txt中#include#include#define M 10void fun(int

温馨提示

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

评论

0/150

提交评论