计算概论课件:第八讲 C语言编程基础2_第1页
计算概论课件:第八讲 C语言编程基础2_第2页
计算概论课件:第八讲 C语言编程基础2_第3页
计算概论课件:第八讲 C语言编程基础2_第4页
计算概论课件:第八讲 C语言编程基础2_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

第八讲

C语言编程基础(第二部分)北京大学

信息科学技术学院2013年11月C语言中的几种

变量类型字符型变量整型变量浮点型变量字符型变量用于存放

字符C语言语法规则:

字符型变量

对应的关键字是

char如何在C程序中

声明一个或多个字符型变量?

int

main(

){

return

0;

}chara;charb,c,d;声明一个变量名为a的字符型变量声明三个字符型变量;其变量名分别为b,c,d如何

给一个字符型变量赋予一个特定的值?基本方法:通过

赋值语句

int

main(

){charb,c,d;

return

0;

}b=‘x’;c=b;d=120;如何

将一个字符型变量的值输出到控制台?通过

标准输出函数printf将一个变量名为x的字符型变量的值输出到控制台的一种方式:

printf(“%c”,x);如何

给一个字符型变量赋予一个特定的值?基本方法:通过

赋值语句int

main(

){charb,c,d;

b=‘x’;c=b;d=120;

printf(“b=%c\n”,b);

printf(“c=%c\n”,c);

printf(“d=%c\n”,d);

return

0;}如何

从控制台接收用户输入的一个字符值?通过

标准输入函数scanfcharx;

scanf(“%c”,&x);请一位同学上台,编写一个程序;

要求:1.接收用户输入的两个字符;2.将这两个字符分别放在个字符变量中;3.将这两个变量的值输出到控制台;4.只能调用一次scanf函数;charx;

scanf(“%c”,&x);charx,y;

scanf(“%c%c”,&x,&y);charx,y;

scanf(“%c%c”,&x,&y);在用户输入

一个字符

后,把用户输入的

下一个字符

存放到

变量y中。在用户输入一个字符后,忽略用户接下来输入的连续空格字符;直到用户输入一个非空格字符,才把这个非空格字符存放到变量y中。C程序中的

三种

控制结构顺序结构分支结构循环结构顺序结构顺序结构#include<stdio.h>intmain(){

a=5; inta; printf("%d\n",a); return0;}#include<stdio.h>intmain(){ inta; a=5; printf("%d\n",a); return0;}✕✓#include<stdio.h>intmain(){ inta; a=4; a=5; printf("%d\n",a); return0;}#include<stdio.h>intmain(){ inta; a=4;

printf("%d\n",a); a=5; return0;}这两个程序的输出值是什么?54分支结构分支结构根据

分支判断表达式

值(真或假),决定程序的后继执行路线分支判断表达式分支1分支2真假单分支结构

if(表达式){…//分支1

}任何类型为int,double或float的表达式如果

表达式

真,

则执行

分支1中的语句;否则,

跳过

分支1中的语句。#include<stdio.h>intmain(){

inta;

scanf(“%d”,&a); if(a<0){

a=-a; }

printf("%d\n",a); return0;}这个程序的效果是什么?接收用户输入的一个整数输出这个整数的绝对值。双分支结构

if(表达式){…//分支1

}else{…//分支2

}如果

表达式

真,

则执行

分支1中的语句;否则,

执行

分支2中的语句。intmain(){

inta;

scanf(“%d”,&a); if(a<0){

a=-a; }else{

a+=2; }

printf("%d\n",a); return0;}这个程序的效果是什么?intmain(){

inta;

scanf(“%d”,&a); if(a==1||a==3||a==5){

printf(“NO”); }else{ printf(“YES”); } return0;}多分支结构

