经典C语言源代码_第1页
经典C语言源代码_第2页
经典C语言源代码_第3页
经典C语言源代码_第4页
经典C语言源代码_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、经典 C 语言源代码1、(1)某年某月某日是星期几#includeint main()int year, month, day;while (scanf_s(%d%d%d, &year, &month, &day) != EOF)if (month = 1 | month = 2)/ 判断 month 是否为 1 或 2 year-;month += 12;int c = year / 100;int y = year - c * 100;int week = (c / 4) - 2 * c + (y + y / 4) + (13 * (month + 1) / 5) day - 1;whil

2、e (week0) week += 7; week %= 7;switch (week)case 1:printf(Mondayn); break;case 2:pri ntf(Tuesdayn); break;case 3:pri ntf(Wed nesdayn); break;case 4:pri ntf(Thursdayn); break;case 5:printf(Fridayn); break;case 6:pri ntf(Saturdayn); break;case 0:pri ntf(S un day n); break;return 0;1、(2)某年某月某日是第几天(一维数组

3、)#in clude stdio.h void mai n() int i, flag, year, mon th, day, dayth;int month_day = 0,31,28,31,30,31,30,31,31,30,31,30,31 ;printf(请输入年/月/日:n);sca nf_s(%d/%d/%d, & year, &mon th, &day);dayth = day;flag = (year % 400 = 0) | (year % 4 = 0 & year % 100 != 0);if (flag)mon th_day2 = 29;for (i = 1; i mon

4、 th; i+)dayth = dayth + mon th_dayi;prin tf(%d/%d/%d 是第 %d 天 n, year, mon th, day, dayth);2、30个数中找最小的数及其位置#i nclude stdio.h# define SIZE 30void mai n() int i;float dataSIZE;int min;printf(请输入%d个浮点数:n,SIZE);for (i = 0; i SIZE; i+) /scan f_s(%f, & datai);datai = ran d() % 30 + 1;printf(%f、, datai);min

5、 = 0;for (i = 1; i SIZE; i+) if (datai data min)min = i;printf(最小值是 5.2f位置是 %5dn, datamin, min);3、30个数从小到大排序(1)#i nclude stdio.h# define SIZE 30void mai n() int i,j;float dataSIZE,temp;int min;printf(请输入%d个整型数:n,SIZE);for (i = 0; i SIZE; i+) sca nf_s(%f, & datai);for (i = 0; i SIZE; i+) min = i;for

6、(j = i + 1; j SIZE; j+) if (dataj datami n)min = j;temp = datami n;datami n = datai;datai = temp;printf(n排序后的结果是:n);for (i = 0; i SIZE; i+)printf(%5.2f, datai);(2)模块化程序(数组名作为函数参数)#i nclude stdio.h# define SIZE 5void accept_array(float a, i nt size);void sort(float a, i nt size);void show_array(float

7、 a, i nt size);void mai n() float scoreSIZE; accept_array(score, SIZE);printf(排序前:);show_array(score, SIZE);sort(score, SIZE);printf(排序后:);show_array(score, SIZE);void accept_array(float a, i nt size) int i;printf(请输入 %d 个分数:, size);for (i = 0; i size; i+)sca nf_s(%f, & ai);void show_array(float a,

8、i nt size) int i;for (i = 0; i size; i+)printf( %5.2f, ai);prin tf(n);void sort(float a,i nt size) int i, mi n, j;float temp;for (i = 0; i SIZE; i+) min = i;for (j = i + 1; j SIZE; j+)if (aj amin)欢迎下载5min = j;temp = ami n;ami n = ai;ai = temp;4、( 1)指针加减:#i nclude stdio.h#define SIZE 10void mai n() i

