C程序设计第三章

合集下载

C语言 第三章 顺序结构程序设计期末测试习题与答案

C语言 第三章 顺序结构程序设计期末测试习题与答案
A.scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
B.scanf(“%dV%dV%d”,&a,&b,&c);
C.scanf(“%d,%d,%d”,&a,&b,&c);
D.scanf(“%2d%3d%4d”,a,b,c);
参考答案:C
5、若int a,b; double x;
以下不合法的scanf函数调用语句是( )。
参考答案:C
17、以下程序段的输出结果是
int a=1234;
printf("a=%2d\n",a);
A.提示出错、无结果
B.a=34
C.a=1234
D.a=12
参考答案:C
18、下列关于printf()函数说法错误的是( )。
A.printf()函数是库函数,必须使用#include命令将其包含进来
printf(" %d %d\n",(++x ,y++),z+2);}
运行该程序的输出结果是( )。
A.4 2
B.33
C.4 3
D.3 4
参考答案:B
24、下列程序的输出结果是( )。
main()
{ double d=3.2; int x ,y ;
x=1.2 ; y=(x+3.8)/5.0;
printf("%d \n", 7.3);}
A.3
B.3.07
C.0
D.3.2
参考答案:C
25、以下程序的输出结果是( )。
main( )
{
inmp;&!b||!c;

C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构

C语言程序设计(第3版)何钦铭 颜 晖 第3章  分支结构

第3章分支结构【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。

解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。

可再给出 x=0和 x=15 时的两种情况。

【练习 3-2】计算符号函数的值:输入一个整数 x,计算并输出下列分段函数sign(x)的值。

-1 x<0y=sign(x)= 0 x=01 x>0解答:#include <stdio.h>int main(void){int x, y;printf("Enter x: " );scanf("%d",&x);if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。

试编写相应程序。

解答:# include <stdio.h>int main(void){int count, i, n;double grade, total;printf("Enter n: ");scanf("%d", &n);total = 0;count = 0;for(i = 1; i <= n; i++){printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade;if(grade >= 60) count++;}printf("Grade average = %.2f\n", total / n);printf("Number of pass = %d\n", count);return 0;}【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

《C语言》教案第三章

《C语言》教案第三章

选择结构程序设计☐3.1 关系和逻辑表达式☐3.2 If 语句和switch 语句☐3.3 选择结构程序设计3.1 关系和逻辑表达式☐关系运算符及其优先次序☐关系表达式☐逻辑运算符及其优先次序☐逻辑表达式关系运算符及其优先次序☐关系运算符⏹种类:< <= == >= > !=⏹结合方向:自左向右⏹优先级别:<<=>>===!=优先级6(高)优先级7(低)例c>a+b //c>(a+b)a>b!=c //(a>b)!=ca==b<c //a==(b<c)a=b>c //a=(b>c)⏹关系表达式的值:是逻辑值“真”或“假”,用1和0表示例int a=3,b=2,c=1,d,f;a>b (a>b)==c b+c<a d=a>bf=a>b>c<>//表达式值1//表达式值1//表达式值0//d=1//f=0语言程序设计第二章数据描C关系表达式<>例若a=0; b=0.5; x=0.3;则a<=x<=b的值为0例5>2>7>8在C中是允许的,值为0例int i=1, j=7,a;a=i+(j%4!=0);则a=2例‘a‟>0 结果为‘A‟>100 结果为1语言程序设计第二章数据描关系表达式例注意区分“=”与“==”int a=0,b=1;if(a=b)printf(“a equal to b”);elseprintf(“a not equal to b”);例应避免对实数作相等或不等的判断如 1.0/3.0*3.0==1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6语言程序设计第二章数据描a b !a !b a&&b a||b 真假真假假假真真3.1.3 逻辑运算符及其优先次序☐逻辑运算符⏹种类:! && ||⏹逻辑运算真值表⏹C 语言中,运算量:0表示“假”,非0表示“真”,运算结果: 0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真语言程序设计第二章数据描! (2)&& (11)|| (12)高低例a<=x && x<=b a>b&&x>y a==b||x==y !a||a>b ●优先级:●结合方向:! :从右向左&& :从左向右|| :从左向右<>// (a<=x) && (x<=b) //(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)言程序设计第二章数据描 3.1.4 逻辑表达式! (2)&& (11)|| (12)高低●优先级:●结合方向:例a=4;b=5;!a a&&b a||b!a||b 4&&0||25>3&&2||8<4-!0…c ‟&&…d ‟<>值为1值为0值为1值为1值为1值为1//(5>3)&&2||(8<(4-(!0))) 值为1言程序设计第二章数据描! :从右向左&& :从左向右|| :从左向右优先级:●结合方向:⏹短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符<>例a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//结果m=0,n=1言程序设计第二章数据描! (2)&& (11)|| (12)高低! :从右向左&& :从左向右|| :从左向右⏹结构化程序设计☐基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)☐结构化程序:由三种基本结构反复嵌套构成的程序叫~☐优点:结构清晰,易读,提高程序设计质量和效率⏹三种基本结构☐顺序结构A B A B流程图N-S图PAB真假PBA 真假选择结构kA1A2AiAnk=k2k=k1k=kn k=ki ......●二分支选择结构●多分支选择结构循环结构●当型循环结构●直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构☐3.2if 语句和switch 语句3.2.1 if 语句的三种形式⏹形式一:▪格式:if(expression)statement▪执行过程:expr statement非0=0例:if (x>y)printf(“%d”,x);exprstatement1statement2非0=0●形式二:◆格式:if (expression)statement1elsestatement2◆执行过程:例:if (x>y) max=x;else max=y;形式三:▪格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3…...[ else statementn ]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0◆执行过程:例:if (salary>1000) index=0.4;else if (salary>800) index=0.3;else if (salary>600) index=0.2;else if (salary>400) index=0.1;else index=0;如:if(a==b&&x==y) printf(“a=b,x=y”);if(3) printf(“OK”);if(…a‟) printf(“%d”,‟a‟);●说明:◆if 后面的表达式类型任意◆语句可以是复合语句◆if(x) ⇔if(x!=0)if(!x) ⇔if(x==0)例考虑下面程序的输出结果: #include <stdio.h>main(){ int x,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y; y=x;elsex++; y++;printf(“%d,%d \n”,x,y);}Compile Error!语句的嵌套: 一般形式:if (expr1)if (expr2) statement1else statement2elseif(expr3) statement3else statement4内嵌if 内嵌ifif (expr1)if (expr2) statement1elsestatement2内嵌ifif (expr1)if (expr2) statement1elsestatement3内嵌if if (expr1)statement1elseif(expr3)statement3elsestatement4内嵌ifif ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...例:if (a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if (a==b){ if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if ~ else 正确配对方法:加{ }例考虑下面程序输出结果:main(){ int x=100,a=10,b=20;int v1=5,v2=0;if(a<b)if(b!=15)结果:-1if(!v1)x=1;elseif(v2) x=10;x=-1;printf(“%d”,x);}条件运算符☐一般形式:表达式1 ? 表达式2 : 表达式3☐执行过程☐功能:相当于条件语句,但不能取代一般if 语句例if (a>b)printf(“%d”,a);else printf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d \n”,b>0?a+b:a -b);expr1取expr2值取expr3值非0=0例(a==b)?‟Y‟:‟N‟(x%2==1)?1:0(x>=0)?x:-x (c>=…a‟ && c<=…z‟)?c -‟a‟+‟A‟:c☐条件运算符可嵌套如x>0?1:(x<0?-1:0)☐优先级: 13☐结合方向:自右向左如a>b?a:c>d?c:d a>b?a:(c>d?c:d)☐expr1、expr2、expr3类型可不同,表达式值取较高的类型<>例x?…a‟:…b‟ //x=0,表达式值为‘b‟; x‡0,表达式值为‘a‟x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5语言程序设计第二章数据描述C3.语句(开关分支语句)一般形式:switch( 表达式){ case E1:语句组1;break;case E2:语句组2;break;…….case En:语句组n;break;[default:语句组;break;]}执行过程:switch 表达式语句组1语句组2语句组n语句组…...E 1 E 2Endefault case说明:●E1,E2,…En是常量表达式,且值必须互不相同●语句标号作用,必须用break跳出●case后可包含多个可执行语句,且不必加{ }●switch可嵌套●多个case可共用一组执行语句如:……case …A‟:case …B‟:case …C‟:printf(“score>60\n”);break;……..例switch(score){ case 5: printf(“Very good!”);case 4: printf(“Good!”);case 3: printf(“Pass!”);case 2: printf(“Fail!”);default : printf(“data error!”);}运行结果:score为5时,输出:Very good! Good! Pass! Fail! data error!例void main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0: a++; break;case 1: b++; break;}case 2: a++;b++; break;case 3: a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=13.3 选择结构程序设计程序举例/*ch4_1.c*/#include <stdio.h>main(){ int x,y;printf("Enter an integer:");scanf("%d",&x);y=x;if(y<0)y= -y;printf("\ninteger:%d--->absolute value:%d\n",x,y);}例求一个数的绝对值运行:Enter an integer:-12integer:-12--->absolute value :12/*ch4_2.c*/#include <stdio.h>main(){ int a,b;printf("Enter integer a:");scanf("%d",&a);printf("Enter integer b:");scanf("%d",&b);if(a==b)printf("a==b\n");elseprintf("a!=b\n");}例输入两个数并判断两数相等否运行:Enter integer a:12↵Enter integer b:12↵a==b 运行:Enter integer a:12↵Enter integer b:9↵a!=b/*ch4_3.c*/#include <stdio.h>main(){ char c;printf("Enter a character:");c=getchar();if(c<0x20) printf("The character is a control character\n");else if(c>='0'&&c<='9') printf("The character is a digit\n");else if(c>='A'&&c<='Z') printf("The character is a capital letter\n");else if(c>='a'&&c<='z') printf("The character is a lower letter\n");else printf("The character is other character\n");}例判断输入字符种类运行:Enter a character :↵The character is a control character 运行:Enter a character :8 ↵The character is a digit 运行:Enter a character :D ↵The character is a capital letter 运行:Enter a character :h ↵The character is a lower letter 运行:Enter a character :F1 ↵The character is other character例输入两数并判断其大小关系/*ch4_4.c*/#include <stdio.h>main(){ int x,y;printf("Enter integer x,y:"); scanf("%d,%d",&x,&y);if(x!=y)if(x>y) printf("X>Y\n");else printf("X<Y\n"); elseprintf("X==Y\n");}运行:Enter integer x,y:12,23↵X<YEnter integer x,y:12,6↵X>YEnter integer x,y:12,12↵X==Y例根据输入字母输出字符串/*ch4_5.c*/#include <stdio.h>main(){ int c;printf("Enter m or n or h or other:");c=getchar();switch(c){ case 'm': printf("\nGood morning!\n");break;case 'n': printf("\nGood night!\n"); break;case 'h': printf("\nHello!\n"); break;default : printf("\n????????\n"); break;}}。

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案C语言程序设计教程第三版习题答案第一章:C语言概述1. 简述C语言的特点。

C语言是一种结构化编程语言,具有高级语言的特点,同时支持底层硬件操作。

其特点包括:简洁、高效、可移植、丰富的运算符、数据结构支持、广泛的库函数等。

2. 什么是编译型语言?编译型语言是指源代码在执行前需要通过编译器转换成机器语言的程序设计语言。

C语言就是一种编译型语言。

第二章:数据类型、运算符和表达式1. 列出C语言的基本数据类型。

C语言的基本数据类型包括:整型(int)、字符型(char)、浮点型(float和double)。

2. 说明赋值运算符的用法。

赋值运算符(=)用于将右侧表达式的值赋给左侧的变量。

例如:`int a = 10;` 将整数值10赋给变量a。

第三章:控制结构1. 什么是条件语句?条件语句用于根据条件的真假来执行不同的代码块。

C语言中的条件语句主要有if语句和switch语句。

2. 循环语句有哪些?C语言中的循环语句主要有for循环、while循环和do-while循环。

第四章:数组和字符串1. 数组的声明和初始化方式。

数组声明的一般形式为:`type arrayName[arraySize];`。

初始化可以使用花括号一次性赋值,如:`int arr[5] = {1, 2, 3, 4, 5};`。

2. 字符串在C语言中的表示方法。

在C语言中,字符串以字符数组的形式存在,以空字符('\0')作为结束标志。

第五章:函数1. 函数的定义和调用。

函数定义的一般形式为:`returnTypefunctionName(parameterList) { /* function body */ }`。

调用函数时,使用其名称和必要的参数。

2. 函数的参数传递方式有哪些?C语言中函数的参数传递方式主要有值传递(pass by value)和引用传递(pass by reference)。

c语言程序设计电子书

c语言程序设计电子书

c语言程序设计电子书C语言程序设计是一门基础且广泛应用的编程语言课程,它以其高效、灵活和强大的功能而著称。

C语言由丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初期于贝尔实验室开发,至今仍是许多系统软件和应用软件的首选语言。

本电子书将从C语言的基本概念、语法结构、数据类型、控制结构、函数、数组、指针、结构体、文件操作等方面进行详细介绍。

第一章:C语言概述C语言是一种过程式编程语言,它支持结构化编程。

C语言的设计哲学是提供一种通用、高效、易于使用的语言,同时保持对硬件的控制。

C 语言广泛应用于操作系统、嵌入式系统、高性能计算等领域。

第二章:C语言环境和基本语法在开始编写C程序之前,需要配置C语言开发环境,如GCC编译器。

C 程序的基本结构包括预处理指令、函数、变量声明和语句。

程序从`main`函数开始执行。

第三章:数据类型和变量C语言提供了多种数据类型,包括整型、浮点型、字符型等。

变量是程序中存储数据的容器,需要先声明后使用。

C语言是静态类型语言,每种变量在使用前必须指定数据类型。

第四章:运算符和表达式C语言提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。

表达式是由变量、常量和运算符组成的组合,用于执行计算。

第五章:控制结构控制结构是程序流程控制的基本构件。

C语言提供了三种基本的控制结构:顺序结构、选择结构(if语句、switch语句)和循环结构(for 循环、while循环、do-while循环)。

第六章:函数函数是C语言中实现代码复用的重要手段。

函数允许将代码组织成独立的块,每个块可以执行特定的任务。

C语言支持函数的定义、声明、调用和递归。

第七章:数组数组是相同数据类型元素的集合。

C语言支持一维数组和多维数组。

数组在内存中是连续存储的,这使得数组操作高效但也需要小心越界问题。

第八章:指针指针是C语言的核心特性之一。

指针变量存储的是另一个变量的内存地址。

C语言课件王曙燕chp3算法和基本程序设计41页PPT

C语言课件王曙燕chp3算法和基本程序设计41页PPT
算法。 求最大公约数一般用辗转相除法 (也称欧几里德算法)求解。
程序及算法
辗转相除法
设m= 35,n= 15,r表示余数。求法如下: (1)35/15( m / n )商2 余5(r=5) ; (2)以n(=15)作m,以r(=5)作n,继续相除;
15/5( m / n)商3 余数为0 (r =0). (3)当余数(r)为0时,此时,n即为两数
一般步骤
设第三个墨水瓶为白色,其交换步骤 如下:
① 将黑瓶中的蓝墨水装入白瓶中; ② 将蓝瓶中的黑墨水装入黑瓶中; ③ 将白瓶中的蓝墨水装入蓝瓶中; ④ 交换结束。
程序及算法
例1-2
问题:给定两个正整数m和n (m≥n),求它们的最大公约数。
算法分析:一个数值运算问题,
它有成熟的算法,在我国古代的 《算书九章》一书中曾记载了这个
C语言程序设计
第三章 算法和基本程序设计
算法的表示
可用自然语言、数学方法、某种计算机语言描述 规范的方法:流程图、结构图、伪代码、PAD图
❖流程图
C语言程序设计
例1:求三个整数的和
第三章 算法和基本程序设计
C语言程序设计
例2:求三个数中最小的那个数
第三章 算法和基本程序设计
main( ) {
float a,b,c,min; scanf(“%f,%f,%f\n”,&a,&b,&c); if (a<b) min=a; else min=b; if (min>c) min=c; printf(“min=%f\n”,min); }
非数值运算
(如资料检索、事务管理、数据 处理等)
程序及算法
例1-1
问题:有黑和蓝两个墨水瓶,但却错把黑 墨水装在了蓝墨水瓶子里,而蓝墨水 错装在黑墨水瓶子里,要求将其互换。

第3章基本结构程序设计主要内容C语言的基本语句、程序


3.2.2
数据的输入输出
输入:指将数据送入计算机 输出:指将计算机处理的结果数据送出保存或显示出来。 ◆C语言中,数据输入/输出是由库函数完成。 ◆使用库函数时,用预编译命令将有关“头文件” 包括到源文件中。 ◆标准输入输出库函数: “stdio.h”文件 ◆源文件开头应有以下预编译命令: #include < stdio.h > #include "stdio.h"
例3.2
依次读入30个学生成绩,输出平均成绩及最高成绩
具体算法描述: s1:0=>I s2:0=>sum,0=>max s3:读入一个学生成绩存入score s4:I+1=>I s5;sum+score=>sum s6:如果score大于max,则score=> max s7:如果I小于30,转移至s3 s8: sum/30=>average s9:打印average,max
3.1.1
算法
1.算法:是解决问题的一系列操作步骤的集合。 例3.1 求解一元二次方程ax2+bx+c=0(a≠0)的两个根。 s1:输入数据 a,b,c s2:求根x1,x2 s3:输出结果 可以将求解算法(s2)进行细化设计如下: s2_1:输入数据 a,b,c s2_2:求判别式d的值,d=b*b-4*a*c s2_3:判断:如果d>=0,则按实根求法计算: x1=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a) 否则,按复根求法计算: 实部 r=-b/(2*a) 虚部 p=±sqrt(-d)/(2*a)
算术运算
2. 逻辑运算符与逻辑表达式
由逻辑运算符连接关系表达式而形成的式子称为逻辑表达式。

