char *JUN[]
C语言程序设计概述
选择题
1.一个C程序的执行是从(A)。
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
2.以下叙述正确的是(C)。
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
3.以下叙述不正确的是(D)。
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
4.在一个C程序中下列说明正确的是(B)。
A.main()函数必须出现在所有函数之前
B.main()函数可以在任何地方出现
C.main()函数必须出现在所有函数之后
D.main()函数必须出现在固定位置
5.下面描述不正确的是(C)。
A.C语言兼有高级语言和低级语言的双重特点,执行效率高
B.C语言既可以用来编写应用程序,也可以用来编写系统软件
C.C语言的可移植性较差
D.C语言是一种结构化程序设计语言
6.下列符号串中,属于C语言合法标识符的是(C)。
A.else B.a-2 C._123 D. 123
7.以下选项中合法的C语言字符常量是(D)。
A.’\128 ‘ B.”a” C.’ab ‘ D.’\x43′
8.在C语言编译系统中,char、long、float、double类型数据所占字节数分别为(C)。
A.1,2,4,8 B.1,4,2,8 C.1,4,4,8 D.1,4,8,8
9.编译程序的功能是(B)。
A.建立并修改程序 B.将C源程序编译成目标程序
C.调试程序 D.命令计算机执行指定的操作
10.二进制代码程序属于(A)。
A.面向机器语言 B.面向问题语言 C.面向过程语言 D.面向汇编语言
填空题
1.C程序是由函数构成的。其中有并且只能有 1 个主函数。一个函数由两部分组成:函数的首部和 函数体 。
2.C程序必须要有一个 main() 函数,而且只能有一个。C语言程序总是从main()函数开始执行,并且终止于该函数。
3.用高级语言编写的源程序必须通过 编译 程序翻译成二进制程序计算机才能识别,这个二进制程序称为 目标 程序。
4.C语言源程序文件的后缀是 .c ,经过编译后,生成文件的后缀是 .obj ,经过连接后,生成文件的后缀是 .exe 。
5.为了提高程序的可读性,在编写C程序时通常使用 缩进 格式,并给程序添加必要的注释。注释可出现在程序的任何位置,注释对程序的执行 没有影响 ,C程序中一般块注释用 /*…*/ 表示,行注释用 // 表示。
6.十进制数123,转换为二进制数为 1111011 ,转换为八进制数为 0173 ,转换为十六进制数为 0x7B 。
7.将二进制数转换为十进制数:(110101)2=( 53 )10。
8.将十进制浮点数转换为二进制浮点数:(52.625)10=( 110100.101 )2。
编程题
1.下列程序的功能是:从键盘输入两个数 a 和 b,求它们的平方和,并在屏幕上输出。输入该 C 程序,编译并运行之,记下屏幕的输出结果,以文件名 sy1_1.c 保存。
#include <stdio.h> void main() { int a,b,sum; /* 定义整型变量 a、 b、 sum */ printf("Please Input a,b \n "); /* 输出提示信息 */ scanf("%d%d",&a,&b); /* 从键盘输入两个整数分别赋予 a 和 b*/ sum=a*a+b*b; /* 赋值语句,把 a方+b方的结果赋给变量 sum*/ printf("%d*%d+ %d*%d=%d\n",a,a,b,b,sum); /* 输出语句 */ }
2.下列程序的功能为:计算 x*y 的值并将结果输出。试纠正程序中存在的错误,以实现其功能。程序以文件名 sy1_2.c 保存。
#include <stdio.h> void main() { int x = 2, y = 3, a; a = x*y; printf("a=%d",a); printf("\n"); }
3.下程序的功能为:求两数中的较大数据并输出。纠正程序中存在的错误,以实现
其功能。程序以文件名 sy1_3.c 保存。
#include <stdio.h> void main(void) { int a, b, max; scanf("%d,%d", &a, &b); /*从键盘输入两个整数分别赋予变量a和b */ max = a; if(max<b) max = b; /*如果max中的值小于b中的值,则把b的值赋给max */ printf("max=%d", max); /*输出max的值*/ }
4.从键盘输入两个整数,输出这两个整数的和。 根据注释信息填写完整程序,以实
现其功能。以文件名 sy1_4.c 保存。
#include<stdio.h> void main() { int x,y,total; /* 定义整型变量 x,y,total*/ // printf("Please input x,y ! "); /* 输出提示信息 */ scanf(“%d%d”,&x,&y); /* 由键盘输入两个数分别赋予 x 和 y*/ total=x+y; /* 赋值语句 */ printf("%d + %d=%d\n",x,y,total); /* 输出两个整数的和 */ }
5. 从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以
实现其功能。程序以文件名 sy1_5.c 保存。
#include<stdio.h> void main() { int a,b,m; printf("Input a,b please ! "); scanf("%d%d",&a,&b); m=a-b; /* 赋值语句,将 a 和 b 的差值赋给 m */ printf("m=%d\n",m); /* 输出 a 和 b 差的结果值后换行 */ }
6. 编写程序, 运行后输出如下信息: “ Better City,Better Life! ”。 程序以文件名sy1_6.c保存。
#include <stdio.h> void main() { printf("Better City,Better Life!\n"); }
7. 编写程序,从键盘输入 3 个整数,输出它们的平方和。程序以文件名 sy1_7.c 保存。
#include <stdio.h> void main() { int a,b,c,sum; // printf("Please Input a,b,c \n "); scanf("%d,%d,%d",&a,&b,&c); sum=a*a+b*b+c*c; printf("sum=%d",sum); }
章节测验
下列属于C语言关键字的是( A )
- A、typedef
- B、ENUM
- C、Int
- D、unien
下列叙述中,不正确的是( C )
- A、分号是C语句的必要组成部分
- B、C语句的注释可以写在语句的后面
- C、主函数的名字不一定用main表示
- D、函数是C程序的基本单位
构成C语言源程序的基本单位是( B )
- A、过程
- B、函数
- C、子程序
- D、命令
一个C程序的执行是从( C )
- A、main函数开始,直到最后一个函数结束
- B、第一个函数开始,直到最后一个函数结束
- C、main函数开始,直到main函数结束
- D、第一条语句开始,直到最后一条语句结
下列属于C语言中合法标识符的是( B )
- A、ex-1
- B、_cook
- C、951a
- D、if
以下叙述不正确的是( D )
- A、注释说明被计算机编译系统忽略
- B、注释说明必须跟在“//”之后不能换行或者括在“/*”和“*/”之间且注释符必须配对使用
- C、注释符“/”和“*”之间不能有空格
- D、在C程序中,注释说明只能位于一条语句的后面
下面四组选项中,均是C语言关键字的选项是( B )
- A、auto enum include
- B、switch typedef continue
- C、signed union scanf
- D、if struct type
在C程序中,main函数的位置( A )
- A、可以任意
- B、必须作为最后一个函数
- C、必须作为第一个函数
- D、必须放在它所调用的函数之后
C程序是由( B )构成的
- A、若干过程
- B、一个或多个函数
- C、若干子程序
- D、一个主程序与若干子程序
C语言的源程序通常的扩展名是( B )
- A、.cpp
- B、.c
- C、.obj
- D、.exe
C语言属于( C )
- A、机器语言
- B、汇编语言
- C、高级语言
- D、低级语言
C语言允许直接访问内存地址。(√)
C语言本身没有输入输出语句。(√)
C语句以冒号作为结束。(X)
1C_fun是合法的标识符。(√)
while、If、double均是C语言的关键字。(X)
求解矩形的面积 题目描述
题目内容:编写一个程序,从键盘读入一个矩形的两个边的值(整数),输出矩形面积。输入样例:3,5
输出样例:15
#include<stdio.h> void main(void){ int a,b,c; scanf("%d,%d",&a,&b); c=a*b; printf("%d",c); }
求解梯形的面积题目描述
题目内容:从键盘上输入一个梯形的上底a、下底b和高h,输出梯形的面积。
输入样例:2,4,3
输出样例:9.000000
输入样例:2.4,2.6,3.8
输出样例:9.500000
#include <stdio.h> #include <math.h> void main(void) { float a, b,c,ans; scanf("%f,%f,%f", &a, &b,&c); ans = ((a+b)*c)/2; printf("s=%.2f", ans); }
顺序结构程序设计
选择题
1.在C语言中,要求运算数必须是整型的运算符是(D)。
A./ B.++ C.!= D.%
2.若有以下语句:char w; int x; f1oat y;double z;则表达式w*x+z-y值的数据类型为(D)。
A.float B.char C.int D.double
3.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)。
A.7 B.8 C.6 D.2
4.执行语句“x=(a=3,b=a–);”后,x、a、b的值依次为(C)。
A.3,3,2 B.2,3,2 C.3,2,3 D. 2,3,3
5.若有以下语句:int a=3,b=6,c;c=a^b<<2;,则变量c的二进制值是(A)。
A.00011011 B.00010100 C.00011000 D.00000110
6.用函数从终端输出一个字符,可以使用函数(B)。
A.getchar() B.putchar() C.gets() D.puts()
7.要输出长整型的数值,需用格式符(B)。
A.%d B.%ld C.%f D.%c
8.设a、b为float型变量,则以下不合法的赋值语句是(B)。
A.–a B.b= (a%4)/5 C.a*=b+9 D.a=b=10
9.以下程序的输出结果是(D)。
#include<stdio.h> int main(void) { char c1='6',c2='0'; printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2); }
A.6,0,7,6 B.6,0,5,7 C.输出出错信息 D.6,0,6,102
10.有以下程序:
#include<stdio.h> int main (void) { int m,n,p; scanf("%d%d%d",&m,&n,&p); printf("m+n+p=%d\n", m+n+p); return 0; }
当从键盘上输入的数据为:2,3,5<Enter>,则正确的输出结果是(D)。
A.m+n+p=10 B.m+n+p=5 C.m+p=7 D.不确定值
填空题
1.表达式“3.5+(int)(8/3*(3.5+6.7)/2)%4”的值为 5.5 。
2.表达式 5.7 + 2/19= 5.7 。若定义“int a=4,b;”,则表达式“(b=6*5,a*4),a+16”的值是 20 。
3.假设x是一个两位正整数,使该数的个位和十位调换的表达式为 x%10*10+x/10 。(如78调换后变为87)
4.将数学式 转换成C语言表达式为: sin(sqrt(x*x))/(a*b) 。
5.设整型变量 x、y、z均为3,执行“x%=y+z”后,x= 3 。
6.若有char x=32 , y=3 ; 则表达式 ~x&y的值为 3 。
7.算法通常具有以下5个方面的特性: 有穷性 、确定性 、可行性 、零个或多个输入、一个或多个输出。
8.若有定义“char c1=’a’,c2=’e’;”,已知字符“a”的ASCII码值是97,则执行语句“printf(“%d,%c”,c1,c2+2); ”后的输出结果是 97,g 。
9.程序填空。
#include<stdio.h> #include<math.h> int main(void) { float x,y,z; scanf(" %f,%f ", &x,&y ); //从键盘输入两个浮点数 z=2*x*sqrt(y); printf("z=%5.2f",z); return 0; }
10.下列程序的运行结果是 16.00 。
#include<stdio.h> int main(void) { int a=9,b=2; float x=6.6,y=1.1,z; z=a/2+b*x/y-1/2; printf("%5.2f",z); return 0; }
编程题
1. 【问题描述】
下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:c=(5/9)*(f-32),输出取2位小数。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_1.c保存。
#include <stdio.h> int main(void) { float c,f ; //printf("请输入一个华氏温度:\n"); scanf("%f", f); c=(5/9)*(f-32); printf("c=%5.2f\n",c); return 0; }
【样例输入】70
【样例输出】c=21.11
#include <stdio.h> void main(void) { float c, f; //printf("请输入一个华氏温度:\n"); scanf("%f", &f); c = (5.0 / 9)*(f - 32); printf("c=%5.2f\n", c); }
2. 【问题描述】
下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_2.c保存。
#include <stdio.h> int main(void) { int a,b; float x; scanf("%d,%d",a,b); x=2ab/(a+b)(a+b); printf("x=%d\n",x); return 0; }
【样例输入】2,4
【样例输出】x=0.444444
#include <stdio.h> void main(void) { int a, b; float x; scanf("%d,%d", &a, &b); x = 2.0*a*b / (a + b)*(a + b); printf("x=%f\n", x); }
3. 【问题描述】
下列程序的功能为:从键盘输入一个小写字母,要求输出该小写字母及其ASCII码,并将该小写字母转换成大写字母并输出。请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy2_3.c保存。
#include <stdio.h> int main(void) { char c1,c2; c1=getchar; // 从键盘输入一个小写字母 printf("%c,%d\n",c1,c1); // 输出该小写字母及其ASCII码值 c2=c1+26; // 转换为大写字母 c2=putchar(); // 输出大写字母 return 0; }
【样例输入】a
【样例输出】a,97 A
#include <stdio.h> int main(void) { char c1, c2; c1 = getchar(); // 从键盘输入一个小写字母 printf("%c,%d\n", c1, c1); // 输出该小写字母及其ASCII码值 c2 = c1 -32; // 转换为大写字母 putchar(c2); // 输出大写字母 return 0; }
4. 【问题描述】
下列程序的功能为:按给定格式输入数据,按要求格式输出结果。补充完善程序,以实现其功能。程序以文件名sy2_4.c保存。
【输入形式】 2 3.4
【输出形式】 x+y=5.4
#include <stdio.h> int main(void) { int x; float y; scanf("%d%f", &x, &y); printf("x+y=%.1f\n", x + y); return 0; }
5. 【问题描述】
下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请补充完善程序,以实现其功能。程序以文件名sy2_5.c保存。
#include <stdio.h> int main(void) { float h, r, l, s, sq, vq, vz; static float pi = 3.1415926; scanf("%f%f", &r, &h); l = 2 * pi*r; s = pi*r*r; sq = r*r*4*pi; vq =(4.0/3)*r*r*r*pi ; vz =r*r*h*pi ; printf("l=%.2f\n",l); printf("s=%.2f\n",s); printf("sq=%.2f\n",sq); printf("vq=%.2f\n",vq); printf("vz=%.2f\n",vz); return 0; }
6. 【问题描述】
下列程序的功能为:从键盘输入3个整数分别存入变量x、y、z,然后,将变量x的值存入变量z,将变量y的值存入变量x,将变量z的值存入变量y,输出经过转存后变量x、y、z的值。(提示:使用中间变量)补充完善程序,以实现其功能。程序以文件名sy2_6.c保存。
#include <stdio.h> int main(void) { int x,y,z, ; //printf("Please input x,y,z: "); scanf("%d%d%d", ); ; ; ; ; printf("x=%d\ny=%d\nz=%d\n",x,y,z); return 0; }
【样例输入】
2 3 4
【样例输出】
x=3
y=4
z=2
#include <stdio.h> int main(void) { volatile int x, y, z, i; scanf("%d%d%d",&x,&y,&z); i = z;z = x;x= y;y= i; printf("x=%d\ny=%d\nz=%d\n", x, y, z); return 0; }
7. 【问题描述】
编写程序实现如下功能:从键盘输入数据两个整数、两个浮点数、两个字符,分别赋给整型变量a和b、浮点型变量x和y以及字符变量ch1和ch2,要求输出如下结果形式,程序以文件名sy2_7.c保存。
【样例输入】
3 4
2.5 5.6
AB
【样例输出】
a=3,b=4
x=2.5,y=5.6
ch1=A,ch2=B
#include <stdio.h> int main(void) { volatile int a, b; volatile float x, y; char c1, c2; scanf("%d%d%f%f", &a, &b, &x, &y); getchar(); c1 = getchar(); c2 = getchar(); printf("a=%d,b=%d\nx=%.1f,y=%.1f\n", a, b, x, y); printf("ch1="); putchar(c1); printf(",ch2="); putchar(c2); putchar('\n'); return 0; }
8. 【问题描述】
编写程序实现如下功能:输入一元二次方程ax2+bx+c=0的系数a、b、c,求方程的根。要求:运行该程序时,输入a、b、c的值,分别使b2-4ac的值大于、等于和小于零,观察并分析运行结果。程序以文件名sy2_8.c保存。求根公式如下:
【样例输入】
2,5,2
【样例输出】
x1=-0.50
x2=-2.00
#include <stdio.h> #include <math.h> int main() { volatile float a, b, c, __ans, x1, x2; scanf("%f,%f,%f", &a, &b, &c); if (a == 0) { /* 预留代码块 用于判断方程任意解 无解 一元一次的情况*/ } else { __ans = b*b - 4 * a*c; if (__ans < 0) /* 预留代码块*/ while (1); else if (__ans == 0) { printf("x1=%.2f\nx2=%.2f\n", -b / 2 / a, -b / 2 / a); } else { x1 = (-b + sqrt(__ans)) / 2 / a; x2 = (-b - sqrt(__ans)) / 2 / a; printf("x1=%.2f\nx2=%.2f\n", x1, x2); } } return 0; }
章节测验
下列不合法的字符常量是( B )
- A、‘2’
- B、‘ab’
- C、‘\n’
- D、‘\101’
下列合法的转义字符是( A )
- A、’\”‘
- B、‘\ee’
- C、‘\018
- D、‘xab’
以下选项中不合法的实型常量是( D)
- A、-62000
- B、0.123
- C、5
- D、E3
若已定义x和y为double型变量,则表达式x=1,y=x+3/2的值是( B )
- A、2
- B、2.5
- C、2.0
- D、1
执行语句“x=(a=5,b=a–)”后,x,a,b的值分别是( C )
- A、5,4,4
- B、5,5,4
- C、5,4,5
- D、4,5,4
已知int x=5,y=5,z=5;则执行语句x%=y+z;后,x的值是( D
- A、6
- B、1
- C、0
- D、5
表达式(k=3*2,k+4),k*3的值是( A )
- A、18
- B、14
- C、30
- D、10
下面程序的输出结果是( B )。
#include<stdio.h> void main() { int x=10,y=3,z; printf("%d\n",z=(x%y,x/y)); }
- A、4
- B、3
- C、1
- D、0
经过下述赋值后,变量x的数据类型是( A )。
float x=21.0;
int y;
y=(int)x;
- A、float
- B、double
- C、int
- D、char
执行以下程序后,输出结果为 (A)
#include<stdio.h> void main() { int x; float y; y=3.6; x=(int)y+10; printf("x=%d,y=%f",x,y); }
- A、x=13,y=3.600000
- B、x=13.5,y=3.60000
- C、x=13,y=3
- D、x=13,y=3.6
下列浮点数的形式表示错误的是( B )
- A、10.6
- B、12E2.0
- C、100000
- D、.5
题目内容:输入一个三位的正整数,按逆序打印出该数的各位数字。输入样例:369
输出样例:963
输入样例:680
输出样例:086
#include<stdio.h> void main(void) { volatile int n,a,b,c; scanf("%d",&n); a=n%10; b=n/10%10; c=n/100%10; printf("%d%d%d",a,b,c); }
题目内容:编写程序,计算并输出华氏温度为80F所对应的摄氏温度C。
转换公式为:C=5*(F-32)/9
输出样例:**.******测试用例
用例1
分数: 20
错误提示:
题目运行时间限制: 500ms
题目运行内存限制: 32000kb
#include<stdio.h> int GKD(volatile double F) { volatile double C; C=5*(F-32)/9; printf("%lf",C); } int main(void) { GKD(80.0); return 0; }
选择结构程序设计
选择题
1.要判断char型变量m是否是数字字符,可以使用表达式(B)。
A.m>=0 && m<=9
B.m>=’0′ && m<=’9′
C.m>=”0″ && m<=”9″
D.m>=0 & m<=9
2.要判断char型变量c是否为大写字母,可以使用表达式(B)。
A.c>=A && c<=Z
B.c>=’A’ && c<=’Z’
C.c>=”A” && c<=”Z”
D.’A'<c<‘Z’
3.为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
4.假设有定义int a=1,b=2,m=1,n=1。则执行表达式 (m=a>b)&&(n=a!=b)后,m,n的值为(A)。
A.0 1 B.1 0
C.1 1 D.0 0
5.以下选项中不合法的表达式是(C)。
A.x>=1&&x<=50 B.x=y==1
C.x+1=x D.y=y+1
6.下列运算符中优先级最高的是(A)。
A.! B.&&
C.> D.!=
7.有下面的程序段,执行后c的值为(D)。
int a=3, b=2, c; char p='A'; c=(a && b)&&(p>'B')
A.false B.true
C.1 D.0
8.若已定义a=3,b=c=4,则执行下列语句后变量x、y的值分别为(A)。
x=(c>=b>=a)?1:0;
y=c>=b&&b>=a;
A. 0 1 B.1 1
C.0 0 D.1 0
9.在C语言中,多分支选择结构语句为:
switch(表达式)
{
case 常量表达式1: 语句1;
……
case 常量表达式k: 语句k;
default: 语句k+1;
}
其中switch括号中表达式的类型(C)。
A.只能是整型
B.可以是任意类型
C.可以是整型或字符型
D.可以是整型或实型
10.执行以下程序后的输出结果是(C)。
int main(void) { int a=4, b=5,c=5; a=b==c; printf("%d ",a); a=a==(b-c); printf("%d\n",a); }
A.5 0 B.5 1
C.1 0 D.1 1
填空题
1.有int x,y,z;且x=3,y=4,z=5,则表达式 !(x+y)+z-1&&y+z/2的值为 1 。
2.用x描述1到100之间的所有偶数的表达式为 (x>=1&&x<=100)&&(x%2==0)。
3.当a=3,b=-4,c=5时,表达式(a&&b)==(a||c)的值是 1 。
4.判定闰年year的条件是能被4整除但不能被100整除,或能被400整除的年份,用表达式表示为 (year%4==0&&year%100!=0)||(year%400==0)。
5.若有定义“int a=1,b=0;”表达式a–>(b+a)?10:5>b++?’A’: ‘Z’的值为 A 。
6.能正确表示x<0或10<x<50关系的C语言表达式是 x<0||(x>10&&x<50) 。
7.下面程序的输出结果是 5 3 2 。
#include<stdio.h> int main(void) { int x,y=1,z; if(y!=0)x=5; printf("%d ",x); if(y==0)x=4; elsex=3; printf("%d ",x); x=2; if(y<0) if(y>0) x=4; else x=5; printf("%d\n",x); return 0; }
8.下面程序的输出结果是 #& 。
#include<stdio.h> int main(void) { int a=2,b=7,c=5; switch(a>0) { case 1:switch(b<0) { case 1:printf("@");break; case 2:printf("!");break; } case 0:switch(c==5) { case 0:printf("*");break; case 1:printf("#");break; default:printf("$");break; } default:printf("&"); } return 0; }
9.下面程序的输出结果是:
(1)2
(2)3
CC
a=2,b=2,c=4
#include<stdio.h> int main(void) { int a,b,c; a=b=c=1; a+=b; b+=c; c+=a; printf("(1)%d\n",a>b?a:b); printf("(2)%d\n",a>c?a--:c++); (a>=b>=c)?printf("AA"):printf("CC"); printf("\na=%d,b=%d,c=%d\n",a,b,c); return 0; }
10.下面程序的输出结果是 a=2, b=3 。
#include<stdio.h> int main(void) { int a=1, b=1; switch(a-b) { case 0: b++; case1: a++;b++;break; case 2: b++; } printf("a=%d, b=%d\n", a, b); return 0; }
编程题
(1)求分段函数
有一个函数如下:
编写程序,输入x的值,计算相应的y值输出(保留2位小数)。
#include<stdio.h> #include<math.h> int main(void) { float x,y; scanf("%f", &x); if(x<4) y=(x+7)/(2*x-1); else if(x<70) y=3*x*x+5; else y=x-sqrt(4*x-1); printf("y=%.2f\n",y); return 0; }
运行结果: (1) 3 y=2.00 (2) 9.5 y=275.75 (3) 75 y=57.71
(2)判断三角形类型,计算三角形面积
编写一个程序,根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、等腰直角、一般三角形等)。
(学校网上的oj是英文,请注意,踩一下oj的乐色编译环境)
#include <stdio.h> #include <math.h> int main(void) { float a, b, c, s, area; int flag; printf("Input the three edge length:"); scanf("%f,%f,%f",&a,&b , &c); if(a+b>c && b+c>a && a+c>b) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%.2f\n",area); if(fabs(a-b)<=0.0001&&fabs(b-c)<=0.0001&&fabs(c-a)<=0.0001) { printf("等边三角形"); } else if(fabs(a-b)<=0.0001||fabs(b-c)<=0.0001||fabs(c-a)<=0.0001) { if(fabs(a*a+b*b-c*c)<=0.0001||fabs(a*a+c*c-b*b)<=0.0001||fabs(b*b+c*c-a*a)<=0.0001) { printf("等腰直角三角形"); } else printf("等腰三角形"); } else if(fabs(a*a+b*b-c*c)<=0.0001||fabs(a*a+c*c-b*b)<=0.0001||fabs(b*b+c*c-a*a)<=0.0001) { printf("直角三角形"); } else printf("一般三角形\n"); } else printf("不是三角形\n"); return 0; }
运行结果: (1) Input the three edge length:3,4,5 area=6.00 直角三角形 (2) Input the three edge length:4,4,5 area=7.81 等腰三角形 (3) Input the three edge length:5,5,5 area=10.83 等边三角形 (4) Input the three edge length:5,5,7.071065 area=12.50 等腰直角三角形 (5) Input the three edge length:5,6,7 area=14.70 一般三角形 (6) Input the three edge length:4,5,10 不是三角形 --------------------------------
(3)计算实际奖金值
由键盘输入奖金值,计算并输出相应的税率和实际应得奖金值。分别用if-else的嵌套语句和switch多分支选择语句编写程序。
源程序一: #include<stdio.h> int main(void ) { float n, r, s; int m; printf("请输入奖金值:"); scanf("%f", &n); if(n<1000) r=0; else if(n<3000) r=0.03; else if(n<5000) r=0.05; else if(n<10000) r=0.07; else r=0.1; s=n-r*n; //计算实际所得奖金值 printf("税率r=%.0f%%, 奖金值n=%.2f, 实际所得奖金s=%.2f\n",r*100, n, s); return 0; } 源程序二: #include<stdio.h> int main(void ) { float n, r, s; int m; printf("请输入奖金值:"); scanf("%f", &n); if(n>=10000) m=10; else m=n/1000; switch(m) { case 0: r=0; break; case 1: case 2: r=0.03; break; case 3: case 4: r=0.05; break; case 5: case 6: case 7: case 8: case 9:r=0.07; break; case 10:r=0.1; } s=n-r*n; //计算实际所得奖金值 printf("税率r=%.0f%%, 奖金值n=%.2f, 实际所得奖金s=%.2f\n",r*100, n, s); return 0; }
运行结果: (1) 请输入奖金值:3000 税率r=5%, 奖金值n=3000.00, 实际所得奖金s=2850.00 (2) 请输入奖金值:6000 税率r=7%, 奖金值n=6000.00, 实际所得奖金s=5580.00 (3) 请输入奖金值:11000 税率r=10%, 奖金值n=11000.00, 实际所得奖金s=9900.00 --------------------------------
(4)判断能否整除数
从键盘输入一个正整数,判断其是否能同时被5和7整除,若是则输出“YES”,否则输出“NO”。
#include<stdio.h> int main(void) { int x; scanf("%d", &x); if(x>0) { if(x%5==0&&x%7==0) printf("YES\n"); else printf("NO\n"); } else printf("data error!"); return 0; }
运行结果: (1) 14 NO (2) 35 YES (3) -9 data error! ---------------
(5)判断整数的位数
给出一个不超过4位数的正整数,判断它是几位数,并按逆向输出各位数字。例1234,输出为4321。
#include<stdio.h> int main(void) { int num,i,j,k,m; printf("输入一个少于4位的正整数:"); scanf("%d",&num); if(num>=0 && num<=9999) { if(num>1000 && num<=9999) { printf("是一个4位数\n"); m=num%10; /*求个位上的数字*/ k=num/10%10; /*求十位上的数字*/ j=num/100%10; /*求百位上的数字*/ i=num/1000; /*求千位上的数字*/ printf("逆序数为:%d%d%d%d\n",m,k,j,i); } else if(num>=100) { printf("是一个3位数\n"); m=num%10; /*求个位上的数字*/ k=num/10%10; /*求十位上的数字*/ j=num/100; /*求百位上的数字*/ printf("逆序数为:%d%d%d\n",m,k,j); } else if(num>=10) { printf("是一个2位数\n"); m=num%10; /*求个位上的数字*/ k=num/10; /*求十位上的数字*/ printf("逆序数为:%d%d\n",m,k); } else { printf("是一个1位数\n"); printf("逆序数为:%d\n",num); } } else printf("是一个无效的数\n"); return 0; }
运行结果: (1) 输入一个少于4位的正整数:63 是一个2位数 逆序数为:36 (2) 输入一个少于4位的正整数:135 是一个3位数 逆序数为:531 (3) 输入一个少于4位的正整数:1234 是一个4位数 逆序数为:4321 --------------------------------
章节测验
下列条件语句中,功能与其他语句不同的是( A )。
- A、if(a==0) printf(“%d\n”,x); else printf(“%d\n”,y);
- B、if(a) printf(“%d\n”,x); else printf(“%d\n”,y);
- C、if(a==0) printf(“%d\n”,y); else printf(“%d\n”,x);
- D、if(a!=0) printf(“%d\n”,x); else printf(“%d\n”,y);
【单选题】以下程序正确的说法是(A )。
#include<stdio.h> void main() { int x=0,y=0; if(x=y) printf("*****\n"); else printf("#####\n"); }
- A、输出#####
- B、有语法错误不能通过编译
- C、可以通过编译,但不能通过连接,因此不能运行
- D、输出*****
【单选题】分析以下程序的运行结果。 (C)
#include <stdio.h> void main() { int k=2; switch(k) { case 1:printf("%d\n",k++); break; case 2:printf("%d ",k++); case 3:printf("%d\n",k++); break; case 4:printf("%d\n",k++); default:printf("Full!\n"); } }
- A、3 4
- B、3 3
- C、2 3
- D、2 2
以下程序的输出结果为( D )。
#include<stdio.h> void main() { int a=30; printf("%d",(a/3>0)?a/10:a%3); }
- A、0
- B、1
- C、10
- D、3
希望当num的值为奇数时,表达式的值为“真”;num的值为偶数时,表达式的值为“假”。则以下不能满足该要求的表达式是( B )。
- A、num%2==1
- B、!(num%2)
- C、!(num%2==0)
- D、num%2
【单选题】以下程序的输出结果是( C )。
#include<stdio.h> 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; } printf("a=%d,b=%d",a,b); }
- A、a=1,b=1
- B、a=1,b=2
- C、a=2,b=1
- D、a=2,b=2
【单选题】以下程序运行时,输入的x值在( A )范围时才会有输出结果。
#include<stdio.h> void main() { int x; scanf("%d",&x); if(x<5); else if(x!=20) printf("%d",x); }
- A、大于等于5且不等于20的整数
- B、不等于20的整数
- C、小于5的整数
- D、大于等于5且等于20的整数
以为了避免嵌套的条件分支语句if-else二义性,C语言规定,C程序中的else总是与( B )组成配对关系。
- A、缩排位置相同的if
- B、在其之前未配对的最近的if
- C、在其之前未配对的if
- D、同一行上的if
【单选题】语句 if(x!=0) y=1;
else y=2;与(A )等价。
- A、if(x) y=1; else y=2;
- B、if(x) y=2;else y=1;
- C、 if(!x) y=1;else y=2;
- D、if(x=0) y=2;else y=1;
【单选题】下列程序段运行后x的值是( C )。
int a = 0, b = 0, c = 0, x = 35; if (!a) x--; else if (b); if (c) x = 3; else x = 4;
- A、34
- B、35
- C、4
- D、3
下列程序段运行后的结果是( B )。
#include<stdio.h> int main() { int a = 2, b = -1, c = 2; if(a < b) if(b < 0) c = 0; else c++; printf("%d\n",c); return 0; }
- A、0
- B、2
- C、3
- D、4
if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句。
if (表达式) 语句1
else 语句2 (X)
if-else语句的一般形式如下,若表达式的值为“真”,则执行语句1;否则,就执行语句2。
if (表达式) 语句1
else 语句2 (√)
执行以下程序段后,x的值为0,y的值为1。
int x, y;
if (x = 0) y = 0;
else y = 1; (√)
星期推算。
题目描述
题目内容:假设今天是星期日,编写一个程序,求2019天后是星期几。
输出样例:星期*(星期一、星期二、星期三、星期四、星期五、星期六、星期日)
#include<stdio.h> #include<stdlib.h> #include<math.h> #define CONF_JUN int main() { volatile int a, b; a = 2019 / 7; b = 2019 - a * 7; if (b == 0) printf("星期天"); else if (b == 1) printf("星期一"); else if (b == 2) printf("星期二"); else if (b == 3) printf("星期三"); else if (b == 4) printf("星期四"); else if (b == 5) printf("星期五"); else if (b == 6) printf("星期六"); return 0; }
2.特征数判断。
题目内容:编写程序,判断输入的正整数是否既是5又是7的整倍数。
输入样例:-9
输出样例:Data error!
#include<stdio.h> #include<stdlib.h> #include<math.h> #define JUN int main() { volatile int a; scanf("%d", &a); if (a <= 0) printf("Data error!"); else { if (a % 5 == 0 && a % 7 == 0) printf("Yes!"); else { printf("No!"); } } return 0; }
天数判断。
题目描述
题目内容:编写程序,从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。
输入样例:2019-3
输出样例:31
#include<stdio.h> #include<stdlib.h> #include<math.h> #define JUN int main() { volatile int a, b; scanf("%d-%d", &a, &b); if (a % 4 == 0 && a % 400 == 0) { if (b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 || b == 12) printf("31\n"); if (b == 2) printf("29\n"); else { printf("30\n"); } } else { if (b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 || b == 12) printf("31\n"); else if (b == 2) printf("28\n"); else { printf("30\n"); } } return 0; }
后面几章的章节测验有详解嘛,一人血书跪求!
会有的会有的