if(表达式1){…//分支1

}elseif(表达式2){…//分支2

}……{ ……}elseif(表达式n){…//分支n}如果

表达式1

真,

则执行

分支1中的语句;否则如果

表达式2

真,

则执行

分支2中的语句;……否则如果表达式n

真,

则执行

分支n

中的语句。intmain(){

inta,b;

scanf(“%d%d”,&a,&b); if(a>b){

printf("%d\n",a); }else{

printf("%d\n",b); } return0;}这个程序的效果是什么?课堂练习练习1:接收用户输入的3个数字,输出其中的最小值程序输入3个数字程序输出3个数字中的最小值课堂参与请一位同学上台,编写上述程序课堂参与练习2:判断一个整数能否被7整除程序输入一个整数程序输出如果这个整数能被7整除,输出字符串true;否则,输出字符串false;请一位同学上台,编写上述程序练习3:判断一个整数的某个数位上是否存在数字7问题描述给定一个4位整数,判断这个数字的个位数、十位数、百位数和千位数这4个数字中是否存在数字7程序输入一个4位整数程序输出如果某个数位上的数字是7,输出字符串true否则,输出字符串false课堂参与请一位同学上台,编写上述程序练习4:判断某一年是否是闰年程序输入一个表示年份的整数(如,2012)程序输出如果这个年份是闰年,程序输出true;否则,程序输出false;闰年的充分必要条件是:“年份能被400整除”或者“年份能被4整除,但不能被100整除”课堂参与请一位同学上台,编写上述程序两个常用函数

平方根函数XY函数平方根函数C标准库函数

sqrt:

double

sqrt(doublex);注意

#include<math.h>平方根函数

示例#include<stdio.h>#include<math.h>

intmain(){ doubled; doubler; scanf(“%lf”,&d);

r=sqrt(d); printf(“%lf\n”,r); return0;

}XY函数C标准库函数

pow:

double

pow(doublex,doubley);注意

#include<math.h>XY函数

示例#include<stdio.h>#include<math.h>

intmain(){ doublex,y; doubler; scanf(“%lf%lf”,&x,&y);

r=pow(x,y); printf(“%lf\n”,r); return0;

}C程序中的

三种

控制结构1.顺序结构2.分支结构3.循环结构循环结构循环条件

循环体循环结构:while(…){…}

while(表达式){…//循环体

}任何类型为int,double或float的表达式#include<stdio.h>intmain(){ intresult=0;

inti=1;

while(i<=100){ result+=i; i++; } printf("%d\n",result); return0;}while(){}示例这个程序的效果是什么?计算1+2+3+…+100的值#include<stdio.h>intmain(){ intresult=0;

inti=1;

while(i<=100){ result+=i; i+=2; } printf("%d\n",result); return0;}while(){}示例这个程序的效果是什么?计算1+3+5+…+99的值while(){}示例intmain(){

intresult=0;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num); result+=num;

i++; }

printf("%d\n",result); return0;}计算用户输入的10个数字的和这个程序的效果是什么?while(){}示例intmain(){ intresult=0; intnum;

inti=1; while(i<=10){ scanf(“%d”,&num);

if(i==1){ result=num;

}else{

if(num>result){ result=num;

}

} i++; } printf("%d\n",result); return0;}计算用户输入的10个数中的最大值这个程序的效果是什么?0123456789101112131415intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult17720123456789101112131415intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult177263intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}0123456789101112131415inumresult177263-440123456789101112131415intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-44950123456789101112131415intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-4495012345678910111213141518186intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-4495012345678910111213141518186147intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-449501234567891011121314151818614722228intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-449501234567891011121314151818614722228-109intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-449501234567891011121314151818614722228-109292910intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-449501234567891011121314151818614722228-10929291025intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}inumresult1772693-449501234567891011121314151818614722228-1092929102511intmain(){

intresult;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){

result=num;

}else{

if(num>result){

result=num;

}

}

i++; }

printf(“%d\n”,result);return0;}请一位同学上台,编写一个程序;要求:在控制台输出

1-100之间能被6或者7整除的

所有数的和提示:

