C语言源程序 .pdf

上传人:Che****ry 文档编号:34883739 上传时间:2022-08-19 格式:PDF 页数:49 大小:315.54KB
返回 下载 相关 举报
C语言源程序 .pdf_第1页
第1页 / 共49页
C语言源程序 .pdf_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《C语言源程序 .pdf》由会员分享,可在线阅读,更多相关《C语言源程序 .pdf(49页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、/*添加某一元素*/ #include int main() int a10,k,i,j; printf(请输入一组有序数组开始排序:); for(i=0;i9;i+) scanf(%d,&ai); printf(Please intput array:); scanf(%d,&k); for(i=0;ik) for(j=9;ji;j-) aj=aj-1; ai=k; break; if(i9) ai=k; printf(新插入的数字排列后为:); for(i=0;i=9;i+) printf(a%d=%d.,i,ai); return 0; /*删除有序数组某一元素*/ #include i

2、nt main() int a10=0,1,2,3,4,5,6,7,8,9,i,j,k; printf(请输入要删除的数子:); scanf(%d,&k); for(i=0;i=9;i+) if(ai=k) for(j=i;j9;j+) aj=aj+1; break; if(i=10) printf(无此数子 .n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 49 页 - - - - - - - - - return 0; printf(删除后的数子为:); fo

3、r(i=0;i=9;i+) printf(a%d=%d.,i,ai); return 0; /*冒泡法 */ #include int main() int a10,j,i,k; printf(Please input:); for(i=0;i=9;i+) scanf(%d,&ai); for(i=0;ii;j-) if(ajaj-1) k=aj; aj=aj-1; aj-1=k; printf(排列好的一组数子:); for(i=0;i=9;i+) printf(a%d=%d.,i,ai); return 0; /*选择法 */ #include int main() int a10,i,j

4、,k,t; printf(Please input:); for(i=0;i=9;i+) scanf(%d,&ai); for(i=0;ii;j-) if(ajak) k=j; t=ai; ai=ak; ak=t; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 49 页 - - - - - - - - - printf(它们是 :); for(i=0;i=9;i+) printf(a%d=%d.,i,ai); return 0; /*双向冒泡法 */ #includes

5、tdio.h #define N 10 main(void) int aN; int i,j,n,t; printf(请输入 10 个数 :); for(i=0;i=9;i+) scanf(%d,&ai); for(n=1;n=N/2;n+) for(i=n-1;iai-1) t=ai; ai=ai-1; ai-1=t; for(j=N-n-1;jn-1;j-) if(ajaj-1) t=aj; aj=aj-1; aj-1=t; printf(它们是 :); for(i=0;i=9;i+) printf(a%d=%d.,i,ai); return 0; /*指针冒泡法 */ #include

6、void sort(int *x,int y); int main(void) int a=3,1,4,5,9,7,8,6,2,0,i; sort(a,10); for(i=0;i=9;i+) printf(a%d=%d. ,i,ai); return 0; void sort(int *x,int y) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 49 页 - - - - - - - - - int i,t,*j; for(i=1;ix+i-1;j-) if(*(j

7、-1)*j) t=*j; *j=*(j-1); *(j-1)=t; /*/ 计算 4 字节整数的2 进制形式1bit的个数 , 如 oneBits(2)=1;oneBits(3)=2 int oneBits(int i) i = i - (i 1) & 0 x55555555); i = (i & 0 x33333333) + (i 2) & 0 x33333333); i = (i + (i 4) & 0 x0f0f0f0f; i = i + (i 8); i = i + (i 16); i &= 0 x3f; return i; /*判断空格和字符数量*/ #include int get

8、(int *x,int *y); int main(void) int x,y; if(get(&x,&y) printf(空格 :%d 个 , 小写字符 : %d 个n,x,y); else printf(非法文件 n); return 0; int get(int *x,int *y) int t; *x=*y=0; while(t=getchar()!=EOF) switch(t) case : case t: (*x)+;break; case n:return 1; default:if(t=a&t=z) (*y)+; 名师资料总结 - - -精品资料欢迎下载 - - - - - -

9、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 49 页 - - - - - - - - - return 0; /*strrev倒置算法 */ #include #include void strrev(char a); int main(void) char a60; int i; gets(a); strrev1(a); printf(%sn,a); return 0; void strrev(char a) int i,j,n; char ch; n=strlen(a); for(i=0,j=n-1;ij;i+,j-) ch=

10、ai; ai=aj; aj=ch; /* 删除一串字符中的一个后并输出*/ #include #include int main() int i,m,j,n; int a10=1,2,3,4,5,6,7,8,9; coutthis number will be passed that you printf m; /输入将要被删除的数. for(i=0;iai) /判断输入的数是否太大. coutthis number is wrong.; return 0; /结束这个数字 , 重新开始 . if(ai=m) for(j=i;j=8;j+) aj=aj+1; 名师资料总结 - - -精品资料欢

11、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 49 页 - - - - - - - - - ; for(n=0;n=8;n+) coutan; ; return 0; /*自编 strcpy库函数 */ #include void strcopy(char *str1,char *str2); int main(void) char *str1,*str2; printf(Please intput str1 and str2:); scanf(%s%s,str1,str2); strcopy(str1

12、,str2); printf(%sn%sn,str1,str2); return 0; void strcopy(char *str1,char *str2) while(*str1+=*str2+)!=0); /*自编库函数strlen*/ #include int strlen1(char *str); int main(void) int n=0; char *str1; printf(Please input string:); scanf(%s,str1); n=strlen1(str1); printf(%dn,n); return 0; int strlen1(char *str

13、) char *i; for(i=str;*i;i+); return i-str; /*自编库函数strcmp*/ #include int strcmp1(char *str1,char *str2); int main(void) char *str1,*str2; int sum; printf(Please input string1 and string2:); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 49 页 - - - - - - - - - sc

