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

下载本文档

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

文档简介

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 或 2year-;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;1 /

2、 47.while (week0) week += 7; week %= 7;switch (week)case 1:printf(Mondayn); break;case 2:printf(Tuesdayn); break;case 3:printf(Wednesdayn); break;case 4:printf(Thursdayn); break;case 5:printf(Fridayn); break;case 6:printf(Saturdayn); break;case 0:printf(Sundayn); break;return 0;1、(2)某年某月某日是第几天(一维数组)

3、2 / 47.#include stdio.hvoid main() int i, flag, year, month, day, dayth;int month_day = 0,31,28,31,30,31,30,31,31,30,31,30,31 ;printf( 请输入年 / 月/ 日: n);scanf_s(%d/%d/%d, &year, &month, &day);dayth = day;flag = (year % 400 = 0) | (year % 4 = 0 & year % 100 != 0);if (flag)month_day2 = 29;for (i = 1; i

4、month; i+)dayth = dayth + month_dayi;printf(%d/%d/%d 是第 %d 天n, year, month, day, dayth);2、30 个数中找最小的数及其位置3 / 47.#include stdio.h# define SIZE 30 void main() int i;float dataSIZE;int min;printf( 请输入 %d 个浮点数: n,SIZE);for (i = 0; i SIZE; i+) /scanf_s(%f, &datai);datai = rand() % 30 + 1;printf(%f 、 , da

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

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

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

8、i);7 / 47.void show_array(float a, int size) int i;for (i = 0; i size; i+)printf(%5.2f, ai);printf(n);void sort(float a,int size) int i, min, j;float temp;for (i = 0; i SIZE; i+) min = i;for (j = i + 1; j SIZE; j+)if (aj amin)min = j;temp = amin;amin = ai;ai = temp;8 / 47.4、( 1)指针加减:#include stdio.h

9、#define SIZE 10void main() int aSIZE = 1,2,3,4,5,6,7,8,9,10 ;int *pa, i;pa = &a0;/pa=a;printf(n);for (i = 0; i SIZE; i+) printf(%d, *pa);/printf(%d, *(pa+1);pa+;9 / 47.(2)指针比较:#include stdio.h#define SIZE 10void main() int aSIZE = 1,2,3,4,5,6,7,8,9,10 ;int *pa, i;int *qa;pa = qa = &a0;printf( 请输入 %d

10、 整型数: ,SIZE);for (; pa qa + SIZE; pa+)scanf_s(%d, pa);for (pa-; qa = pa; pa-)printf(%d, *pa);10 / 47.5、两字符串相连:#include stdio.h#include string.hvoid str_cat(char str1, char str2);void main() int i, j;char str1160;char str280;printf( 请输入第一个字符串:);gets(str1);printf( 请输入第二个字符串:);gets(str2);str_cat(str1,

11、str2);puts(str1);void str_cat(char str1, char str2) 11 / 47.int i, j;i = 0;while (str1i != 0)i+;j = 0;while (str2j != 0) str1i = str2j;i+; j+;str1i = 0;6、二维数组( a,b 转置)#include stdio.hvoid main() int i, j, b23;int a32 = 1,2,3,4,5,6 ;12 / 47.for (i = 0; i 2; i+) for (j = 0; j 3; j+)bij = aji;printf(na

12、:n);for (i = 0; i 3; i+) for (j = 0; j 2; j+)printf(%5d, aij);printf(n);printf(nb:n);for(i = 0; i 2; i+) for (j = 0; j 3; j+)printf(%5d, bij);printf(n);13 / 47.7、输入一个二维数组并输出(指针)#include stdio.hvoid main() int x23;int i, j;for (i = 0; i 2; i+)for (j = 0; j 3; j+)scanf_s(%d, *(x + i) + j);putchar(n);f