C程序设计第三版答案

C程序设计第三版答案1.5请参照本章例题,编写一个C程序,输出以下信息:************Very Goodj!************解:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。

解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。

字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'.3.6写出以下程序的运行结果:#include<stdio.h>void main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母,例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre".请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8例3.6能否改成如下:#include<stdio.h>void main(){int c1,c2;(原为 char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2 ='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下: a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z +x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-78 9.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z); 解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。

C程序设计复习资料(含答案)

C程序设计复习要点第一章概述1.C程序的构成与结构特点2.C程序上机调试过程与流程第二章数据类型、运算量与表达式1.数据类型的种类(基本数据类型和构造数据类型)2.常量的数据类型及其表示(表示方法、存储字节数与表数范围)——整、实、字符、字符串和转义字符3.变量的命名、定义方法与赋初值4.各种表达式及其运算规则——优先级、结合性、类型自动转换与强制转换●算术运算符、表达式及其构造(注意“/”和“%”特殊性)●自增、自减运算符及其简单表达式运算●赋值运算符及其表达式(注意复合赋值运算符的运算方法)●逗号运算符及其表达式第三章流程控制1.赋值语句的一般形式、赋值过程及赋值规则(注意左右数据类型的一致或兼容)2.输入和输出函数的格式、功能及用法(只要求常用的格式控制符d, f, c, s),提醒注意:●格式输出中域宽和小数位数的控制●格式输入与输出中普通字符的原样输入和输出问题●熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()3.关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)4.关系表达式与逻辑表达式的构造(根据已知条件写表达式)5.if语句的三种形式:if …语句、if …else …语句、if 语句的嵌套●if 语句的格式与用法:简单if、嵌套if、并列if●逻辑关系与执行过程●嵌套规则(重点掌握if …else …if …else …if …else)6.switch语句的格式与用法7.*熟练使用if和switch语句阅读和编写较为简单的选择结构程序8.三种循环语句:while() …、do …while()、for()的格式、执行过程及其用法●循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改注意循环期间与结束时循环控制变量的取值问题9.结合例题理解和区别break与continue语句的作用及其用法10.本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等11.*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序第四章复杂数据类型1.一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)2.字符数组的定义、初始化及其引用(字符串输入、输出、存储与处理)3.常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()4.数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等5.*熟练使用数组并结合以上算法阅读和编写较为简单的程序6.指针的概念:指针、指针变量、指针运算(*、&、++、--、+、-)7.变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)8.了解指针数组与二级指针的概念和定义9.*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)10.结构体与共用体的概念、定义与引用(仅限概念)第五章结构化程序设计与应用1.熟悉程序的三种基本结构:顺序、选择和循环2.*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法第六章函数与编译预处理1.掌握函数的定义、声明和调用方法及参数传递方式2.*结合相关例题掌握一般函数和递归函数的定义与使用3.熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期4.了解内部函数与外部函数的定义及调用规则5.掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)6.了解文件包含的作用及其使用场合第七章文件1.了解文件的概念2.熟悉文件打开、关闭及各种与文件读写有关函数的格式与用法特别提醒:以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现3ae bc C语言程序设计参考题型说明:★本题仅反映考试的题型,作为考前复习参考。