1.while循环结构 2.分支结构循环结构:for(…){…}for(){}是

表示

循环结构

一种

简洁形式任何

while(){}循环

都可以改写为

for(){}循环for语句

while语句

对应关系for(表达式1;表达式2;表达式3){

循环体语句;

}for语句

一般形式表达式1;表达式2循环体语句;表达式3;真假入口出口表达式1;表达式2循环体语句;表达式3;真假入口出口

表达式1;while(表达式2){

循环体语句;

表达式3;

}for(表达式1;表达式2;表达式3){

循环体语句;

}#include<stdio.h>intmain(){ intresult=0;

inti=1; while(i<=100){ result+=i; i++; } printf("%d\n",result); return0;}for(inti=1;i<=100;i++){

result+=i;}循环变量初始化循环条件循环变量操作#include<stdio.h>intmain(){ intresult=0;

inti=1; while(i<=100){ result+=i; i++; } printf("%d\n",result); return0;}#include<stdio.h>intmain(){ intresult=0;

inti; i=1; while(i<=100){ result+=i; i++; } printf("%d\n",result); return0;}for(i=1;i<=100;i++){

result+=i;}#include<stdio.h>intmain(){ intresult=0;

inti=1;

while(i<=100){ result+=i; i+=2; } printf("%d\n",result); return0;}for(inti=1;i<=100;i+=2){

result+=i;}intmain(){

intresult=0;

int

num;

int

i=1; while(i<=10){

scanf(“%d”,&num);

if(i==1){ result=num;

}else{

if(num>result){ result=num;

}

}

i++; }for(int

i=1;i<=10;i++){

scanf(“%d”,&num);

if(i==1){ result=num;

}else{

if(num>result){ result=num;

}

}}循环结构

中的

break;

语句#include<stdio.h>intmain(){

inti,num; scanf(“%d”,&num);

for(i=2;i<=num;i++){ if(num%i==0){

break; } }

printf(“%d\n”,i); return0;}跳转到:

所在循环结构

下一条语句当用户输入了一个大于1的正整数,这个程序的效果是什么?大于1的正整数

最小的非1约数接收从控制台输出的两个整数

(假设是两个正整数)输出这两个数的最大公约数求两个正整数的最大公约数#include<stdio.h>intmain(){ inta,b,result; scanf("%d%d",&a,&b); result=a; while(1){ if((a%result==0)&&(b%result==0)){ break; } result--; } printf("%d\n",result); return0;}请一位同学上台,编写一个程序;要求:接收从控制台输出的两个整数

(假设是两个正整数)输出这两个数的最小公倍数#include<stdio.h>intmain(){ inta,b,result; scanf("%d%d",&a,&b); result=a; while(1){ if((result%a==0)&&(result%b==0)){ break; } result++; } printf("%d\n",result); return0;}循环结构

中的

continue;

语句#include<stdio.h>intmain(){ intresult=0;

inti=1;

while(i<=100){ result+=i; i+=2; } printf("%d\n",result); return0;}计算1+3+5+…+99的值intmain(){ intresult=0;

inti=1;

while(i<=100){ if(i%2==0){ i++;

continue; }

result+=i; i++; } printf("%d\n",result); return0;}跳转到:

所在循环结构

条件判断语句运算符号算术运算符关系运算符号逻辑运算符号3>2+1||5+3<4*2&&15+1

这个表达式的值是多少?运算符号的优先级请课后自己学习!(见书243页)建议:

尽量使用括号,

显式控制运算顺序运算符号的优先级3+2*4在不知道“先加减、后乘除”的情况下,

如何控制运算顺序呢?(3+2)

*43+

(2*4)强制数据类型转换#include<stdio.h>intmain(){ doublep;

intc;

scanf(“%lf”,&p);

c=5/p;

printf(“%d”,c); return0;}#include<stdio.h>intmain()

温馨提示

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

评论

0/150

提交评论