13、or (i = 0; i 2; i+)for (j = 0; j 3; j+)printf(%d, *(*(x + i) + j);putchar(n);14 / 47.8、冒泡法排序一个数组#include stdio.h#define size 10void maopao(int a);void main() int a10;int i;printf( 请输入 10 个整数: n);for (i = 0; i 10; i+)scanf_s(%d, &ai);maopao(a);void maopao(int a) int i, j, temp;for (i = 0; i 9; i+) /

14、进行 9 轮排序15 / 47.for (j = 0; j aj + 1)temp = aj;aj = aj + 1;/ 大的沉底,小的上浮aj + 1 = temp;printf( 排序结果: n);for (i = 0; i 10; i+)printf(%4d, ai);9、两数组 A, B,要求 AB,如16 / 47.A: 4,7, 9B:1,3, 5,8, 9变换后A: 1,3, 5B:4,7, 8,9, 9#include void ReArranger(int* A, int* B, int m, int n) /A和 B 是各有 m 个和 n个整数的非降序数组, 本算法将 B

15、数组元素逐个插入到A 中,使A 中各元素均不大于B 中各元素,且两数组仍保持非降序排列。int x, j, i;while (Am - 1B0)x = Am - 1;Am - 1 = B0;/ 交换 Am-1和 B0j = 1;17 / 47.while (jn & Bj= 0 & Aix)Ai + 1 = Ai-;/ 寻找 B0的插入位置Ai + 1 = x;void main()/ 这里主要介绍算法思想,主函数就简单写了int A3, B5, i;printf( 输入第一个数组:);for (i = 0; i3; i+) scanf_s(%d, &Ai);18 / 47.printf(n

16、输入第二个数组:);for (i = 0; i5; i+) scanf_s(%d, &Bi);ReArranger(A, B, 3, 5);printf(n 输出第一个数组:);for (i = 0; i3; i+)printf(%d , Ai);printf(nn);printf( 输出第二个数组:);for (i = 0; i5; i+)printf(%d , Bi);printf(n);19 / 47.10、符合 1+6+3=3+2+5=1+4+5有哪几组A1B C64D E F 到3 25#include void main() int a, b, c, d, e, f;for (a

17、= 1; a = 6; a+)for (b = 1; b = 6; b+) if (b = a)continue;for (c = 1; c = 6; c+) if (c = a) | (c = b)continue;for (d = 1; d = 6; d+) 20 / 47.if (d = a) | (d = b) | (d = c)continue;for (e = 1; e = 6; e+) if (e = a) | (e = b) | (e = c) | (e = d)continue;f = 21 - (a + b + c + d + e);if (a + b + d = d +

18、e + f) & (a + b + d = a + c+ f) printf( %dn, a);printf(%d%dn, b, c);printf(%d %d %dn, d, e, f);21 / 47.11、输入一串字符,升序排序,折半查找其中一字符#include void *sortString(char unsort, int length) for (int i = 0; i length; i+) for (int j = i + 1; j unsortj) int temp = unsortj;unsortj = unsorti;unsorti = temp;void main

19、() 22 / 47.char s150;gets(s1);char value;scanf_s(%c, &value);printf(s1 :%sn, s1);printf(value:%cn, value);int length = strlen(s1);printf(length:%dn, length);sortString(s1, length);printf(s1 :%sn, s1);int start = 0, end = length - 1;int mid = (end + start) / 2;while (start s1mid)start = mid+1;else23

20、/ 47.end = mid-1;if (mid)printf( 该字符在已知字符串中,即在第%d 个n,mid);elseprintf( 该字符不在已知字符串中n);12、100-300 和 500-700 直接素数, m 不被 2 到根号 m 直接任一整除#includeint isprime(int n)if (n2)return 0;24 / 47.for (int i = 2; in / 2; i+)if (n%i = 0)return 0;return 1;void main()int i, k = 0;for (i = 100; i = 300; i+)if (isprime(i

21、)printf(%3d , i);k+;if (k % 10 = 0) printf(n);for (i = 500; i = 700; i+)if (isprime(i)25 / 47.printf(%3d , i);k+;if (k % 10 = 0) printf(n);printf(n);13、判断一个数是否是素数#include#includevoid main()int m, i, k;printf( 请输入一个整数:);26 / 47.scanf_s(%d, &m);k = (int)sqrt(m);for (i = 2; i k)printf(%d是素数。 n, m);else

22、printf(%d不是素数。 n, m);14、一个数是否含有数字5#include #include bool is5Num(int num) int temp = num % 10;27 / 47.while (temp != 5 & num 10) num = num / 10;temp = num % 10;if (temp != 5)return false;elsereturn true;void main() int num;printf( 输入一个数: n);scanf_s(%d, &num);if (is5Num(num)printf( 含 5n);elseprintf( 不

23、含 5n);28 / 47.15、一个排好序的数组,插入一个数#include void main() int a11 = 1,2,3,4,5,6,7,8,9,10 ;int num;printf( 插入前数组为: n);for (int i = 0; i a9)a10 = num;else 29 / 47.for (int i = 0; i 10;i+)if (num = i; j-)aj + 1 = aj;ai = num;break;printf( 插入后数组为: n);for (int i = 0; i = 10; i+)printf(%3d, ai);printf(n);16、牛顿迭