C语言程序设计练习题第3部分答案

C程序设计语言练习题第三部分63.已知:int x; 则下面说明指针变量pb的语句是正确的。

A) int pb=&x; B)int *pb=x; C)int *pb=&x D)*pb=*x;64.有如下程序段:int *p,a,b=1;p=&a;*p=10;a=*p+b;执行该程序段后,a值是。

A) 12 B) 11 C) 10 D) 编译出错65.若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是。

A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;66.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为______。

A) *&p B) *p C) p[0] D) *&a67.已知static int a[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__。

A) *(a+1)B) a[1]+2 C) a[1]+3 D) a[0][0]68.已知int a[3][4],*p=*a; p+=6;那么*p和______的值相同。

A) *(a+6) B) *(&a[0]+6) C) *(a[1]+2)D) *(&a[0][0]+6)69.已知说明int (*p)[M]; 其中p是______。

A) M个指向整型变量的指针B) 指向M个整型变量的函数指针C) 一个指向具有M个整型元素的一维数组的指针D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量70.若有定义和语句:int c[4][5], (*cp)[5]; cp=c;则对c数组元素的引用正确的是哪个?A)cp+1 B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)71.设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是__________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.存款利息的计算。有1000元,想存5年,可按下列5种方法存:(P38)
(1)一次存5年;
(2)先存2年期,到期后将本息再存3年期;
(3)先存3年期,到期后将本息再存2年期;
(4)存期1年期,到期后将本息再存1年期,连续存5次;
(5)存活期存款。活期利息每一季度结算一次。
#include
#include
int main()
{
float r0=0.0072, r1=0.0414, r2=0.0468, r3=0.054, r5=0.0585,
p0=1000,p, p1, p2, p3, p5;;
p5=p0*(1+5*r5); //一次存5年;
p2=(p0*(1+2*r2))*(1+3*r3); //先存2年期,到期后将本息
再存3年期;
p3=(p0*(1+3*r3))*(1+2*r2); //先存3年期,到期后将本息再
存2年期;
p1=p0*pow(1+r1,5); //存期1年期,到期后将本息
再存1年期,连续存5次;
p=p0*pow(1+r0/4,20); //存活期存款。活期利息每一季
度结算一次。
printf("p=%f\n, p1=%f\n, p2=%f\n, p3=%f\n, p5=%f\n",p, p1, p2, p3,
p5);
return 0;
}