9、nt aSIZE = 1,2,3,4,5,6,7,8,9,10 ;int *pa, i;pa = & a0;pa=a;prin tf(n);for (i = 0; i SIZE; i+) printf( %d, *pa);printf(%d, *(pa+1);pa+;(2)指针比较:#i nclude stdio.h#define SIZE 10void mai n() int aSIZE = 1,2,3,4,5,6,7,8,9,10 ;int *pa, i;int *qa;pa = qa = & a0;printf(请输入 %d 整型数:,SIZE);for (; pa qa + SIZE;

10、 pa+)sca nf_s(%d, pa);for (pa-; qa = pa; pa-)printf( %d, *pa);5、两字符串相连:#i nclude stdio.h#i nclude stri ng.hvoid str_cat(char str1, char str2);void mai n() 欢迎下载#int i, j;char str1160;char str280;printf(请输入第一个字符串:);gets(strl);printf(请输入第二个字符串:);gets(str2);str_cat(str1, str2);puts(strl);void str_cat(ch

11、ar str1, char str2) int i, j;i = 0;while (str1i != 0)i+;j = 0;while (str2j != 0) str1i = str2j;i+; j+;str1i = 0:6、二维数组(a, b转置)#i nclude stdio.hvoid mai n() int i, j, b23;int a32 = 1,2,3,4,5,6;for (i = 0; i 2; i+) for (j = 0; j 3; j+)bij = aji;prin tf(na:n);for (i = 0; i 3; i+) for (j = 0; j 2; j+)pr

12、in tf(%5d, aij);prin tf(n);prin tf(nb:n);for(i = 0; i 2; i+) for (j = 0; j 3; j+)prin tf(%5d, bij);prin tf(n);欢迎下载#7、输入一个二维数组并输出(指针)#i nclude stdio.hvoid mai n() int x23;int i, j;for (i = 0; i 2; i+)for (j = 0; j 3; j+)sca nf_s(%d, *(x + i) + j); putchar(n);for (i = 0; i 2; i+)for (j = 0; j 3; j+)pr