24、代法:#include 30 / 47.#include double func(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 precision)/ 迭代次数double x1;int k;if (func1(x0) = 0.0) / 若通过初值,函数返回为0printf( 迭代过程中倒数为0! n);return;x1 = x0 - func(x0) / func1(x

25、0);/ 进行牛顿迭代计算while (!(func1(x1 - x0) precision | fabs(func(x1) precision)31 / 47.x0 = x1;/ 准备下一次迭代if (func1(x0) = 0.0)/ 若通过初值,函数返回值为0printf( 迭代过程中倒数为0!n);x1 = x0 - func(x0) / func1(x0);/ 进行牛顿迭代计算void main() double x, precision;printf( 输入初始迭代值x0:n);scanf_s(%lf, &x);printf( 迭代要求的精度:n);scanf_s(%lf, &pr

26、ecision);Newton(x, precision);/ 若函数返回值为1printf( 该值附近的跟为:%lfn, x);getchar();getchar();32 / 47.17、起始时间到终止时间天数#include stdio.hvoid main() int start3, end3;printf( 请输入开始日期,如1964.2.19: n);scanf_s(%d.%d.%d, &start0, &start1, &start2);printf( 请输入结束日期,如2001.10.20: n);scanf_s(%d.%d.%d, &end0, &end1, &end2);i

27、nt sum = 0;for (int mid = start0; mid end0; mid+) if (mid % 400 = 0) | (mid % 4 = 0 & mid % 100 != 0) sum = sum + 366;elsesum = sum + 365;33 / 47.sum = sum - indexday(start0,start1,start2) +indexday(end0,end1,end2);printf( 在%d.%d.%d-%d.%d.%d之间有 %d 天n, start0,start1,start2,end0,end1,end2, sum);int in

28、dexday(int year, int month, int 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);if (flag)month_day2 = 29;for (i = 1; i month; i+)dayth = dayth + month_dayi;return dayth;34 / 47.18、递归求 1*1+2*2+3*3+n*

29、n#include stdio.hlong Element(int n) if (n = 1)return 1 * 1;elsereturn Element(n - 1) + n*n;void main() int n;printf( 请输入 n 的值: n);scanf_s(%d, &n);printf( 所求值为 %dn, Element(n);35 / 47.19、最大公约数(辗转相除)#includevoid main()/*辗转相除法求最大公约数*/int m, n, a, b, t, c;printf(Input two integer numbers:n);scanf_s(%d%

30、d, &a, &b);m = a;n = b;while (b != 0)/*余数不为 0,继续相除,直到余数为0 */c = a%b; a = b; b = c;printf(The largest common divisor:%dn, a);printf(The least common multiple:%dn, m*n / a);36 / 47.20、杨辉三角#includevoid main()int i, j, n, k;printf(Enter n:); scanf_s(%d, &n);for (i = 1; i = n; i+)k = 1;for (j = 1; ji; j+

31、)printf(%3d, k);k = k*(i - j) / j;/ 每次要打印的下一个数等于前一个数乘以其所在行数和列数的差再除以其列数37 / 47.printf(%3d, k);printf(n);21、约瑟夫#include void main()int n, m, i, s=0;printf (Enter n: m: );scanf(%d%d, &n, &m);for (i=2; i=n; i+) s=(s+m)%i;printf (The winner is %dn, s+1); 22、斐波拉契38 / 47.#includevoid main()long f, f1, f2; int i, n;printf(Enter n : );scanf_s(%d, &n);f1 = 1;f2 = 1;printf(%10d%10d, f1, f2);for (i = 1; i = n; i+)f = f1 + f2;

温馨提示

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

最新文档

评论

0/150

提交评论