4.
#include
int main()
{ char c1,c2;
c1=97;
c2=98;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
(1)运行时会输出什么信息?为什么?
(2)如果将程序第4,5行改为
c1=197;
c2=198;
运行时会输出什么信息?为什么?

(3)如果将程序第3行改为
int c1, c2
运行时会输出什么信息?为什么?
5.用下面的 scanf 函数输入下列数据a=3, b=7, x=8.5, y=71.82, c1=
`A`, c2=`a`。使问在键盘上如何输入?
#include
int main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %f",&x,&y);
scanf("%c %c",&c1,&c2);
return 0;
}
敲A,a时不能在之前敲enter键,否则就:
正确结果:
6.
请编程序将“China“译成密码,密码规律是:用
原来的字母后面4个字母代替原来的字母。例如:字母“A”后
面第四个字母是“E”,用“E”代替“A”.因此,“China”应译
为“Glmre”。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5
这5个变量的值分别为‘C’‘h’‘i’‘n’‘a’,经过运算,使
c1,c2,c3,c4,c5 分别变为‘G’‘h’‘m’‘r’‘e’。分别用putchar
函数和printf函数输出这5个字符
#include
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("password is %d%d%d%d%d\n",c1,c2,c3,c4,c5);
return 0;
}
7.
设圆半径r=1.5,圆柱高h=3,求圆周长,圆表面积,圆球体
积,圆柱体积。用scanf输入数据,输出时要求有文字说明,取
小数点后2位数字。请编程序
#include
int main()
{
float r,h,c,s,S,V,SV;
float pi=3.141592;
r=1.5;
h=3;
c=2*pi*r; //圆周长
s=pi*r*r; //圆面积
S=4*pi*r*r; //圆球表面积
V=3/4*pi*r*r; //圆球体积
SV=pi*r*r*h; //圆柱体积
printf("c=%6.2f\ns=%6.2f\nS=%6.2f\nV=%6.2f\nSV=%6.2f\n");
return 0;
}