13、in tf(%d, *(*(x + i) + j);putchar(n);8冒泡法排序一个数组#in clude stdio.h#defi ne size 10void maopao(i nt a);void mai n() int a10;int i;printf(请输入10个整数:n);for (i = 0; i 10; i+)sca nf_s(%d, & ai);maopao(a);void maopao(i nt a) int i, j, temp;for (i = 0; i 9; i+) /进行 9 轮排序for (j = 0; j aj + 1)temp = aj;aj = aj

14、+ 1;/大的沉底,小的上浮 aj + 1 = temp;printf(排序结果:n);for (i = 0; i 10; i+)printf(%4d, ai);9、两数组A,B,要求AB,如A:4,79B:1,3,5,8,9变换后A:1,3,5B:4,78,9,9#in elude void ReArranger(int* A, int* B, int m, int n) /A 和 B是各有 m 个和 n 个整数的非降序数组,本算法将B数组元素逐个插入到A中,使 A中各元素均不大于B中各元素,且两数组仍保持非降序排列。int x, j, i;while (Am - 1B0)欢迎下载13x =

15、 Am - 1;Am - 1 = B0;/ 交换 Am-1和 B0j = 1;while (jn & Bj= 0 & Aix)Ai + 1 = Ai-;/寻找B0的插入位置Ai + 1 = x;void main()/这里主要介绍算法思想,主函数就简单写了int A3, B5, i;printf(输入第一个数组:);for (i = 0; i3; i+) sea nf_s(%d, &Ai);for (i = 0; i5; i+) sea nf_s(%d, & Bi);ReArra nger(A, B, 3, 5);printf(n输出第一个数组:);for (i = 0; i3; i+)pri

16、n tf(%d , Ai);prin tf(nn);printf(输出第二个数组:);for (i = 0; i5; i+)prin tf(%d , Bi);prin tf(n);10、符合 1+6+3=3+2+5=1+4+5 有哪几组A1B C64D E F 到325#in clude void mai n() int a, b, c, d, e, f;for (a = 1; a = 6; a+)for (b = 1; b = 6; b+) if (b = a)con ti nue;for (c = 1; c = 6; c+) if (c = a) | (c = b)con ti nue;f

17、or (d = 1; d = 6; d+) if (d = a) | (d = b) | (d = c)con ti nue;for (e = 1; e = 6; e+) if (e = a) | (e = b) | (e = c) | (e = d)con ti nue;f = 21 - (a + b + c + d + e);if (a + b + d = d + e + f) & (a + b + d = a + c + f) prin tf( %dn, a);prin tf(%d%dn, b, c);11、输入一串字符,升序排序,折半查找其中一字符#in elude void *sor

18、tStri ng(char un sort, i nt len gth) for (i nt i = 0; i len gth; i+) for (i nt j = i + 1; j un sortj) int temp = un sortj;un sortj = un sorti;un sorti = temp;void mai n() 欢迎下载17char s150;gets(sl);char value;sca nf_s(%c, &value);printf(s1 : %sn, s1);prin tf(value:%cn, value);int len gth = strle n(s1)

19、;prin tf(le ngth:%dn, le ngth);sortStri ng(s1, le ngth);printf(s1 : %sn, s1);int start = 0, end = len gth - 1;int mid = (end + start) / 2;while (start s1mid)start = mid+1;elseend = mid-1;if (mid)elseprintf(该字符不在已知字符串中n);12、100-300和500-700直接素数,m不被2到根号m直接任整除#in cludeint isprime(i nt n)if (n 2)return 0

20、;for (i nt i = 2; in / 2; i+)if (n%i = 0)return 0;return 1;void mai n()int i, k = 0;for (i = 100; i = 300; i+)if (isprime(i)prin tf(%3d , i);k+;if (k % 10 = 0) prin tf(n);for (i = 500; i = 700; i+)if (isprime(i)prin tf(%3d , i);k+;if (k % 10 = 0) prin tf(n);prin tf(n);13、判断一个数是否是素数#in clude#in clude

21、void mai n()int m, i, k;printf(请输入一个整数:);sea nf_s(%d, & m);k = (in t)sqrt(m);for (i = 2; i k)printf(%d 是素数。n, m);elseprintf(%d 不是素数。n, m);14、一个数是否含有数字5#in clude #in clude bool is5Num(i nt num) int temp = num % 10;while (temp != 5 & num 10) num = num / 10;temp = num % 10;欢迎下载21if (temp != 5)return fa

22、lse;elsereturn true;void mai n() int num;printf(输入一个数:n);sca nf_s(%d, &n um);if (is5Nu m(num)printf(含 5n);elseprintf(不含 5n);15、一个排好序的数组,插入一个数#in clude void mai n() int a11 = 1,2,3,4,5,6,7,8,9,10 ;int num;printf(插入前数组为:n);for (i nt i = 0; i a9)a10 = num;else for (int i = 0; i 10;i+)if (num = i; j-)aj

23、 + 1 = aj;ai = num; break;printf(插入后数组为:n);for (i nt i = 0; i = 10; i+)prin tf(%3d, ai);prin tf(n);16、牛顿迭代法:#in elude #in elude double fune(double x) / 函数return x*x*x + 2.0*x*x + 3.0*x + 4.0;double func1(double x) / 导函数return 3 * x*x + 4 * x + 3;void Newton(double x0,double preeision) 迭代次数double x1;

24、int k;if (fun e1(x0) = 0.0) /若通过初值,函数返回为0printf(迭代过程中倒数为0! n);return;x1 = x0 - fun e(x0) / fun c1(x0); 进行牛顿迭代计算while (!(f un e1(x1 - x0) preeisi on | fabs(fu nc(x1) preeisi on) x0 = x1;/准备下一次迭代欢迎下载23if (fun c1(xO) = 0.0)/若通过初值,函数返回值为0printf(迭代过程中倒数为0! n);x1 = x0 - fun c(x0) / fun c1(x0);/ 进行牛顿迭代计算 v

25、oid mai n() double x, precisi on;printf(输入初始迭代值x0: n);sca nf_s(%lf, & x);printf(迭代要求的精度:n);sca nf_s(%lf, &precisi on);Newton(x, precision); 若函数返回值为 1printf(该值附近的跟为:%lfn, x);getchar();getchar();17、起始时间到终止时间天数#i nclude stdio.hvoid mai n() int start3, end3;printf(请输入开始日期,如1964219: n);seanf_s(%d.%d.%d,

26、&startO, &start1, &start2);printf(请输入结束日期,如2001.10.20: n);scanf_s(%d.%d.%d, &end0, &end1, &end2);int sum = 0;for (i nt mid = start0; mid en d0; mid+) if (mid % 400 = 0) | (mid % 4 = 0 & mid % 100 != 0) sum = sum + 366;elsesum = sum + 365;sum = sum - in dexday(start0,start1,start2) +in dexday(e nd0,e

27、 nd1,e nd2);printf(在%d.%d.%d-%d.%d.%d之间有 %d 天n,start0,start1,start2,end0,end1,end2, sum);int in dexday(i nt year, i nt mon th, i nt day) int i, flag, dayth;int month_day = 0,31,28,31,30,31,30,31,31,30,31,30,31 ; dayth = day;flag = (year % 400 = 0) | (year % 4 = 0 & year % 100 != 0);欢迎下载25if (flag)mo

28、 nth_day2 = 29;for (i = 1; i mon th; i+)dayth = dayth + mon th_dayi; return dayth;18、递归求 1*1+2*2+3*3+n*n#i nclude stdio.hlong Eleme nt(i nt n) if (n = 1)return 1 * 1;elsereturn Eleme nt(n - 1) + n*n;void mai n() int n;printf(请输入n的值:n);sca nf_s(%d, &n);19、最大公约数(辗转相除)#in cludevoid mai n()/*辗转相除法求最大公约数

29、*/int m, n, a, b, t, c;prin tf(I nput two in teger nu mbers: n);sca nf_s(%d%d, &a, & b);m = a; n = b;0 */while (b != 0)/*余数不为0,继续相除,直到余数为c = a%b; a = b; b = c;prin tf(The largest com mon divisor:%dn, a);prin tf(The least com mon multiple:%dn, m*n / a);20、杨辉三角#in cludevoid mai n() int i, j, n, k;prin

30、 tf(E nter n:); sea nf_s(%d, &n);for (i = 1; i = n; i+)k = 1;for (j = 1; ji; j+)prin tf(%3d, k); k = k*(i - j) / j;/每次要打印的下一个数等于前一个数乘以其所在行数 和列数的差再除以其列数prin tf(%3d, k);prin tf(n);21、约瑟夫#i nclude void mai n()int n, m, i, s=0;printf (E nter n: m:);sea nf(%d%d, &n, & m);for (i=2; i=n; i+) s=(s+m)%i;prin

31、tf (The winner is %dn, s+1); 22、斐波拉契#in cludevoid mai n()long f, f1, f2; int i, n;printf(Enter n :);sca nf_s(%d, &n);f1 = 1;f2 = 1;prin tf(%10d%10d, f1, f2);for (i = 1; i = n; i+)f = f1 + f2;prin tf(%10d, f);f1 = f2; f2 = f;if (i % 10 = 0) prin tf(n);23、海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃 子凭据分为五份,多了一个,这只猴子把多的

32、一个扔入海中,拿 走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第 五只猴子都是这样做的,问海滩上原来最少有多少个桃子?#in cludemai n()int i, m, j, k, count;for (i = 4; i10000; i += 4)count = 0;m = i;for (k = 0; k5; k+)j = i / 4 * 5 + 1;i = j;if (j % 4 = 0) coun t+;else break;i = m;if (co unt = 4) prin tf(%dn, j); break;24、验证哥德巴赫猜想,即任一个偶数都可以分解为两

温馨提示

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

评论

0/150

提交评论