




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自增、自减运算符,自增、自减运算符的作用是使变量的值增1或减1 自增运算符:+ i+ 等价于 i = i + 1 或 i += 1 +i 等价于 i = i + 1 或 i += 1 自减运算符:-,6,4,自增、自减运算符的使用,自增、自减运算符的使用 例如:若i的值为1 表达式“j = +i”的值是什么? 表达式“j = i+”的值是什么?,自增、自减运算符的使用,a+ * b 得 6,3,a,自增、自减运算符的使用 例如:int a=3,b=2,c; 执行“c = +a * b”之后a、b、c的值? 执行“c = a+ * b”之后a、b、c的值?,2,b,c,+a * b 得 8,自增、自减运算符的副作用,表达式中过度使用自增、自减运算符会带来副作用,容易产生歧义 例如:若i的值为1,j的值为2,表达式“i+j”的值是什么? 例如:若i的初值为1,i+i+i+等于多少?,处理循环计算需要明确的三个问题: 循环体:哪些运算(动作)是需要重复进行的。 循环条件:重复这些运算的条件是什么,即在什么情况下终止/继续这个重复的过程。 循环准备:在进行重复的运算处理之前,需要进行的初始处理是什么。 剩下的问题就是选用合适的语句表达一个循环计算过程了,循环计算过程的要点,阅读程序,加密:将消息中每个字母变成其后的第四个字母,即A变成E,a变成e,最后的W变成A,X变成B。,#include main( ) char c; while ( (c = getchar( ) != n ) if ( (c = a ,阅读程序1,#include #include int main( ) int i, n = 1; for( i = 1; i=20; i+ ) n = n * i; printf(“%dn”,n); system(“pause”); return 0; ,阅读程序2,#include #include main() float a, x1, x2; printf(“input value for a:“); scanf(“%f“, ,TC2.0,百钱百鸡问题,中国古代数学家张丘建在他的算经中曾提出著名的“百钱百鸡问题”,其题目如下: 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?,百钱百鸡问题,解:设i、j、k分别代表公鸡、母鸡、小鸡的数量,根据题意列方程:,根据题意可知,i、j、k的范围一定是0到100的正整数,那么,最简单的解题方法是:穷举i、j、k每一种可能的取值组合,直接代入方程组,若满足该方程组则是一组解。这样即可得到问题的全部解。,百钱百鸡问题,i 0,i 20?,买母鸡和 小鸡,开始,结束,i i + 1,i = 0; while (i 20 ) i+; , int i, j, k; /*i、j、k分别表示公鸡、母鸡和小鸡的数目*/ ,j = 0; while (j 34) j+; ,k = 0; while ( k 100) if ( i + j + k = 100 ,百钱百鸡问题-1,for(i = 0; i 20; i+ ) /*设定公鸡的数目*/ ,int main( ) int i, j, k; /*i、j、k分别表示公鸡、母鸡和小鸡的数目*/ return 0; ,for(j = 0; j 34; j+) /*设定母鸡的数目*/ ,for(k = 0; k 100; k+) /*设定小鸡的数目*/ if ( i + j + k = 100 ,百钱百鸡问题(for),for(i = 0; i 20; i+ ) /*设定公鸡的数目*/ ,int main( ) int i, j, k; /*i、j、k分别表示公鸡、母鸡和小鸡的数目*/ return 0; ,for(j = 0; j 34; j+) /*设定母鸡的数目*/ ,k = 100 i j ; if (i*15 + j*9 + k = 300) printf(“%d %d %dn“, i, j, k);,百钱百鸡问题(for续),整数的位数,给一个不多于五位数的正整数,要求: 求出它是几位数 分别打印出每一位数 按逆序打印出各位数字,整数的位数(续),用if语句求整数x的位数,if ( x 9999) digits = 5; else if ( x 999 ) digits = 4; else if ( x 99 ) digits = 3; else if ( x 9 ) digits = 2; else digits = 1;,整数的位数(续),求整数x的各位数字,one = x % 10; /*求x的个位数字*/ ten = (x / 10) % 10; /*求x的十位数字*/ hund = (x / 100) % 10; /*求x的百位数字*/ thou = ( x / 1000) % 10; /*求x的千位数字*/ ten_thou = (x / 10000) % 10; /*求x的万位数字*/,整数的位数(循环语句),用循环语句求正整数x的位数,k = 0; /*k用于记录x的位数*/ do x = x / 10; +k; while (x 0);,注意: 当循环结束的时候,x的值等于0。,k = 1; /*k用于记录x的位数*/ while (x 9) x = x / 10; +k; ,整数逆序输出,逆序输出正整数x的各位数字,k = 0; /* k用于记录x的位数*/ do printf(“%d“, x % 10); x = x / 10; +k; while (x 0);,k = 0; /* k用于记录x的位数*/ y = 0; /*用于保存x的逆置值*/ do y = y * 10 + x % 10; x = x / 10; +k; while (x 0); printf(“%d“,y);,另一个例子,若有下述计算关系,试编写程序求数字A、B、C、D的值。,int A=1, B, C, D; for(B=0; B=9; B+) for(C=0; C=9; C+) for(D=0; D=9;D+) if (A*1000+B*100+C*10+D)*9 = (D*1000+C*100+B*10+A) printf(“%d%d%d%d”,A,B,C,D);,十进制整数转换为二进制整数,给定一个十进制整数n,编写程序计算其二进制表示形式并输出。,(43)10 ?,被除数,除数,商,余数,43,2,21,1,被除数,除数,商,余数,21,43,2,21,1,2,10,1,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,5,2,2,1,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,5,2,2,1,2,2,1,0,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,5,2,2,1,2,2,1,0,1,2,0,1,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,5,2,2,1,2,2,1,0,1,2,0,1,0,被除数,除数,商,余数,21,43,2,21,1,2,10,1,10,2,5,0,5,2,2,1,2,2,1,0,1,2,0,1,0,十进制整数转换为二进制整数,给定一个十进制整数n,编写程序计算其二进制表示形式并输出。,(43)10 (101011)2,/*十进制数n转换为二进制数输出*/ while (n != 0) printf(“%d“, n % 2); n = n / 2; ,换零钱,已知有10元、5元、2元、1元等零币,现需将一张100元大钞换零,问: 有几种换法? 如何换?,换零钱(续),解:设i、j、k、l分别代表100元零钞中10元、5元、2元、1元币的数量,根据题意列方程:,根据题意可知,i、j、k、l的范围分别为:010、020、050、0100,那么,最简单的解题方法是:穷举i、j、k、l每一种可能的取值组合,直接代入方程,若满足该方程则是一个解。这样即可得到问题的全部解。,for(i = 0; i = 10; i+ ) ,main( ) int i, j, k, l; /*i、j、k、l分别表示10元、5元、2元、1元币的数目*/ ,for(j = 0; j = 20; j+) ,for(k = 0; k = 50; k+) ,换零钱(续),for(l = 0; l = 100; l+) if ( 10*i + 5*j +2*k + l = 100) printf(“%d %d %d %dn“,i, j, k, l); ,for(i = 0; i = 10; i+ ),main( ) int i, j, k, l; long count = 0; ,for(j = 0; j = 20; j+),for(k = 0; k = 50; k+),换零钱(续),for(l = 0; l = 100; l+) if ( 10*i + 5*j +2*k + l = 100) printf(“%d %d %d %dn“,i, j, k, l); count+; ,完数,一个数如果恰好等于它的因子之和,则称其为完数。编写程序找出1000之内的所有完数。例如,6是完数(6 = 1 + 2 + 3)。,对21000内的每个整数n,找出其所有因子(不包括自身),并求其因子之和。,查找正整数n的所有因子之和,for(n = 2; n 1000; n+ ) ,/*计算正整数n的所有因子之和*/ s = 0; for(k = 1; k = n / 2 ; k+) if ( n % k = 0) s += k;,if ( s = n) printf(“%d is a perfect number.n“,n);,重新查找正整数n的所有因子,for(n = 2; n 1000; n+ ) ,s = 0; /*计算正整数n的所有因子之和*/ for(k = 1; k = n / 2 ; k+) if ( n % k = 0) s += k;,if ( s = n) printf(“%d Its factors are “,n); for(k = 1; k = n /2; k+) /*输出n的所有因子*/ if (n % k = 0) printf(“%d,“, k); printf(“%c n“, 8); ,从键盘输入一个字符序列,若其中包含有数字,则将其按照权位降低的次序转换为数值输出。例如,从输入的串 dsf6%2?0d.43s 中提取出数值62043。,练习1:从字符序列中取数,62043 = 6*104 + 2*103 + 0*102 + 4*101 + 3 = (0*10 + 6 )*10 + 2)*10 + 0)*10 + 4)*10 + 3,从字符序列中取数,double k; char ch;,k = 0; ch = getchar(); while (ch != n) if ( ch = 0 ,从字符序列中取数,double k; char ch; printf(“input characters:n“); k = 0; ch = getchar(); while (ch != n) if ( ch = 0 ,while (ch = getchar() != n) if ( ch = 0 /*end of if */ /*end of while */,练习2:求自然对数底的近似值,求自然对数底的近似值,当 时,把等号右端的和作为e的近似值,其公式为:,编制程序,利用下式计算ucosx的近似值,直到最后一项的绝对值小于10-6.,练习3:求余弦函数,double u, x, cosx; int n; printf(“input value for x(double):“); scanf(“%lf“,cosx = 1; n = 1; u = 1; while (fabs(u)1.0e-6) u = u*x*x / (2*n*(2*n-1); u = -u; cosx = cosx + u; printf(“%5d%30.10lf%20.10lfn“,n,u,cosx); n = n + 1; printf(“n“); printf(“user:cos%.4lf=%.10lfn“, x, cosx); printf(“ sys:cos(%.4lf)=%.10lfn“, x, cos(x);,x1 = x; x = x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多重耐药菌医院感染控制试题(附参考答案)
- 2025年幼儿园建构专项室活动方案计划
- 2025年嵌入式系统工程师面试题集与解析
- 顺德职业技术学院《小学教师基本功小学教师口语基础》2024-2025学年第一学期期末试卷
- 2025年高级物联网技术面试题集硬件与软件方向
- 湖南工业职业技术学院《三维立体设计》2024-2025学年第一学期期末试卷
- 2025年电子商务行业人才招聘笔试模拟题集
- 2025年电力自动化技术专业模拟题集与答案详解
- 2025年建筑装饰设计师高级专业能力提升题库
- 2025年建筑工程师初级职称考试冲刺预测题集
- GB/T 14153-1993硬质塑料落锤冲击试验方法通则
- (完整版)人教版八年级下册《道德与法治》期末测试卷及答案【新版】
- 并购贷款业务培训
- 北京大学人民医院-医疗知情同意书汇编
- 档案管理员述职报告9篇
- 建设集团有限公司安全生产管理制度汇编
- 牙体牙髓病最全课件
- 交通信号控制系统检验批质量验收记录表
- 疫苗运输温度记录表
- 各国钢材-合金牌号对照表
- 医院定岗定编要点
评论
0/150
提交评论