14、anf(%s%s,str1,str2); sum=strcmp1(str1,str2); printf(%dn,sum); return 0; int strcmp1(char *str1,char *str2) for(;*str1=*str2;str1+,str2+) if(*str1=0) return 0; return *str1-*str2; /*经典字符转数子*/ #include int main(void) int i,j=0,k=1; char a10,*s; s=a; printf(Please input:); scanf(%9s,a); if(*s=-) k=-1;

15、s+; while(*s) i=*s-0; j=j*10+i; s+; printf(%dn,j*k); return 0; /*自编内存分配函数*/ /*仿 malloc 函数 */ #include #define NUL 0 #define ALLOSIZE 100 static allocbALLOSIZE; static *allocp=allocb; char *alloc(int n) if(n0&allocp+n=allocb+ALLOSIZE) allocp+=n; return (char*)(allocp-n); 名师资料总结 - - -精品资料欢迎下载 - - - -

16、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 49 页 - - - - - - - - - else return (char*)NUL; int main(void) int *p=(int *)alloc(sizeof(int); *p=100; printf(%d:%dn,p,*p); return 0; /* 动态定义一维整形数组*/ #include #include int init(int *block,int siz) int *aux; if(aux=(int *)malloc(siz*sizeof(int)

17、=NULL) return 0; printf(Enter %d integer Values:,siz); *block=aux; while(siz-) scanf(%d,aux+); return 1; int main(void) int *arr,i,size; printf(Array size:); scanf(%d,&size); if(!init(&arr,size) printf(Cannot allocate memoryn); return 0; else for(i=0;isize;i+) printf(%dn,arri); return 0; /* 动态定义一维数组

18、+动态内存分配*/ #include #define NUL 0 #define ALLOCSIZE 100 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 49 页 - - - - - - - - - char *alloc(int n); int init(int *block,int size); static allocbALLOCSIZE; static *allocp=allocb; int main(void) int *arr,size,i; printf

19、(Array size:); scanf(%d,&size); if(!init(&arr,size) printf(Cannot allocate memoryn); return 1; else for(i=0;i0&allocp+(n-1)=allocb+(ALLOCSIZE-1) allocp+=n; return (char*)allocp-n; else return NUL; int init(int *block,int size) int *aux; if(aux=(int *)alloc(size*sizeof(int)=NUL) return 0; else *block

20、=aux; printf(Enter %d integer values:,size); while(size-) scanf(%d,aux+); return 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 49 页 - - - - - - - - - /* 动态定义二维数组+动态内存分配*/ #include #define ALLOCSIZE 200 #define NUL 0 static allocbALLOCSIZE; static *allocp=al

21、locb; char *alloc(int n) if(n0&allocp+(n-1)=allocb+(ALLOCSIZE-1) allocp+=n; return (char *)allocp-n; else return NUL; int *cas(int r,int c) int *x,i; x=(int *)alloc(sizeof(int)*r); for(i=0;ir;i+) xi=(int *)alloc(sizeof(int); return x; int main(void) int *p,i,j,r,c; printf(Array rows and cols:); scan

22、f(%d%d,&r,&c); p=cas(r,c); printf(Enter %d integer values:,c*r); for(i=0;ir;i+) for(j=0;jc;j+) scanf(%d,&pij); for(i=0;ir;i+) for(j=0;jc;j+) printf(%dn,pij); return 0; /*4x4矩阵转置输出*/ #include int main(void) int a44,i,j,t; for(i=0;i=3;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

23、 - - - - - - - 第 10 页,共 49 页 - - - - - - - - - for(j=0;j=3;j+) scanf(%d,&aij); for(i=0;i=3;i+) for(j=0;j=3;j+) printf(%4d,aij); printf(n); for(i=1;i4;i+) for(j=0;ji;j+) t=aij; aij=aji; aji=t; printf(=n); for(i=0;i=3;i+) for(j=0;j=3;j+) printf(%4d,aij); printf(n); return 0; /*判断月份 */ #include int mai

24、n(void) char month14=Illegal Month, January, February, March, April, May, June, July, August, September, October, November, December; int i; for(;) printf(Please input:); scanf(%d,&i); printf(%sn,i=1&i=12 ? monthi:month0); return 0; /*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

25、 - - - - - - - 第 11 页,共 49 页 - - - - - - - - - /*输入年和本年第几天利用指针计算月份*/ /*/ #include void monthday(int year,int yearday,int *pmonth,int *pday); int main(void) int year,yearday,day,month; printf(Please input:); scanf(%d%d,&year,&yearday); monthday(year,yearday,&month,&day); printf(%d %d %d,year,month,da

26、y); return 0; void monthday(int year,int yearday,int *pmonth,int *pday) int i,j,q,day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31; j=(year%4=0&year%100!=0)|year%400=0); for(i=0;yearday(q=*(*(day_tab+j)+i);i+) yearday-=q; *pmonth=i; *pday=yearday; /*输入年月日计算距其多少天*

27、/ #include int day_of_year(int year,int month,int day); int main(void) int year,month,day,k; printf(Please input:); scanf(%d%d%d,&year,&month,&day); k=day_of_year(year,month,day); printf(%dn,k); return 0; int day_of_year(int year,int month,int day) int i,j=0,day_tab213=0,31,28,31,30,31,30,31,31,30,3

28、1,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31; j=(year%4=0&year%100!=0)|year%400=0); for(i=1;imonth;i+) day=day+day_tabji; return day; /*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 49 页 - - - - - - - - - #include int monthday(int (*day_tab)13,int year,int

29、 month,int day); int main(void) int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,28,31,30,31,30,31,31,30,31,30,31,year,day,month,k; printf(Please input:); scanf(%d%d%d,&year,&month,&day); k=monthday(day_tab,year,month,day); printf(%dn,k); return 0; int monthday(int (*day_tab)13,int year,int

30、month,int day) int i,j,l; l=(year%4=0&year%100!=0)&year%400=0); for(i=1;imonth;i+) day+=*(*(day_tab+l)+i); return day; /*上浮下沉 */ #include void sortr(int a,int n); int main(void) int num,i,a100; scanf(%d,&num); if(num100) puts(too many number!); return 1; for(i=0;inum;i+) scanf(%d,&ai); sortr(a,num);

31、 for(i=0;inum;i+) printf(%d,ai); return 0; void sortr(int a,int n) int l,r,k,j,t; for(l=1,r=n-1,k=n;l=1;j-) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 49 页 - - - - - - - - - if(aj-1aj) t=aj-1; aj-1=aj; aj=t; k=j; for(j=l=k+1;jaj) t=aj-1; aj-1=aj; aj=t; k=j

32、; /*指针数组批量排列*/ #include #include void sortr(char *x,int y); int main(void) char *a=Hello,Good,Thank you,Wool,Mir2; int i; sortr(a,5); for(i=0;i5;i+) printf(%sn,ai); return 0; void sortr(char *x,int y) int i,j; char *p; for(i=0;ii;j-) if(strcmp(xj-1,xj)0) p=xj; xj=xj-1; xj-1=p; /*杨辉三角型 */ #include in

33、t main(void) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 49 页 - - - - - - - - - int a55,i,j; for(i=0;i5;i+) for(j=0;j=i;j+) if(j=0|j=i) aij=1; else aij=ai-1j+ai-1j-1; printf(%3d,aij); printf(n); return 0; /*杨辉三角型函数递归*/#include int add(int j,int i) if(i=1|i=

34、j) return 1; else return (add(j-1,i)+add(j-1,i-1); void main() for(int j=1;j=10;j+) for(int k=1;k=30-j;k+) printf( ); for(int i=1;i=j;i+) printf(%3d,add(j,i); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 49 页 - - - - - - - - - /* 杨辉三角型指针版+内存分配 */

35、#include #define a 100 int main(void) int *xa,i,j; for(i=0;i8;i+) xi=(int*)malloc(sizeof(int)*(1+i); for(j=0;j=i;j+) if(j=0|j=i) *(xi+j)=1; else *(xi+j)=*(xi-1+j)+*(xi-1+(j-1); printf(%5d,*(*(x+i)+j); printf(n); return 0; /* 编写一个程序,用于接受2 个字符串,判断第1 个字符串中是否包含第2 个字符串,如果包含说明第2个字符串在第1 个字符串中的位置(即:第2 个字符串第

36、1个字符在第一感字符串中出现的位置)。 */ #include int strlen1(char *str1); int include1(char *string1,char *string2); int main(void) unsigned int sum=0; char str120,str220; scanf(%s%s,str1,str2); /*sum=strlen1(str1);*/ sum=include1(str1,str2); /*sum等于 0 代表没,否则给你说位置*/ printf(%dn,sum); return 0; int strlen1(char *str1)

37、 char *str2=str1; for(;*str2;str2+); return str2-str1; int include1(char *string1,char *string2) unsigned int i=0,sum=1,j=0,num=0,k=0; if(num=strlen1(string1)strlen1(string2) printf(errorn); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 49 页 - - - -

38、 - - - - - for(;inum;i+) if(*(string1+i)=*string2) for(j=0,k=i;*(string1+k)=*(string2+j)&*(string1+k);k+,j+); if(*(string2+j)=0) return sum; sum+; return 0; /*简单链表 */ #include #include #define ERROE printf(error!n) #define INTSIZE sizeof(int) #define CI sizeof(int)+sizeof(char *) int main() char *p,

39、*q,*f; int i; p=(char *)malloc(INTSIZE); *(int *)p=1; f=p; p+=INTSIZE; for(i=2;i10;i+,p+=INTSIZE) if(q=(char *)malloc(INTSIZE)=NULL) ERROE; else *(char *)p=q; p=q; *(int *)p=i; *(char *)p=NULL; for(p=f;p;p+=INTSIZE,p=*(char *)p) printf(%dn%dn,*(int *)p,p); return 0; /*动态创建链表 */ #include #include str

40、uct slist 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 49 页 - - - - - - - - - int data; struct slist *next; ; struct slist*fun() struct slist *h=NULL,*s=NULL,*p=NULL; int c=EOF; h=(struct slist *)malloc(sizeof(struct slist); p=h; scanf(%d,&c); while(c!=EOF)

41、s=(struct slist *)malloc(sizeof(struct slist); s-data = c; p-next = s; p = s; scanf(%d,&c); p-next = NULL; return h; void print(struct slist *h) h = h-next; if(h = NULL) printf(error!n); else printf(Head); do printf(-%d,h-data); h = h-next; while(h!=NULL); printf(-Endn); int main() struct slist *h;

42、h = fun(); print(h); return 0; /* 创建、插入、删除、遍历链表*/ #include #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 49 页 - - - - - - - - - #define ERROR printf(error!n) #define SZ sizeof(SLIST) #define TRUE 1 #define FALSE 0 typedef struct slist int data; struc

43、t slist *next; SLIST,*PSLIST; PSLIST node(void) int dat; PSLIST head,p,q; if(head = (PSLIST)malloc(SZ) = NULL) ERROR; return NULL; scanf(%d,&dat); p = head; while(dat != EOF) if(q = (PSLIST)malloc(SZ) = NULL) ERROR; return NULL; q-data = dat; p-next = q; p = q; p-next = NULL; scanf(%d,&dat); p-next

44、= NULL; return head; int insert(PSLIST head,int dat) PSLIST s,p,q; if(s = (PSLIST)malloc(SZ) = NULL) ERROR; return FALSE; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 49 页 - - - - - - - - - s-data = dat; p = head; q = p-next; while(q != NULL & q-data != dat)

45、 p = q; q = p-next; s-next = q; p-next = s; return TRUE; int Delete(PSLIST head,int dat) PSLIST p,q; q = head; p = head-next; while(p != NULL & p-data != dat) q = p; p = p-next; q-next = p-next; free(p); return TRUE; int print(PSLIST head) PSLIST p = head-next; if(p = NULL) ERROR; return FALSE; prin

46、tf(head); do printf(-%d,p-data); p = p-next; while(p != NULL); printf(-Endn); return TRUE; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 49 页 - - - - - - - - - int main() PSLIST head; head = node(); if(print(head) = FALSE) ERROR; if(insert(head,5) = FALSE) ER

47、ROR; if(print(head) = FALSE) ERROR; if(Delete(head,5) = FALSE) ERROR; if(print(head) = FALSE) ERROR; return 0; /*/ 写一个函数 ,它的原形是int continumax(char *outputstr,char *intputstr) 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。例如:abcd12345ed125ss123456789的首地址传给intputstr 后,函数将返回 9,output

48、str 所指的值为123456789 int continumax(char *outputstr, char *inputstr) char *in = inputstr, *out = outputstr, *temp, *final; int count = 0, maxlen = 0; while( *in != 0 ) if( *in 47 & *in 47 & *in 58 ; in+ ) count+; else in+; if( maxlen count ) maxlen = count; count = 0; final = temp; for(int i = 0; i ma

49、xlen; i+) *out = *final; out+; final+; *out = 0; return maxlen; /*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 49 页 - - - - - - - - - 不用库函数 ,用 C 语言实现将一整型数字转化为字符串方法 1:int getlen(char *s) int n; for(n = 0; *s != 0; s+) n+; return n; void reverse(char s) int

50、c,i,j; for(i = 0,j = getlen(s) - 1; i j; i+,j-) c = si; si = sj; sj = c; void itoa(int n,char s) int i,sign; if(sign = n) 0);/*delete the number*/ if(sign 0) si+ = -; si = 0; reverse(s); 方法 2: #include using namespace std; void itochar(int num); void itochar(int num) int i = 0; int j ; char stra10;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com