8.编程序,用函数getchar读入两个字符给c1和c2,然后分别用函数
putchar和函数printf输出这两个字符。思考以下问题:
#include
int main()
{
char c1,c2;
printf("输入两个字符c1,c2:\n");
c1=getchar();
c2=getchar();
printf("用putchar语句输出结果为:\n");
putchar(c1);
putchar(c2);
printf("用printf语句输出结果为:\n");
printf("%c%c\n",c1,c2);
return 0;
}
(1)变量和应定义为字符型还是整型?或二者皆可?
(2)要求输出c1和c2值的ASCII码,应如何处理?用函数putchar
还是函数printf?
printf("%d%d\n",c1,c2);

(3)整型变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2

int c1,c2
是否无条件等价?
(不懂)
3.写出下面各逻辑表达式的值。设a=3, b=4, c=5.
(1)a + b>c & & b = =c
a + b>c真 1;
b = = c 假 0;
1& &0 假 0;
所以表达式结果为假0。
(2)a‖b + c & & b – c
b + c为9;
b – c为-1;
3‖9 & & -1;
所以表达式结果为真1。
(3)!(a >b)& &!c‖1
a >b 假 0;
!0 真 1;
!c‖1
(4)!(ⅹ=a)& &(y=b)& & 0
!3& &4& & 0;
所以表达式结果为假0。
(5)!(a + b)+c--1 & & b + c/2
!7 + 5 – 1 & & 4+5/2;
所以表达式结果为真1

相关文档
最新文档