欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    C语言复习资料.docx

    • 资源ID:3155211       资源大小:45.20KB        全文页数:35页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言复习资料.docx

    C语言复习资料C语言复习资料 1简单的算术运算和表达式 例3.7强制类型转换: #include <stdio.h> main 2选择控制结构 例5.4多分支控制的条件语句:从键盘任意输入a,b,c的值,编程并计算一元二次方程ax2+bx+c=的根 #include <stdio.h> #include <stdlib.h> #include <math.h> #define EPS 1e-6 main int m = 5; printf("m/2=%dn", m/2); printf("(float)(m/2)=%fn",(float)(m/2; printf("(float)m/2= %fn", (float)m/2); printf("m = %dn", m); float a, b, c, disc, p, q; 1 */ printf("Please enter the coefficients a,b,c:"); scanf("%f,%f,%f", &a, &b, &c); if (fabs(a) <= EPS) /* a=0时,输出"不是二次方程" */ disc = b * b - 4 * a * c; /* 计算判别式 */ p = - b / (2 * a); q = sqrt(fabs(disc) / (2 * a); if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */ else if (disc > EPS) /* 判别式大于0时,输出两不等实根 printf("x1 = x2 = %.2fn", p); printf("It is not a quadratic equation!n"); exit(0); else /* 判别式小于0时,输出两共轭2 printf("x1 = %.2f, x2 = %.2fn", p+q, p-q); 复根 */ printf("x1 = %.2f+%.2fi, ", p, q); printf("x2 = %.2f-%.2fin", p, q); return 0; 3 循环控制结构 例6.1 三种循环语句:前n项和的计算 #include <stdio.h> main int i, n, sum; printf("Input n:"); scanf("%d", &n); sum = 0; /* 累加和变量初始化为0 */ for (i=1; i<=n; i+) printf("sum = %dn", sum); 3 sum = sum + i; /* 做累加运算 */ #include <stdio.h> main #include <stdio.h> main int i, n, sum; printf("Input n:"); scanf("%d", &n); sum = 0; /* 累加和变量初始化为0 */ i = 1; while (i <= n) printf("sum = %dn", sum); sum = sum + i; /* 做累加运算 */ i+; /* 累加计数器加1 */ int i, n, sum; printf("Input n:"); scanf("%d", &n); 4 sum = 0; /* 累加求和变量初始化为0 */ i = 1; do sum = sum + i; /* 做累加运算 */ i+; /* 累加计数器加1 */ while (i <= n); printf("sum = %dn", sum); 例6.4 嵌套循环:前n项阶乘之和 #include <stdio.h> main int i, j, n; long p, sum = 0; /* 累加求和变量sum初始化为0 */ printf("Input n:"); scanf("%d", &n); for (i=1; i<=n; i+) p = 1; /* 每次循环之前都要将累乘求积变量p赋值为1 */ for (j=1; j<=i; j+) 5 sum = sum + p; /* 累加求和 */ p = p * j; /* 累乘求积 */ printf("1!+2!+%d! = %ldn", n, sum); 例6.10 猜数游戏最终版: #include <time.h> #include <stdlib.h> #include <stdio.h> main int magic, guess, counter = 0, ret; char reply; /* 保存用户输入的回答 */ srand(time(NULL); do magic = rand % 100 + 1; do printf("Please guess a magic number:"); ret = scanf("%d", &guess); 6 while (ret != 1) /* 若存在输入错误,则重新输入 */ while (getchar != 'n'); /* 清除输入缓冲区中的非法字符 */ printf("Please guess a magic number:"); ret = scanf("%d", &guess); counter+; if (guess > magic) printf("Wrong!Too big!n"); else if (guess < magic) printf("Wrong!Too small!n"); else printf("Right!n"); while (guess!=magic && counter<10); /*猜不对且未超10次继续猜*/ */ */ 7 printf("counter = %dn", counter); printf("Do you want to continue(Y/N or y/n)?"); /*提示是否继续 scanf(" %c", &reply); /* %c前有一个空格 */ while (reply='Y' | reply='y'); /* 输入Y或y则程序继续 4 函数 例7.4 函数调用 复用:组合数的计算 #include <stdio.h> unsigned long Fact(unsigned int n); int main int m, k; unsigned long p; do printf("Input m,k (m>=k>0):"); scanf("%d,%d", &m, &k); while (m<k|m<=0|k<0); p = Fact(m) / (Fact(k) * Fact(m-k); printf("p = %lun", p); return 0; /* 函数功能:用迭代法计算无符号整型变量n的阶乘 */ unsigned long Fact(unsigned int n) 8 unsigned int i; unsigned long result = 1; for (i=2; i<=n; i+) result *= i; return result; 例7.6 函数的递归调用和递归函数: Fibonacci数列 #include <stdio.h> long Fib(int a); int main int n, i, x; printf("Input n:"); scanf("%d",&n); for (i=1; i<=n; i+) x = Fib(i); /* 调用递归函数Fib计算Fibonacci数列的第n项 */ 9 printf("Fib(%d)=%dn", i, x); return 0; /* 函数功能:用递归法计算Fibonacci数列中的第n项的值 */ long Fib(int n) 5 数组 例8.5 向函数传递一维数组:从键盘输入某班学生某门课的成绩,试编程计算其平均分 #include <stdio.h> #define N 40 int Average(int score, int n); /* Average函数原型 */ void ReadScore(int score, int n); /* ReadScore函数原型 */ int main if (n = 0) return 0; /* 基线情况 */ else if (n = 1) return 1; /* 基线情况 */ else return (Fib(n-1) + Fib(n-2); /* 一般情况 */ int scoreN, aver, n; printf("Input n:"); scanf("%d", &n); ReadScore(score, n); /* 数组名作为函数实参调用函数10 ReadScore */ aver = Average(score, n); /* 数组名作为函数实参调用函数Average */ /* 函数功能: 计算n个学生成绩的平均分 */ int Average(int score, int n) /* Average函数定义 */ /* 函数功能:输入n个学生的某门课成绩 */ void ReadScore(int score, int n) /* ReadScore函数定义 */ printf("Average score is %dn",aver); return 0; int i, sum = 0; for (i=0; i<n; i+) return sum / n; sum += scorei; int i; printf("Input score:"); for (i=0; i<n; i+) 11 scanf("%d", &scorei); 例8.8 交换法排序:从键盘输入某班学生某门课的成绩,当输入为负值时,表示输入结束,试编程将分数按从高到低的顺序进行排序输出。用函数编程实现排序功能 #include <stdio.h> #define N 40 int ReadScore(int score); /* ReadScore函数原型 */ void DataSort(int score, int n); /* DataSort原函数型 */ void PrintScore(int score, int n); /* PrintScore函数原型 */ int main int scoreN, n; n = ReadScore(score); /*调用函数ReadScore输入成绩,返回学生人数*/ */ printf("Total students are %dn", n); DataSort(score, n); /* 调用函数DataSort进行成绩排序 printf("Sorted scores:"); PrintScore(score, n); /* 调用函数Printscore输出成绩排序12 结果 */ /* 函数功能:输入学生某门课的成绩,当输入负值时,结束输入,返回学生人数 */ int ReadScore(int score) /* ReadScore函数定义 */ int i = -1; /* i初始化为-1,可保证循环体内i增1后数组下标从0return 0; 开始 */ /* 函数功能:按交换法将数组score的元素值元素按从高到低排序 */ void DataSort(int score, int n) /* DataSort函数定义 */ do i+; printf("Input score:"); scanf("%d", &scorei); while (scorei >= 0); /* 输入负值时结束成绩输入 */ return i; /* 返回学生人数 */ int i, j, temp; for (i=0; i<n-1; i+) 13 for (j=i+1; j<n; j+) if (scorej > scorei) /* 按数组score的元素值从高到低排序 */ /* 函数功能: 打印学生成绩 */ void PrintScore(int score, int n) /* PrintScore函数定义 */ 14 temp = scorej; scorej = scorei; scorei = temp; int i; for (i=0; i<n; i+) printf("n"); printf("%4d", scorei); 例8.8 选择法排序 #include <stdio.h> #define N 40 int ReadScore(int score); /* ReadScore函数原型 */ void DataSort(int score, int n); /* DataSort原函数型 */ void PrintScore(int score, int n); /* PrintScore函数原型 */ int main int scoreN, n; n = ReadScore(score); /*调用函数ReadScore输入成绩,返回学生人数*/ */ printf("Sorted scores:"); PrintScore(score, n); /* 调用函数Printscore输出成绩排序printf("Total students are %dn", n); DataSort(score, n); /* 调用函数DataSort进行成绩排序 结果 */ /* 函数功能:输入学生某门课的成绩,当输入负值时,结束输入,返回学生人数 */ int ReadScore(int score) /* ReadScore函数定义 */ 15 return 0; int i = -1; /* i初始化为-1,可保证循环体内i增1后数组下标从0开始 */ /* 函数功能:按选择法将数组score的元素值元素按从高到低排序 */ void DataSort(int score, int n) int i, j, k, temp; for (i=0; i<n-1; i+) k = i; for (j=i+1; j<n; j+) if (scorej > scorek) /* 按数组score的元素值从高到低排do i+; printf("Input score:"); scanf("%d", &scorei); while (scorei >= 0); /* 输入负值时结束成绩输入 */ return i; /* 返回学生人数 */ 序 */ 16 k = j; /* 记录最大数下标位置 */ if (k != i) /* 若最大数所在的下标位置不在下标位置i */ /* 函数功能: 打印学生成绩 */ void PrintScore(int score, int n) /* PrintScore函数定义 */ temp = scorek; scorek = scorei; scorei = temp; int i; for (i=0; i<n; i+) printf("n"); 17 printf("%4d", scorei); 例8.9 在上题基础上同时输入学号并一同输出排序 #include <stdio.h> #define N 40 int ReadScore(int score, long num); /*ReadScore函数原型*/ void DataSort(int score, long num, int n); /*DataSort原函数型*/ void PrintScore(int score, long num, int n);/*PrintScore函数原型*/ int main int scoreN, n; long numN; n = ReadScore(score, num); /* 输入成绩和学号,返回学生总数 */ /* 函数功能:输入学生的学号及其某门课成绩,当输入负值时,结束输入,返回学生人数 */ 18 printf("Total students are %dn", n); DataSort(score, num, n); /* 成绩排序 */ printf("Sorted scores:n"); PrintScore(score, num, n); /* 输出成绩排序结果 */ return 0; int ReadScore(int score, long num) /* ReadScore函数定义 */ int i = -1; /* i初始化为-1,可保证循环体内i增1后数组下标从0开始 */ do i+; printf("Input student's ID and score:"); scanf("%ld%d", &numi, &scorei); /* 以长整型格式输入学号 */ while (numi >0 && scorei >= 0); /* 输入负值时结束成绩输入 */ return i; /* 返回学生总数 */ /* 函数功能:按选择法将数组score的元素值按从高到低排序 */ void DataSort(int score, long num, int n) /*DataSort函数定义*/ int i, j, k, temp1; long temp2; for (i=0; i<n-1; i+) k = i; 19 for (j=i+1; j<n; j+) if (scorej > scorek) /* 按数组score的元素值从高到低排序 */ /* 函数功能:打印学生学号和成绩 */ void PrintScore(int score, long num, int n) /*PrintScore函数定义*/ k = j; /* 记录最大数下标位置 */ if (k != i) /* 若最大数不在下标位置i */ /* 交换成绩 */ temp1 = scorek; scorek = scorei; scorei = temp1; /* 交换学号 */ temp2 = numk; numk = numi; numi = temp2; int i; for (i=0; i<n; i+) 20 printf("%10ld%4dn", numi, scorei); /* 以长整型格式打印学号 */ 例8.10 线性查找:从键盘输入某班学生某门课的成绩,同时输入学生的学号,当输入为负值时,表示输入结束,试编程从键盘输入任意一个学号,查找该学生的成绩 #include <stdio.h> #define N 40 int ReadScore(int score, long num); /*ReadScore函数原型*/ void DataSort(int score, long num, int n); /*DataSort原函数型*/ void PrintScore(int score, long num, int n);/*PrintScore函数原型*/ int main int scoreN, n; long numN; n = ReadScore(score, num); /* 输入成绩和学号,返回学生总 数 */ printf("Total students are %dn", n); 21 DataSort(score, num, n); /* 成绩排序 */ printf("Sorted scores:n"); PrintScore(score, num, n); /* 输出成绩排序结果 */ return 0; /* 函数功能:输入学生的学号及其某门课成绩,当输入负值时,结束输入,返回学生人数 */ int ReadScore(int score, long num) /* ReadScore函数定义 */ int i = -1; /* i初始化为-1,可保证循环体内i增1后数组下标从0开始 */ do i+; printf("Input student's ID and score:"); scanf("%ld%d", &numi, &scorei); /* 以长整型格式输入学号 */ while (numi >0 && scorei >= 0); /* 输入负值时结束成绩输入 */ return i; /* 返回学生总数 */ /* 函数功能:按选择法将数组score的元素值按从高到低排序 */ 22 void DataSort(int score, long num, int n) /*DataSort函数定义*/ int i, j, k, temp1; long temp2; for (i=0; i<n-1; i+) k = i; for (j=i+1; j<n; j+) if (scorej > scorek) /* 按数组score的元素值从高到低排序 */ k = j; /* 记录最大数下标位置 */ if (k != i) /* 若最大数不在下标位置i */ /* 交换成绩 */ temp1 = scorek; scorek = scorei; scorei = temp1; /* 交换学号 */ temp2 = numk; numk = numi; numi = temp2; 23 /* 函数功能:打印学生学号和成绩 */ void PrintScore(int score, long num, int n) /*PrintScore函数定义*/ int i; for (i=0; i<n; i+) printf("%10ld%4dn", numi, scorei); /* 以长整型格式打印学号 */ 8.11 折半查找:题目同上 #include <stdio.h> #define N 40 int ReadScore(int score, long num); /*ReadScore函数原型*/ int BinSearch(long num, long x, int n); /*BinSearch函数原型*/ int main int scoreN, n, pos; 24 */ long numN, x; n = ReadScore(score, num); /* 输入成绩和学号,返回学生总数 printf("Total students are %dn", n); printf("Input the searching ID:"); scanf("%ld", &x); /* 以长整型格式从键盘输入待查找的学号x */ pos = BinSearch(num, x, n); /* 查找学号为num的学生 */ if (pos != -1) else /* 若未找到,则打印"未找到"printf("score = %dn", scorepos); /* 若找到,则打印其分数 */ 提示信息*/ /* 函数功能:输入学生的学号及其某门课成绩,当输入负值时,结束输入,返回学生人数 */ int ReadScore(int score, long num) /* ReadScore函数定义 */ 25 return 0; printf("Not found!n"); int i = -1; /*i初始化为-1,循环体内增1后可保证数组下标从0开始*/ */ */ /*按折半查找法查找值为x的数组元素,若找到则返回x在数组中的下标位置,否则返回-1*/ int BinSearch(long num, long x, int n) /*BinSearch函数定义*/ int low=0, high=n-1, mid; /* 区间左端点low置为0,右端点return i; /* 返回学生总数 do i+; printf("Input student's ID and score:"); scanf("%ld%d", &numi, &scorei); while (numi >0 && scorei >= 0); /* 输入负值时结束成绩输入 high置为n-1 */ int pos = -1; /* 若循环结束仍未找到,则返回pos的初始值-1 */ int find = 0; /* 置找到标志变量flag为假 */ while (!find && low <= high)/*若未找到且左端点小于等于右端26 点,则继续查找*/ mid = (high + low) / 2; /* 取数据区间的中点 */ if (x > nummid) low = mid + 1; /* 若x>nummid,则修改区间的左端点 */ */ 例8.12 向函数传递二维数组:某班期末考试科目为数学、英27 else if (x < nummid) high = mid - 1; /* 若x<nummid,则修改区间的右端点 else pos = mid; /* 若找到,则置下标值为mid */ find = 1; /* 置找到标志变量flag为真 */ return pos; 语和物理,有最多不超过40人参加考试。请编程计算:每个学生的总分和平均分;每门课程的总分和平均分 #include <stdio.h> #define STUD_N 40 /* 最多学生人数 */ #define COURSE_N 3 /* 考试科目数 */ void ReadScore(int scoreCOURSE_N, long num, int n); void AverforStud(int scoreCOURSE_N, int sum, float aver, int n); void AverforCourse(int scoreCOURSE_N, int sum, float aver, int n); void Print(int scoreCOURSE_N, long num, int sumS, float averS, int sumC,float averC, int n); int main int scoreSTUD_NCOURSE_N, sumSSTUD_N, sumCSTUD_N, n; long numSTUD_N; float averSSTUD_N, averCSTUD_N; printf("Input the total number of the students(n<=40):"); 28 scanf("%d", &n); /* 输入参加考试的学生人数 */ ReadScore(score, num, n); /* 读入n个学生的学号和成绩 */ AverforStud(score, sumS, averS, n); /* 计算每个学生的总分平均分 */ AverforCourse(score, sumC, averC, n); /* 计算每门课程的总分平均分 */ */ /* 函数功能:输入n个学生的学号及其三门课的成绩 */ void ReadScore(int scoreCOURSE_N, long num, int n) int i, j; printf("Input student's ID and score as: MT EN PH:n"); for (i=0; i<n; i+) /* 对所有学生进行循环 */ scanf("%ld", &numi); /* 以长整型格式输入每个return 0; Print(score, num, sumS, averS, sumC, averC, n); /* 输出学生成绩 学生的学号 */ for (j=0; j<COURSE_N; j+) /* 对所有课程进行循环 */ 29 scanf("%d", &scoreij); /* 输入每个学生的各门课成绩 */ /* 函数功能: 计算每个学生的总分和平均分 */ void AverforStud(int scoreCOURSE_N, int sum, float aver, int n) int i, j; for

    注意事项

    本文(C语言复习资料.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开