资源描述
第一章数据类型与表达式
一.知识点
1.C语言的特点:①语言简洁、紧凑,使用方便、灵活;②运算符丰富;
③数据结构丰富;④具有结构化控制语句;
⑤语法限制不太严格,程序设计自由度大;
⑥可以进展位操作,能实现汇编语言的大局部功能,能直接对硬件进展操作;
⑦生成的目标代码质量高,程序执行效率高;⑧程序的移植性好。
2.C程序的组成:
⑴C程序是由函数构成的;
⑵一个函数包括函数的首部〔即函数的第一行〕和函数体〔即花括号局部〕;
⑶函数体一般包括声明局部和执行局部;
⑷一个C程序总是从main函数开场执行,从main函数完毕;
⑸C程序书写格式自由,一行可以写几个语句,一个语句可以分写在多行上;
⑹每个语句和数据定义的最后必须有一个分号;
⑺C语言本身没有输入输出语句,是通过函数实现输入输出的;
⑻可以用/*……*/对C程序的任何局部作注释。
3.C语言程序的运行:源程序文件的扩展名为.c,目标程序文件的扩展名为.obj,可执行程序文件的扩展名为.exe。
4.C的数据类型:根本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef。
5.常量与变量的概念,注意符号常量的定义与使用;
6.整型、实型、字符型常量的表示,注意整型常量的十进制、八进制、十六进制的书写。
7.变量的定义,C的标识符包括关键字、预定义标识符、用户定义标识符;用户定义标识符的可用字符为字母、数字、下划线,第一个字符为字母或下划线。
8.常见数据类型的取值围,int为-32768~+32767,unsigned int为0~65535。
9.转义字符:\n、\t、\b、\r、\f、\\、\’、\〞、\ddd、\xhh
10.不同数值型数据的混合运算,低级类型转换为高级类型运算
11.C的运算符:注意结合方向和运算的优先级
12.算术运算符:+、-、*、/、%、++、--,注意自加、减运算符分前缀和后缀两种方式。其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%要求运算量为整数,运算结果也为整数。注意除运算时,假设运算量为整型时,其运算结果也是整型的规那么。
13.赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据类型的转换。
14.逗号运算符的使用,注意逗号运算符的运算规那么。
二.练习
㈠.填空题:
1.在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。
2.C语言源程序文件的后缀是.c ,经过编译后,生成文件的后缀是.obj,经过连接后,生成文件的后缀是.exe 。
3.结构化程序由顺序、选择〔分支〕、循环三种根本结构组成。
4.假设k为整型变量且赋值11。请写出运算k++后表达式的值11和变量的值12。
5.假设x为double型变量,运算x=3.2,++x后表达式的值4.2 和变量的值4.2。
6.函数体由符号{开场,用符号}完毕。函数体的前面是定义局部,其后是执行局部。
7.C语言中的标识符可分为关键字、用户标识符和预定义标识符三类。
8.在C语言程序中,用关键字int定义根本整型变量,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量。
9.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1.0,a2=1.0;。
10.C程序中定义的变量,代表存中的一个存储空间。
11.表达式3.5+1/2的计算结果是3.5。
12.写出数学表达式三个等价的C语言表达式a*b/(c*d)、a /(c*d)*b、b/(c*d)*a。
13.通常一个字节包含8个二进制位。
14.当计算机用两个字节存放一个整数时,能存放的最大〔十进制〕整数是216-1(65535)、最小〔十进制〕整数是-215(-32768)。
15.在C语言中整数可用十进制数、八进制数和十六进制数三种数制表示。
16.C语言中,int型数据占2个字节,long型数据占4个字节,unsigned int型数据占2个字节,short型数据占 2个字节, float型数据占4个字节,double型数据占8个字节,char型数据占1个字节。
㈡.选择题:
1.组成C语言程序的是〔〕〔C〕。
A.子程序 B.过程 C.函数 D.主程序和子程序
2.以下表达中正确的选项是〔〕(C)。
A.在C程序中无论是整数还是实数,只要在允许的围都能准确无误的表示。
B.C程序由主函数组成。
C.C程序由函数组成。
D.C程序由函数和过程组成。
3.以下选项中正确的整型常量是〔〕(B)。
A.12. B.-20 C.1,000 D.4 5 6
4.以下选项中正确的实型常量是〔〕(D)。
A.0 B.3. 1415 C.0.329╳102 D..871
5.以下选项中不合法的用户标识符是〔〕(C)。
A._123 B.printf C.A$ D.Dim
6.C语言中运算对象必须是整型的运算符是〔〕(A)。
A.% B./ C.! D.*
7.可在C程序中用作用户标识符的一组标识符是〔〕(B)。
A.void B.as_b3 C.For D.2c
define _123 -abc DO
WORD If case SIG
8.假设变量已正确定义并赋值,符合C语言语法的表达式是〔〕(B)。
A.a=a+7; B.a=7+b+c,a++ C.int〔12.3%4〕 D.a=a+7=c+b
9.不合法的八进制数是〔〕(B)。
A.0 B.028 C.077 D.01
10.不合法的十六进制数是〔〕(A)(零X)。
A.oxff B.0Xabc C.0x11 D.0x19
㈢.程序设计题:
1.编写一个C程序,输入a、b、c三个数,输出其中最大者。
#include<stdio.h>
void main()
{int a,b,c,max;
printf(“input 3 num:\n〞);
scanf(“%d%d%d〞,&a,&b,&c);
max=a;
if(b>max)max=b;
if(c>max)max=c;
printf(“%d〞,max);
}
第二章算法与顺序结构
一.知识点
1.算法:为解决一个问题而采取的方法和步骤。
2.算法的分类:数值算法、非数值算法。
3.算法的特点:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。
4.算法描述方法:自然语言、流程图、改良流程图、N—S流程图、伪代码、计算机语言。
5.C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。
6.输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。
7.字符数据的输入/输出:getchar〔〕、putchar〔〕
8.格式输入/输出:scanf〔〕、printf〔〕
9.printf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,n,-。
10.scanf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,*;&。注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车。
11.顺序结构的设计思想:声明变量、输入数据、处理、输出结果。
二.练习
㈠.填空题:
1.以下程序段执行后的输出结果是:⑴-200 2500⑵i=-200,j=2500⑶。
int i=-200,j=2500;
printf〔“⑴ %d %d〞,i,j〕;
printf〔“⑵ i=%d,j=%d\n〞,i,j〕;
printf〔“⑶ i=%d\n j=%d\n〞,i,j〕;
2.复合语句在语法上被认为是一条语句。空语句的形式是;。
3.C语句的最后用;完毕。
4.以下程序段的输出结果是 x= 127,x= 177,x= 7f,x= 127。
int x=0177;printf〔“x=%6d,x=%6o,x=%6x,x=%6u\n〞,x,,x,x,x〕;
5.以下程序段的输出结果是a=513.789215,a= 513.79,a=513.78921500,a= 531.78921500。
double a=513.789215;
printf〔“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\n〞,a,a,a,a〕;
6.以下程序段的输出结果是8,3 。
a=3+5,a*4;x=11/3;printf〔“%d,%%d\n〞,a,x〕;
7.以下程序输入三个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。请填空:
#include <stdio.h>
main〔〕
{ int a,b,c,m ;
printf〔“Enter a,b,c:〞〕;
scanf〔“%d,%d,%d〞,&a,&b,&c〕;
m=a;a=b;b=c;c=m;
printf〔“a=%d,b=%d,c=%d\n〞,a,b,c〕;}
8.以下程序不借助任何变量把a、b中的值进展交换。请填空:
#include <stdio.h>
main〔〕
{ int a,b;
printf〔“Input a,b:〞〕;
scanf〔“%d,%d〞,&a,&b〕;
a+=b;b=a-b;a=a-b;
printf〔“a=%d,b=%d\n〞,a,b〕;}
㈡.选择题:
1.假设a、b、c、d都是int型变量且初始值为0,以下不正确的赋值语句是〔〕(C)。
A.a=b=c=100; B.d++; C.c+b; D.d=〔c=22〕-〔b++〕;
2.以下选项中不是C语句的是〔〕(C)。
A.{int i;i++;printf〔“%d\n〞,i〕;} B.; C.a=5,c=10 D.{ ;}
3.以下合法的C语言赋值语句是〔〕(D)。
A.a=b=58 B.k=int〔a+b〕; C.a=58,b=58 D.--i;
4.以下程序的输出结果是〔〕(C)。
A.0 B.1 C.3 D.不确定的值
main〔〕
{ int x=10,y=3; printf〔“%d\n〞,y=x/y〕;}
5.假设变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是〔〕D。
A.read〔a,b,c〕; B.scanf〔“%d%d%d〞,a,b,c〕;
C.scanf〔“%D%D%D〞,&a,&b,&c〕; D.scanf〔“%d%d%d〞,&a,&b,&c〕;
6.假设变量已正确定义,要将a和b中的数进展交换,下面不正确的语句组是〔〕C。
A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t;
C.a=t;t=b;b=a; D.t=b;b=a;a=t;
7.假设变量已正确定义,以下程序段的输出结果是〔〕D。
A.输出格式说明与输出项不匹配,输出无定值
B.5.1700 C.5.16800 D.5.16900
x=5.16894;printf〔“%f\n〞,〔int〕〔x*1000+0.5〕/〔float〕1000〕;
8.执行以下程序段后,c3中的值是〔〕A。
A.0 B.1/2 C.0.5 D.1
int c1=1,c2=2,c3;c3=c1/c2;
9.执行以下程序段后,其输出结果是〔〕B。
A.0,0,-10 B.0,0,3 C.-10,3,-10 D.3,3,-10
int a=0,b=0,c=0; c=〔a-=a-5〕,〔a=b,b+3〕;
printf〔“%d,%d,%d\n〞,a,b,c〕;
10.以下程序的输出结果是〔〕D。
A.a=%2,b=%5 B.a=2,b=5 C.a=%%d,b=%%d D.a=%d,b=%d
main〔〕
{ int a=2,b=5; printf〔“a=%%d,b=%%d\n〞,a,b〕;}
11.假设int型占两个字节,以下程序段的输出是〔〕D。
A.-1,-1 B.-1,32767 C.-1,32768 D.-1,65535
int a=-1;printf〔“%d,%u\n〞,a,a〕;
12.以下程序段的输出结果是〔〕C。
A.|3.1415| B.| 3.0| C.| 3| D.| 3.|
float a=3.1415;printf〔“|%6.0f|\n〞,a〕;
13.以下程序段的输出结果是〔〕B。
A.9 8 B.8 9 C.6 6 D.以上三个都不对
#include <math.h>
main〔〕
{ double a=-3.0,b=2;
printf〔“%3.0f %3.0f\n〞,pow〔b,fabs〔a〕〕,pow〔fabs〔a〕,b〕〕;}
14.假设a为整型变量,那么以下语句〔〕B。
A.赋值不合法 B.输出值为-2 C.输出为不确定值 D.输出值为2
a=-2L;printf〔“%d\n〞,a〕;
15.假设有定义char s=‘\092’;那么该语句〔〕B。
A.使s的值包含1个字符 B.定义不合法,s的值不确定
C.使s的值包含4个字符 D.使s的值包含3个字符
16.假设k、g均为int型变量,那么以下语句的输出为〔〕D。
A.15 B.16 C.15 D.16
6f 70 71 6f
k=017;g=111;printf〔“%d\n〞,++k〕;printf〔“%x\n〞,g++〕;
17.字母a的ASCII十进制代码为97,执行以下语句后的输出为〔〕C。
A.b,c B.a--运算不合法,故有语法错误
C.98,c D.格式描述和输出项不匹配,输出无定值
char a=‘a’;a--;printf〔“%d,%c\n〞,a+‘2’-‘0’,a+‘3’-‘0’〕;
18.以下程序的输出为〔〕A。
A.27.000000 B.27.500000 C.28.000000 D.28.500000
#include <stdio.h>
main〔〕
{ int m=7,n=4; float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;printf〔“%f\n〞,x〕; }
19.以下程序的输出结果是〔〕C。
A.18 B.9 C.-18 D.-9
main〔〕 { int a=9;a+=a-=a+a;printf〔“%d\n〞,a〕; }
20.以下程序的输出结果是〔〕A。
A.0 B.5 C.1 D.不确定值
main〔〕 { int a=7,b=5;printf〔“%d\n〞,b=b/a〕;}
21.以下程序的输出结果是〔〕C。
A.12 B.11 C.10 D.9
main〔〕 { int a=011;printf〔“%d\n〞,++a〕;}
㈢.程序设计题:
用N—S图表示以下问题:
1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。
编写程序
2.依次将10个数输入,要求将其中最大的数打印出来。
#include <stdio.h>
main()
{
int i,a,max;
scanf("%d",&max);
for (i=1;i<=9;i++)
{
scanf("%d",&a);
if (a>max) max=a;
}
printf("%d",max);
}
3.有3个数a、b、c,要求按从大到小的顺序把它们打印出来。
main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;} /*实现a和b的互换*/
if(a>c)
{t=a;a=c;c=t;} /*实现a和c的互唤*/
if(b>c)
{t=b;b=c;c=t;] /*实现b和c的互换*/
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
}
4.求1+2+3+……+100。
#include <stdio.h>
int main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i=i+1;
}
printf(“%d〞,sum);
}
5.判断一个数n能否同时被3和5除。
#include <stdio.H>
main(void)
{
int n;
scanf("%d",&n);
if(n%3 == 0 && n%5 == 0)
printf("%d能否同时被3和5整除\n",n);
else
printf("%d不能否同时被3和5整除\n",n);
return 0;
}
6.将100~200之间的素数打印出来。
#include <stdio.h>
int isPrime(int n)
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i;
for(i=100;i<=200;i++)
{
if(isPrime(i))
printf("%d\n",i);
}
}
7.求两个整数m和n的最大公约数和最小公倍数。
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1 { temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
8.求方程ax2+bx+c=0的根
#include <stdio.h>
#include <math.h> //用到平方根函数
void main()
{
float a,b,c,x1,x2,p,q,m;
scanf("%f%f%f",&a,&b,&c);
if ((a==0.0)&&(b==0.0)&&(c!=0.0))
printf(“no value!");
else if ((a==0.0)&&(b==0.0)&&(c==0.0))
printf("any value!");
else if ((a==0.0)&&(b!=0.0))
printf("x1=x2=%f",-c/b);
else
{m=b*b-4.0*a*c;
if(m>=0)
{ x1=(-b+sqrt(m))/(2.0*a);
x2=(-b-sqrt(m))/(2.0*a);
printf("x1=%f\n",x1);
printf("x2=%f\n",x2);
}
else
{ p=-b/(2.0*a);
q=sqrt(-m)/(2.0*a);
printf("x1=%f+%fi\n",p,q);
printf("x2=%f-%fi\n",p,q);
}
}}
9.编写程序,输入两个整数1500和350,求出它们的商和余数并进展输出。
#include <stdlib.h>
#inclued <stdio.h>
void main()
{int a;
int b;
int c,d;
a=1500,b=350;
c=a/b;//商数
d=a%b;//余数
pritf("商数为: %d\n",c);
printf("余数为:%d\n",d);
return 0;
}
10.编写程序,读入三个双精度数,求它们的平均值并保存此平均值小数点后一位数,对小数点后第二位数进展四舍五入,最后输出结果。
#include<stdio.h>
main()
{ double a, b, c, d;
printf("输入三个双精度数\n");
scanf("%lf%lf%lf", &a, &b, &c);
d = ( a + b + c) / 3;
printf("%.1f\n", d);
}
11.求三角形的面积:a,b,c是边长,p是半边长,s是面积,那么s=[p(p - a)(p - b)(p - c)] 1/2
#include<stdio.h>
#include<math.h>
main()
{float a,b,c,p,s;
printf("input 3 num:");
scanf("%f%f%f",&a,&b,&c);
p=(a+b+c)/2;
s=p*(p-a)(p-b)(p-c);
s=pow(s,0.5);
printf("s=%f",s);
}
12.输入一个华氏温度,要求输出摄氏温度。公式为:c=5〔f-32〕/9。
#include<stdio.h>
main()
{ double tem_c, tem_f;
puts("=====华氏温度至摄氏温度转换程序=====");
printf("请输入华氏温度:");
scanf("%lf", &tem_f);
tem_c = (tem_f - 12) * 5.0 / 9.0;
printf("%f对应的摄氏温度为%.2f", tem_f, tem_c);
renturn 0;
}
第三章 选择结构程序设计
一.知识点
1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意&&、||的运算规那么。
2.三种if语句
3.选择结构的嵌套,注意if与else的配对;
4.条件运算符:?:
5.switch语句,注意其执行过程;
6.选择结构程序设计思想。
二.练习
㈠.填空题:
1.C语言中用非0表示逻辑值“真〞,用0表示逻辑值“假〞。
2.C语言中的关系运算符按优先级别是、、、、、。
答案:>、<、>=、<=、==、!=
3.C语言中的逻辑运算符按优先级别是、、。
答案:!、&&、||
4.C语言中的关系运算符和逻辑运算符的优先级别是 、、、、、
、、、。
!、>、<、>=、<=、==、!=、&&、||
5.C语言中逻辑运算符的!优先级高于算术运算符。
6.将以下数学式改写成C语言的关系表达式或逻辑表达式:
a=b或a<c a=b||a<c |x|>4 x>4||x<-4
7.以下程序的输出结果1。
main〔〕
{ int a=100;
if〔a>100〕 printf〔“%d\n〞,a>100〕; else printf(“%d\n〞,a<=100);}
8.假设a=10、b=15、c=1、d=2、e=0,请分别给出以下表达式的运算结果:
⑴ a*b && c 1 ⑵ a+b>10 || a+b<0 1⑶ e 0⑷ c==b>e 1
⑸ !a<e 0⑹ a++ && e++ && c++ 0⑺ !e && e==b==++c 1
⑻ (0<a) && (a<2) 0⑼ 1.234 && 5.982 1
⑽(b==10) && (a==10) 0⑾ !0 || d && a==c+d 1
⑿ (a+c==b)==(b+d==a) || (c=b+a)>(d=c+b) 1
9.当a=1、b=2、c=3时,执行以下if语句后,a= 3、b=1、c=1。
if〔a>c〕;b=a;a=c;c=b;
10.当a=1、b=2、c=3时,执行以下if语句后,a=3、b=2、c=2。
if〔a>c〕b=a;a=c;c=b;
11.当a=1、b=2、c=3时,执行以下if语句后,a=1、b=2、c=2。
if〔a>c〕b=a,a=c;c=b;
12.将以下两条if语句合并为一条if语句:。
if〔a>b〕 scanf〔“%d〞,&x〕;else scanf〔“%d〞,&y〕;
if〔a<=b〕 i++;else j++;
答案:if〔a>b〕 {scanf〔“%d〞,&x〕;j++;}
else {scanf〔“%d〞,&y〕;i++;}
13.将以下嵌套的if语句改写成不嵌套的if语句:。
if〔w<0〕 k=0;else if〔w<=100〕 k=1; else k=0;
答案:if〔w>=0&&w<=100〕k=1; else k=0;
14.以下程序判断输入的一个整数是否能被3或7整除,假设能整除,输出“YES〞,假设不能整除,输出“NO〞。请填空:
#include <stdio.h>
main〔〕
{ int k;
printf〔“Enter a int number:〞〕;scanf〔“%d〞,&k〕;
if〔 k%3==0||k%7==0 〕printf〔“YES\n〞〕;else printf〔“NO\n〞〕;}
15.在switch语句中,当执行到break语句时,使流程跳出开关语句。
㈡.选择题:
1.假设给定条件表达式〔M〕?〔a++〕:〔a--〕,那么和表达式M等价的表达式为〔 〕C。
A.M==0 B.M==1 C.M!=0 D.M!=1
2.为表示关系x≥y≥z,应使用的C语言表达式是〔 〕A。
A.(x>=y) && (y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z)
3.以下程序的输出结果是〔 〕D。
A.0 B.1 C.2 D.3
main〔〕
{ int a=2,b=-1,c=2;
if〔a<b〕
if〔b<0〕 c=0;
else c+=1;
printf〔“%d\n〞,c〕; }
4.以下程序的输出结果是〔 〕A。
A.1 B.2 C.3 D.4
main〔〕
{ int w=4,x=3,y=2,z=1;printf〔“%d\n〞,〔w<x ? w : z<y ? z : x〕〕;}
5.假设执行以下程序时,从键盘上输入3和4,那么输出结果是〔 〕B。
A.14 B.16 C.18 D.20
main〔〕
{ int a,b,s;scanf〔“%d %d〞,&a,&b〕; s=a;
if〔a<b〕s=b;
s*=s;printf〔“%d\n〞,s〕; }
6.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式〔 〕。D
A.只能用逻辑表达式 B.只能用关系表达式
C.只能用逻辑表达式或关系表达式 D.可用任意表达式
7.以下程序段运行后,x的值是〔 〕D。
A.14 B.4 C.15 D.3
ok1=1;ok2=2;ok3=3;x=15;
if〔!ok1〕 x--;else if〔ok2〕 if〔ok3〕x=3;else x=4;
8.在C语言中,switch语句后一对圆括号中exp的类型〔 〕。A
A.可以是任何类型 B.只能为int型
C.可以是整型或字符型 D.只能是整型或实型
9.以下各组运算符中,优先级最高的分别为〔⑴B ⑵C ⑶C ⑷D〕。
⑴A.?: B.++ C.&& D.+=
⑵A.*= B.>= C.〔类型〕 D.,
⑶A.|| B.% C.! D.==
⑷A.= B.!= C.*(乘) D.( )
10.假设a为整型变量,b为字符型变量,那么以下正确的switch语句是〔 〕A。
A.switch〔〔int〕x/10〕B.switch〔b〕
{ case 1:a++;break; { case ‘\042’;x=a/b;break;
case 2:b++;break; case ‘6’;x=a*b;break;
case 3:c++;break; case ‘\010’;x=a+c;break;
} }
C.switch〔〔int〕x/10〕; D.switch〔a/100+10〕
{ case 0:a++;break; { case2 :x=a/b;break;
default:b++;break; case6 :x=a*b;break;
case 3+1:c++;break; case8 :x=a+c;break;
case 3:d++;break; case10 :x=a-c;break;
} }
㈢.程序设计题:
1.从键盘输入一个字母,假设是大写字母,要求改用小写字母输出。
#include<stdio.h>
void main()
{char var;
var=getchar();
if(var>=65&&var<=90)
var=32+var;
putchar(var);
}
2.求ax2+bx+c=0的根。a、b、c由键盘输入,设b2-4ac>=0.
#include<stdio.h>
#include<math.h>
void main()
{float a,b,c,p,x1,x2;
printf("input 3 numbers:\n");
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c>=0)
{
p=pow(b*b-4*a*c,0.5);
x1=(-b+p)/2;
x2=(-b-p)/2;
printf("x1=%f,x2=%f",x1,x2);
}
else
{
p=pow(-b*b+4*a*c,0.5);
printf("x1=%f+%fi,x2=%f-%fi",-b/2,p/2,-b/2,p/2);
}
}
第四章循环结构程序设计
一.知识点
1.循环的概念,C实现循环的方法;
2.goto语句,注意标号的书写;
3.while语句,注意条件表达式的设计;
4.do……while语句,注意条件表达式的设计,与while之后的分号;
5.for语句,注意for中三个表达式的一般含义;
6.循环的嵌套;
7.break与continue语句,注意二者之间的区别;
8.循环结构程序设计思想
二.练习
㈠.填空题:
1.以下程序段的输出结果。y=7,x=21
x=y=0;while〔x<20〕y++,x+=3;
printf〔“y=%d,x=%d\n〞,y,x〕;
2.当执行以下程序段后,i的值是、j的值是、k的值是。5、4、6
int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;
for〔 ;a>b;++b〕i++;
while〔a>++c〕 j++;
do k++;while〔a>d++〕;
3.以下程序段的输出结果。死循环没有输出结果
int k,m,n;n=10;m=1;k=1;
while〔k<=n〕 m*=2; printf〔“%d\n〞,m〕;
4.以下程序的输出结果-1。
main〔〕
{ int x=2;while〔x--〕;printf〔“%d\n〞,x〕;}
5.以下程序段的输出结果11。
int i=0,sum=1;do{ sum+=i++;}while〔i<5〕;printf〔“%d\n〞,sum〕;
6.有以下程序段:
s=1.0;for〔k=1;k<=n;k++〕s=s+1.0/〔k*〔k+1〕〕;printf〔“%f\n〞,s〕;
要使下面的程序段的功能与上面程序段的功能一样,请填空:
s=0.0;k=0;d=1.0;
do{ s=s+d;k++;d=1.0/〔k*〔k+1〕〕;}while〔k<=n〕;
printf〔“%f\n〞,s〕;
7.以下程序的功能是:从键盘上输入假设干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时完毕输入。请填空:
main〔〕
{ float x,amax,amin;
scanf〔“%f〞,&x〕;amax=x;amin=x;
while〔x>=0〕
{ if〔x>amax〕amax=x;
if〔x<amin〕amin=x;
scanf〔“%f〞,&x〕;}
printf〔“\namax=%f\namin=%f\n〞,amax,a
展开阅读全文