第一篇:C语言程序设计题库
郑州大学现代远程教育
《C语言程序设计》课程
学习指导书
柳宏川 编
第1章
绪论
(一)本章学习目标
掌握结构化程序设计的思想,结构化流程图描述,算法设计基础和良好程序设计风格。
(二)本章重点、要点
C语言特点,算法概念及NS图形描述,结构化程序设计思想,三种基本结构:顺序结构、选择结构和循环结构,使用良好的程序设计风格。
(三)练习题
1_1.什么是低级语言? 1_2.什么是高级语言?
1_3.面向过程语言的特点是什么? 1_4.什么是算法? 1_5.算法有什么特点?
1_6.结构化算法的基本结构有哪些? 1_7.结构化程序设计的标准有哪些?
第2章
C语言程序的开发过程
(一)本章学习目标
熟悉C程序开发环境,熟练掌握调试工具的使用,掌握C语言程序结构与语法规则。
(二)本章重点、要点
C程序开发环境工具的使用,C语言程序结构与语法规则。
(三)Turbo C 的操作指南
开发一个C语言程序一般包括3个主要步骤:编辑,编译和连接。掌握调试C语言程序的全过程。
编辑:根据求解算法,开发人员使用文本编辑器编辑代码,生成源程序代码,扩展
1)2) 名为.C。
编译:编译时,编译器首先检查源程序中每条语句的词法和语法。当发现错误时,在屏幕上显示错误的位置、错误类型等相关信息。根据错误信息,重新使用编辑器进行查错并修改,然后重新编译直到所有的词法和语法错误都被排除。正确编译后产生二进制目标文件,扩展名为.OBJ。
连接:编译后产生的目标文件是可重定位的程序模块,但不能直接运行。连接是将目标程序、库函数和其它目标程序连接到一起,生成可执行的程序。扩展名为.EXE。运行:源代码经过编译、连接,生成可执行程序后,就可以进行程序的运行了。编译过程发现的错误可分为两类。
一类是局部语法错误。例如,缺失了分号、逗号,或者引用了错误的数据对象。另一类是程序内部上下文关系方面的错误。例如,需要使用的数据对象没有定义。连接时,也可能产生错误。例如,连接文件找不到等,具体不再叙述。
源代码经过编译、连接,生成可执行程序后,还需要进行测试。测试的目的是发现程序的错误。一般通过输入一些实际数据来验证程序执行结果的正确性。如果程序执行中出现问题,或发现程序的输出结果不正确,需要设法找到出错的原因,并修改源程序,重新进行编译、连接,再测试和调试,不断反复,直到程序正确无误。
第3章
基本数据类型
(一)本章学习目标
熟练掌握标识符的概念,基本数据(整型、实型、字符型等),常量,转义符,变量,变量的赋值。
(二)本章重点、要点
标识符的组成规则,基本数据类型及对应的名称(整型、实型、字符型等),常量,转义符,变量,变量名,变量的赋值等。
(三)练习题
3_1.基本整型数据的输出。3_2.实型数据的输出。3_3.字符型数据的输出。
3_4.C语言标识符的命名规则如何? 3_5.C语言的基本数据类型有哪些? 3_6.什么是常量? 3_7.什么是变量?
3_8.转义字符有什么作用?举例说明。
3_9.字符串常量与字符常量的表示有什么不同?
(二)本章重点、要点
循环控制语句:while语句,do…while语句,for语句,循环初始条件、循环终止条件、循环体和循环变量,循环的嵌套,辅助控制语句,continue语句,break语句,goto语句。
(三)练习题
7_1.用while语句,求连加式1 + 2 +...+ n(n > 2)的值。7_2.用do…while语句,求连加式1 + 2 +...+ n(n > 2)的值。7_3.求解奇数的连加式1 + 3 + 5 +...+ n(n > 10)的值。7_4.将如图所示的三角形图案显示到屏幕上。
7_5.判断一个整数是否为素数。
第8章
函数
(一)(一)本章学习目标
熟知函数的结构,正确进行函数定义,掌握函数头部,函数体,函数的返回值等概念,理解函数的功能,理解函数参数的意义,掌握有参函数的调用和无参函数的调用,掌握运用函数调用的方式,掌握函数的声明方法,理解函数的原型的概念。
(二)本章重点、要点
函数的定义,函数头部,函数体,函数的值,返回语句,函数的功能,函数的调用,有参函数的调用,无参函数的调用,函数调用的方式,函数的声明与函数的原型。
(三)练习题
8_1.编写程序,通过调用函数imin,求两个表达式的最小值。
8_2.编写程序,通过调用PtrStar函数,输出4行“@”号,每行10个。
8_3.编写程序,输入一个年份,通过调用函数判断其是否为闰年。
8_4.编写程序,输入两个数,输出其中绝对值最大的数。要求:求绝对值和求最大值分别使用函数完成,在求最大值的函数中调用求绝对值的函数。8_5.编写函数,完成显示下列所示的三角形图案,行数由函数参数决定。
8_6.编写程序,通过调用【实例8_5】中的函数,输出三个三角形的图案。
第9章
数组
(一)本章学习目标
张确使用一维数组和二维数组去解决问题。学会使用数组作为函数参数、数组元素作为函数的参数和数组名作为函数参数的方法。
(二)本章重点、要点
一维数组,一维数组的定义,一维数组元素的引用,一维数组在内存中的存储,一维字符数组的说明。二维数组,维数组的定义,二维数组元素的引用,二维数组在内存中的存储。数组作为函数参数,数组元素作为函数的参数,数组名作为函数参数。
(三)练习题
9_1.用随机函数产生15个100以内的随机整数存入一维数组,然后分三行输出,每行5个数
9_2.将一个一维数组a[9]中各元素值按行的顺序放入二维数组b[3][3]中。9_3.将一个二维数组b[5][5]中各元素值列优先的顺序放入一维数组a[25]中。9_4.有一个m×n矩阵,各元素值由随机数产生,求其转置矩阵并输出。
9_5.有一个m×n矩阵,找出最大元素值及其最大元素值所在的行、列位置。9_6.将矩阵M(n,n)对角线上的元素置为1,其余元素置为0。
第10章
结构体与共用体
(一)本章学习目标
掌握并正确使用结构体类型、结构体与数组,共用体,共用体类型。
(二)本章重点、要点
结构体类型的定义,结构体变量的定义,结构体变量的引用,结构体成员变量的引用,结构体变量的初始化。结构体与数组,共用体,共用体类型和共用体变量的定义,共用体变量的引用。
(三)练习题
10_1.设有学生信息如下:学号(长整型)、姓名(字符串型)、年龄(整型)、课程1成绩(实型)、课程2成绩(实型)、课程3成绩(实型)、课程4成绩(实型)、课程5-6
读写。
(三)练习题
12_1.利用文本编辑软件在磁盘上建立一个有n个学生的学号、姓名及英语、数学和计算机三门课程成绩的数据文件。编写程序将建立的数据文件读出且求出每个学生的平均成绩。12_2用定义结构类型的方法,编写程序建立一个具有学生学号、姓名、总分和联系电话的记录文件。12_3编写程序,利用第12_2建立的记录文件,从键盘上输入一个学号,查寻该位同学信息。12_4编写程序,将第12_3题建立的文件复制到另一个文件。
第13章
运算符与表达式
(一)本章学习目标
深入理解运算符和表达式,掌握位运算方法。
(二)本章重点、要点
运算符与表达式,赋值运算符,复合赋值运算符,赋值表达式,赋值运算符的优先级和结合方向。逗号运算符与逗号表达式,逗号表达式的求解顺序,逗号运算符的优先级,逗号运算符的扩展形式。条件运算符与条件表达式,条件运算符的求解顺序,条件运算符的优先级,条件运算符的结合方向,条件表达式的其它形式。自增自减运算符,前置运算,后置运算,自增自减运算符的优先级与结合方向,位运算,位运算符,位运算的功能,与位运算有关的复合赋值运算符,不同长度的数据的位运算,表达式的求解。
(三)练习题
13_1.利用条件运算符实现大小写字母的转换。
13_2.使用for循环求1至100的和。要求将所有的命令放入一个for循环结构。13_3.将下列符号函数使用一个条件表达式完成。
13_4.若int a=0,b=1,c=2,判断下列表达式执行后a,b,c及表达式的值(1)逻辑表达式
a++&&b++&&c++(2)逻辑表达式
++a&&b++&&c++(3)逻辑表达式
++a&&--b&&c++(4)逻辑表达式
a++||b++||c++(5)逻辑表达式
++a||b++||c++(6)逻辑表达式
a++||--b||c++(7)逻辑表达式
a++||b++&&(c-=2)(8)逻辑表达式
a++&&b++||(c-=2)(9)逻辑表达式
++a&&b++||(c-=2)
13_5.若a=1,b=2,c=3,d=4,m=1,n=3,则逻辑表达式(m=a>b)&&(n=c>d)13_6.解释x!= 0.0 && y/x > 1.0的功能。
第14章
变量的存储
(一)本章学习目标
掌握变量的存储概念,理解变量的类别和作用域。
(二)本章重点、要点
变量的存储单元,整型变量在内存中的存储,字符型变量在内存中的存储,实型变量在内存中的存储。变量的作用域,内部变量,外部变量,变量的生存期,auto变量,全局变量,static变量,register变量。
(三)练习题
14_1.在C语言中,变量的存储类别有哪4种? 14_2.什么是外部变量?其特点有哪些? 14_3.寄存器变量有什么特点? 14_4.什么是变量的作用域? 14_5.什么是变量的生存期?
第15章
指针
(二)(一)本章学习目标
深入理解指针,掌握高层次指针应用,掌握链表的使用。
(二)本章重点、要点
指针与数组,一维数组与一维数组指针,二维数组的指针及数组元素的访问,字符串指针。指针数组,指针数组,指向指针的指针,main函数的参数,函数指针。结构体指针,指向结构体的指针,指向结构体数组的指针,存储管理函数。链表,链表的概念,单链表的基本操作。
(三)练习题
15_1.编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12 时,显示相应的月份名,键入其他整数时显示错误信息。15_2.调用MaxMin函数,返回数组的最大值和最小值。
第16章
函数
(二)(一)本章学习目标
深入理解函数,从存储方面解释函数的调用。
(二)本章重点、要点
函数调用时的内存,函数的活动,程序运行时存储空间的划分,函数的活动记录。参数的传递机制,C语言参数传递,指针参数,数组参数。递归函数,直接递归与间接递归,递归函数的调用过程。
(三)练习题
16_1.设计一个函数把两个整数形参中较大的那个数的地址作为函数值返回,并编写主函数实现调用。
16_2.编写函数,比较两个字符串大小。若相等返回0,大于时返回1,否则返回-1。
第17章
预处理命令
(一)本章学习目标
正确理解预处理命令的概念,掌握预处理命令的使用方法。
(二)本章重点、要点
宏定义,无参宏定义,带参宏定义,宏的作用域。带参的宏与函数的区别,文件包含,条件编译,“# ifdef”命令,“# ifndef”命令,“# if”命令,条件编译和条件语句的比较。
(三)练习题
17_1.C语言的预处理有哪些?
17_2.预处理命令在书写格式上有什么要求?
17_3.#include <文件名>和#include “文件名”有什么不同? 17_4. 条件编译和条件语句有什么区别?
参考答案
第1章 绪论
1_1.什么是低级语言?
答:低级语言较依赖于所在的计算机系统,也称为面向机器的语言。使用低级语言编写的程序,移植性较差。低级语言主要包括机器语言和汇编语言。
机器语言是由二进制代码“0”和“1”组成的若干个数字串。用机器语言编写的程序,称为机器语言程序。机器语言程序能够被计算机直接识别并执行。但是,程序员直接编写或维护机器语言程序是很难完成的。
汇编语言是一种借用助记符表示的程序设计语言。汇编语言的每条指令都对应着一条机器语言代码。汇编语言也是面向机器的,即不同类型的计算机系统使用的汇编语言也不同。1_2.什么是高级语言?
答:高级语言编写的程序易读,易修改,移植性好。但使用高级语言编写的程序不能直接在机器上运行,必须经过语言处理程序的转换,才能被机器识别。按照转换方式的不同,可将高级语言分为解释型和编译型两大类。1_3.面向过程语言的特点是什么?
答:(1)采用模块分解与功能抽象的方法,自顶向下,逐步求精。(2)按功能划分为若干个基本的功能模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立。每一个功能模块内部都是由顺序、选择或循环三种基本结构组成。1_4.什么是算法?
答:问题的求解过程,是对数据对象的加工过程。问题的求解过程包括两个方面的内容,即对问题涉及的“数据”进行描述和对“加工过程”进行描述。对“数据”的描述,称为“数据结构”,对“加工过程”的描述,称为算法。1_5.算法有什么特点? 答:算法具有以下特点:
(1)有穷性。一个算法包含的操作步骤是有穷的,而不能是无穷的,并且操作时一般还要求是合理可行的。
(2)确定性。算法的每个操作都是确定的,而不应该具有二义性。
(3)有零个或多个输入。“输入”指的是执行算法时,需要从外界获取的必要信息。
(4)有一个或多个输出。算法的目的是为了得到计算的结果。一般地,计算结果即为输出。没有输出的算法是没有意义的。
(5)有效性。算法的每一个操作都应能有效地执行,并得到确定的结果。1_6.结构化算法的基本结构有哪些?
答:(1)顺序结构。(2)选择结构。(3)循环结构。
1121314num2 * num2;printf(“%d ^ 2 + %d ^ 2 = %dn”, num1, num2, SquareSum);printf(“%d ^ 264)% 26 + 65;printf(”%c's back is %cn“, ch, BackCh);return 0;} 第5章 C语言程序的输出与输入
325_1.编写程序求多项式 ax+bx+c的值(键盘输入a=2, b=3, c=4, x=1.414)。# include
y = a*x*x+b*x*c;printf(”%fx^2+%fx+%f=%fn“, a,b,c,y);getchar();getchar();return 0;} 变化二:
# include
# include
5_2.已知华氏温度,根据公式:C = 5/9(F-32),求摄氏温度C(结果保留两位小数)。#include
#include
5_4.用getchar()分别输入‘A’,‘B’,‘C’,并赋值给a,b,c, 然后将其转换成对应的小写字母,用putchar()将其输出。#include
x1=a+b+c= 3+ 4+ 5= 12 x2=a-b-c= 3-4-5=-6 #include
printf(”b=“);scanf(”%d“,&b);printf(”c=“);scanf(”%d“,&c);printf(”x1=a+b+c=%d+%d+%d=%dn“,a,b,c,a+b+c);printf(”x1=a-b-c=%d-%d-%d=%dn“,a,b,c,a-b-c);return 0;}
第6章 流程控制—选择控制结构
6_1.使用if语句,求解两个数中的最大值。/*程序功能:输入两个数,输出其中的大者*/ # include
break;/*求和完毕,退出当前switch语句*/ case '-': result = num1181932;
break;
} break;case 1: /*是大写英文字母*/ ch2 = ch1 + 32;break;} printf(”Input: %cnOutput: %cn“, ch1, ch2);return 0;} 6_6.编写程序,输入一个年份,判断其是否为闰年。
分析:一个年份,当且仅当符合下列两个条件之一的,即是闰年。能被4整除,但不能被100整除的年份。例如,1992年、2008年。能被400整除的年份。例如,2000年、2400年。
用flag的值,表示是否为闰年。如果flag的值为1,表示闰年;如果是0,表示非闰年。# include
int main(){ int year, flag;printf(”Input a year: “);scanf(”%d“, &year);if(year % 4 == 0){ if(year % 100!= 0)flag = 1;else { if(year % 400 == 0)flag = 1;else flag = 0;} } else flag = 0;if(flag)printf(”%d is a leap yearn“, year);else printf(”%d is not a leap yearn“, year);return 0;} 第7章 流程控制—循环控制结构
7_1.用while语句,求解连加式1 + 2 + „+ n(n > 2)的值。# include
printf(“Input a number: ”);
scanf(“%d”,&n); while(i <= n){ sum = sum + i;i=i+1;} printf(“1 + 2 +...+ %d = %dn”,n,sum); return 0; } 7_2.用do„while语句,求连加式1 + 2 +...+ n(n > 2)的值。# include
scanf(”%d“, &n);do { product = product * i;i = i + 1;} while(i <= n);/*累乘i,直到i超过n为止*/ printf(”1 * 2 *...* %d = %ldn“, n, product);return 0;} 7_3.求解奇数的连加式1 + 3 + 5 +...+ n(n > 10)的值。# include
{ printf(”*“);j = j + 1;} /*第i行输出2 * i23242526i;){ printf(” “);j = j + 1;} /*第i行输出n1){ printf(”*“);j = j + 1;} /*第i行输出2 * ii;){ printf(” “);j = j + 1;} /*第i行输出n271){ printf(”*");j = j + 1;} /*第i行输出2 * i2829303******4
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。(注:└┘代表空格)
A.10A└┘20B
B.10└┘A20B C.10 └┘A└┘20└┘ B
D.10A20└┘B 43.若变量已正确说明为float类型,要通过语句scanf(”%f %f%f”, &a, &b, &c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式为()。
A.10<回车>
B.10.0,22.0,33.0<回车>
22<回车>
C.10.0<回车>
D.10
22<回车> 22.0
33.0<回车>
33<回车> 44.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。(注:└┘代表空格)int x1,x2; char y1,y2;
scanf(”%d%d”,&x1,&x2);scanf(”%c%c”, &y1,&y2);A.1020AB
B.10└┘20└┘ABC C.10└┘20
D.10└┘20AB AB 45.已有定义int a=-2;和输出语句:printf(”%8lx”,a);以下正确的叙述是()。A.整型变量的输出格式符只有%d一种
B.%x是格式符的一种,它可以适用于任何一种类型的数据 C.%x是格式符
D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 46.有如下程序段,对应正确的数据输入是()。float x,y;scanf(”%f%f”, &x,&y);printf(”a=%f,b=%f”, x,y);A.2.04<回车>
B.2.04,5.67<回车>
5.67<回车> C.A=2.04,B=5.67<回车>
D.2.055.67<回车> 47.有如下程序段,从键盘输入数据的正确形式应是()。(注:└┘代表空格)float x,y,z;scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);A.123
B.x=1,y=2,z=3 C.1,2,3
D.x=1└┘ y=2└┘ z=3 48.以下说法正确的是()。
A.输入项可以为一个实型常量,如scanf(”%f”,3.5);B.只有格式控制,没有输入项,也能进行正确输入,如scanf(”a=%d,b=5d”);C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(”%4.2f”,&f);D.当输入数据时,必须指明变量的地址,如scanf(”%f”,&f);49.根据定义和数据的输入方式,输入语句的正确形式为:()。(注:└┘代表空格)已有定义:float x,y;
数据的输入方式:1.23<回车>
4.5<回车> A.scan(”%f,%f”,&x,&y);
B.scanf(”%f%f”,&x,&y);C.scanf(”%3.2f└┘%2.1f”,&x,&y);
D.scanf(”%3.2f%2.1f”,&x,&y);50.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。#include ”stdio.h” main(){char s1,s2,s3;输入语句;
printf(”%c%c%c”,s1,s2,s3);} 输入形式:A└┘B└┘C<回车>
(注:└┘代表空格)输出形式:A└┘B A.scanf(”%c%c%c”,&s1,&s2,&s3);B.scanf(”%c└┘%└┘c%c”,&s1, &s2,&s3);C.scanf(”%c,%c,%c”,&s1,&s2,&s3);D.scanf(”%c%c”, &s1, &s2,&s3);51.以下程序的执行结果是:()。#include ”stdio.h” main(){ int x=2,y=3;printf(”x=%%d,y=%%dn”,x,y);} A.x=%2,y=%3
B.x=%%d,y=%%d C.x=2,y=3
D.x=%d,y=%d 52.以下程序的输出结果是()。(注:└┘代表空格)#include ”stdio.h” main(){ printf(”nstring1=%15s*”, ”programming”);printf(”nstring2=%-5s*”, ”boy”);printf(”string3=%2s*”, ”girl”);} A.string1=programming└┘└┘└┘└┘*
B.string1=└┘└┘└┘└┘programming*
string2=boy*
string2=boy└┘└┘*string3=gi*
string3=gi*
C.string1=programming└┘└┘└┘└┘*
D.string1=└┘└┘└┘└┘programming*
string2=└┘└┘boy*string3=girl*
string2=boy└┘└┘*string3=girl* 53.根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。#include ”stdio.h” main(){ int a;
float b;
748
第二篇:C语言程序设计试题题库
第一章 基础知识 一.填空
1.每个C程序都必须有且仅有一个________ 函数。
2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载 和执行。
3.软件是程序,以及______、使用和维护所需要的所有文档。4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。
5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。6.C语言是由________组成的。
7.C语言的函数可分为主函数main、标准库函数和_________。8.一个函数是由两部分组成的,即:________和 函数体。
9..编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动 化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。
11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。
13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。14.C程序的执行均是由执行_________开始。
15.函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C语句 组成的执行部分。
16.C语言程序中一条简单语句是以________字符作为结束符的。17.C语言是结构化、________的程序设计语言。
18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。
19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。解答: 1.main()2.编译
3.开发
4.指令序列
5.高级语言
6.函数
7.自定义函数
8.函数首部
9.翻译
10.应用软件
11.二进制代码
12.助记符
13.# 14.main函数
15.声明部分
16.;(或分号)
17.模块化
18.翻译
19.执行速度
20.PASCAL 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第二章 常量、变量和表达式 一.填空
1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。2.以16位计算机为例,若定义double a;则变量a占______个字节的内存空间。3.以16位计算机为例,若定义long double;则变量a占______个字节的内存空间。4.在______位机,int型占4个字节。
5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。6.在C语言中,基本数据类型有:______。
7.整型常量046转换为十进制数等于______。
8.整型常量054转换为十进制数等于______
。9.整型常量0x125转换为十进制数等于_____。
10.整型常量0x7C转换为十进制数等于______。
11.整型常量39转换为八进制等于______。
12.实数473.468写成规范化指数形式,则应为______。
13.实数0.0453写成规范化指数形式,则应为_____。
14.将0x123转换为二进制等于______。
15.字符’A’表示成十六进制等于_____。
16.在C语言中,称代表常量的标识符为______。
17.C语言中是用编译预处理命令______来定义符号常量
18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为_____,主要用来表示控制及不可见的字符或者一些图形符号。
19.语句printf(“106”)执行的结果输出是______。
20.语句printf(“b”)执行的结果输出是______。
21.语句printf(“b”)执行的结果输出是______。
22.语句printf(“102”)执行的结果输出是______。
23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为______。
24.字符串常量“Hello, everyone!”占据的内存空间为______个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______个字节。
26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分 27.十六进制常量由0~9和______组成
28.unsigned long类型常量通常以______为后缀
29.实型常量通常有小数形式和______两种表达方式
30.C语言中是用编译预处理命令______来包含其他源文件
31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出 32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______和变量值。33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______开头。34.在16位机中,sizeof(“hellon”)等于______。
35.在16位机中,printf(““hello””)等于_____。
36.字符变量在内存中占用______个字节的存储空间。37.若有定义int x=27, y=6;则表达式 x/y的值为______。38.若有定义int x=47, y=8;则表达式 x%y的值为______。
39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=% c”,ch1,ch2);则输出为______。
40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=% c”,ch2,ch3);则输出为______。
41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输 出为______。
42.表达式(int)(13.7+25.6)/4%5的值是______。
43.表达式 3.6-5/2+1.2+5%3的值是______。
44.表达式54%10/2+4.0*(8/5)的值是______。
45.若定义int x;double b=5.45;执行x=b后,则x的值为______。
46.若定义int y;char c='A';执行y=c后,则y的值为______。
47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为______。
48.若a=5,则执行a*=7-3语句后,a的值是______。
49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。
50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是_____。
51.若定义int m=7,n=12;则表达式n%=m-m%5的值是______。
52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为______。
53.int a=2;!a++的值为_____。
54.int a=0;!++a的值为______。
55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为______。
56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为______。
57.#define MM(a,b)(a-b)?a:b int a=2,b=6;printf(“%dn”,MM(a,b))的值为______。
58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。
59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。
60.int i=2,j;printf(“%d”,j=i<1)的值为:______。
解答: 1.4;2.4;3.10;4.32;5.指针类型;6.int、float、double、char;7.38;8.44;9.293; 10.124;11.047;12.4.734680e+002;13.4.530000e-002;14.100100011;15.x41/41H; 16.符号常量;17.#define;18.转义字符常量;19.F;20.b;21.b;22.B;23.e;24.16; 25.11;26.0;27.A~F;28.U;29.指数形式;30.#include;31.“ ”;32.变量类型; 33.数字;34.7;35.“hello”;36.1;37.4;38.7;39.ch1=C, ch2=A;40.ch2=A, ch3=C; 41.i=3, j=5;42.4;43.4.800000;44.6.000000;45.5;46.65;47.4;48.20;49.1; 50.1;51.2;52.4;53.0;54.0;55.4;56.2.500000;57.2;58.fffffffd;59.3,1; 60.0 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第三章 顺序结构; 一.填空
1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。
2.常用于字符输入的函数为:________________。3.常用于字符输出的函数为:________________。4.常用于字符串输入的函数为:________________。5.常用于字符串输出的函数为:________________。6.格式输入函数的一般形式为:________________。7.格式输出函数的一般形式为:________________。
8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。
13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘 输入_______。
14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为
1、j的值为
2、k的值为3,请写出正确的输入语句________________。
15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是___________。
16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c=%fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是_____________。17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是__________________。18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是____________。
19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);则printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。
20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是___。21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是______________。22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_________________。
23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。
A)10 <回车>22<回车>33<回车>
B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车>
D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是________________。
25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“%d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。26.以下说法中正确的是 _____________________。
A)#define和printf都是C语句;B)#define是C语句,而printf不是; C)printf是C语句,但#define不是;D)#define和printf都不是C语句
27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是________________。28.以下叙述中正确的是_____________________。
A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是_____________________。
30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+ x;,则printf(“%fn”,z);的输出结果是_____________________。
31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是________________。32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %f n”,n,x);的输出结果是_____________________。
33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若 从键盘输入:10 20 30<回车>。输出结果是_____________________。
34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果 是___________。35.有以下语句段
int n1=10,n2=20;
printf(“________________”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。
38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是__________。39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是________。40.语句printf(“10289n”);的数据结果为:__________________。解答: 1.表达式语句;2.getchar();3.putchar();4.gets();5.puts(); 6.scanf(“格式控制字符串”,地址表列);7.printf(“格式控制字符串”,输出表列);8.stdio.h;9.scanf(“%c”,&ch);10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”);11.printf(“x=%1dn”,x);12.1 2;13.i=10,j=20;14.scanf(“%d,%d,%d”,&i,&j,&k);15.m=123n=456p=789;
16.a=98, b=765.000000, c=4321.000000;17.256 400;18.102,10;19.1 65 1.5 6.5;20.0;21.32,1a;22.1234;23.B;24.3 3;25.6 6 6.0 6.0;26.D;27.17,21,11;28.C;29.8,16,10;30.13.700000;31.a=%d,b=%d;32.2 20.000000;33.10300;34.25 21 37;35.n1=%dnn2=%d;36.-3;37.16;38.2,1;39.0;40.B89;
二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第四章 选择结构 一.填空
1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结 果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s” , “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。
5.在C语言中,用于实现选择结构的语句有()语句和()语句。6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)„。7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。9.表达式98 && 8 && 31 &&(9812;
printf(“%dn”, y);
return 0;} 输入:12<回车> 17.#include
float x, y;
char op;
double r;
scanf(“%c%f%f”,&op,&x,&y);
switch(op)
{
case '+': r = x + y;break;
case '-': r = x1);
t = *(s + i);
*(s + i)= *(s + j);
*(s + j)= t;
} }
void main(){
int a[6] = {10, 6, 23,-90, 0, 3}, i;
invert(a, 0, 5);
for(i = 0;i < 6;i++)printf(“%d, ”, a[i]);
printf(“n”);
} 32.int func(int a[][3]){
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
a[i][j]=i+j;
if(i==j;
sum = sum+a[i][j];
}
return sum;} int main(){
int a[3][3]={1,3,5,7,9,11,13,15,17};
int sum;
sum=func(a);
printf(“sum=%d”,sum);
return 0;} 33.# include
int i=10;void fun();void main(){
int i;
for(i=2;i>0;i--)
fun();} void fun(){
i*=2;
printf(“i=%dn”, i);} 34.#include
int fun(int n)
{
if(n<=1)
return 1;
else
return fun(n-1)*n;
}
void main()
{
int i,j=0;
for(i=1;i<=3;i++)
j+=fun(i);
printf(“j=%dn”,j);
} 35.#include
int funa(int a, int b)
{
int t;
if(a > b)
t = a/b
else
t = a%22;
return t;
}
void main(){
int a=33, b=22,c;
c=funa(a,b);
printf(“c=%dn”, c);
} 36.# include
int i;
for(i=2;i>0;i--)
fun(i);} void fun(int i){
i*=2;
printf(“+%d+”, i);} 37.# include
int x=879;
fun(x);} void fun(int n){
int a,b,c,t;
a = n % 10;
b =(n/10)% 10;t;}
if(b < c){ t = b;b = c;c = t;}
if(a < b){ t = a;a = b;b = t;}
printf(“%d”, b);} 38.#include
int t;
c =(n/100)% 10;if(a < b){ t = a;a = b;b =
if(a > b)
{
t = a;
a = b;
b = t;
}
return t;} void main(){
int a=33, b=22,c;
c=funa(a,b);
printf(“c=%dn”, c);} 39.#include
int swap(int x, int y)
{
int z;
z=x%10;
x=y%10;
y=z;
z=x;
return z;
}
void main()
{
int a=38, b=29,c;
c=swap(a,b);
printf(“%d%dn”, a,c);} 40.#include
if(n==1)
printf(“*n”);
else
{
printf(“-”);
fun(n-1);
} } void main(){
int i,j=0;
for(i=1;i<4;i++)
fun(i);
printf(“XiaoXin!”);} 解答: 1.p=27;2.运行结果:12345;3.3
5;4.5 3,3 2;5.2;6.11 21 31;7.3
7; 8.6
5;9.012345;10.a1=1,a2=3,a3=2;11.10,20,30;
12.a=2,b=3;a=2,b=3;13.10,20,30;14.a=1.0000;15.567;16.4;17.3.000000;18.80,-20;19.-1;20.j=12;21.4,3,5;22.18; 23.Hello, world!Hello, world!Hello, world!;24.x=3;25.x=22; 26.i = 7;j = 6;x = 7 i = 2;j = 7;x = 5;27.7; 28.(1)x = 2 y = 3 z = 0(2)x = 4 y = 9 z = 5(3)x = 2 y = 3 z = 0 29.10, 20, 40, 40;30.125;31.3,0,-90,23,6,10;32.sum=6;33.i=20 i=40;34.j=9;35.c=1 36.+4++2+;37.8;38.c=33;39.389; 40.*
-*
--*
XiaoXin!三.补充程序
1.定义了一个max 函数,找两个整数的最大值,其位置在main之后.#include “stdio.h” ________________________ int main(){ int x,y,z;printf(“input two numbers:n”);scanf(“%d%d”,&x,&y);________________________;printf(“maxmum=%d”,z);return 0;} int max(int a,int b){ ________________________;if(a>b)w=a;else w= b;________________________;} 2.用函数nzp判别一个整数a的值,若大于0 则输出该值,若小于等于0则输出0值。
#include “stdio.h” ________________________nzp(________________________){ if(v>0)________________________ else printf(“%d ”,0);
} int main(){ int a;printf(“input number a:n”);scanf(“%d”,&a);________________________ return 0;} 3.主函数调f1计算n阶乘.#include “stdio.h” ________________________ int main(){ int n;long s;scanf(“%d”,&n);
________________________ printf(“ns=%ldn”,s);return 0;} long f2(int n){ ________________________ int i;for(i=1;i<=n;i++)c=c*i;________________________ } 4.主函数调fun计算1+1/2!+1/3!+...+1/30!的和.#include “stdio.h” ________________________ int main(){ int n;float s;________________________ printf(“1+1/2!+1/3!...+1/30!=%fn”,s);return 0;} float fun(){ int n;float t=1;________________________ for(n=1;n<=30;n++){
t*=1/n;s+=t;} ________________________ } 5.数组a中存放了一个学生5门课程的成绩,求平均成绩。
#include “stdio.h” ________________________ int main(){ float sco[5],av;int i;printf(“ninput 5 scores:n”);for(i=0;i<5;i++)scanf(“%f”,&sco[i]);________________________ printf(“average score is %5.2f”,av);return 0;} float aver(float a[]){ int i;float s=a[0];________________________ for(i=1;i<5;i++)s=s+a[i];av=s/5;________________________ } 6.用递归法计算n!#include “stdio.h” ________________________ int main(){ int n;long y;printf(“ninput a inteager number:n”);scanf(“%d”,&n);________________________ printf(“%d!=%ld”,n,y);return 0;}
________________________ff(int n)
{
long f;
if(n<0)printf(“n<0,input error”);
else if(n==0||n==1)f=1;else f=ff(n-1)*n;
________________________
} 7.输入正方体的长宽高l,w,h。求体积及三个面x*y,x*z,y*z的面积。
#include “stdio.h” int s1;________________________ int vs(int a,int b,int c){ ________________________ v=a*b*c;s1=a*b;s2=b*c;s3=a*c;________________________ } int main(){ int v,l,w,h;printf(“ninput length,width and heightn”);scanf(“%d%d%d”,&l,&w,&h);________________________ printf(“v=%d s1=%d s2=%d s3=%dn”,v,s1,s2,s3);return 0;} 8.输入两个正整数num1,num2,求其最大公约数.#include “stdio.h” ________________________ int main(){ int d;int num1,num2;printf(“please input two numbers:n”);scanf(“%d,%d”,&num1,&num2);________________________ printf(“gongyueshu:%dn”,d);return 0;} int gongyue(int a,int b){ ________________________ while(b){ temp=a%b;a=b;b=temp;} ________________________ } 9.利用递归函数调用方式,输出6个数字。
#include “stdio.h” ________________________ int main(){ int w=5;fun(w);printf(“n”);return 0;} ________________________fun(________________________){ if(k>0)________________________;printf(“%d”,k);
} 10.主函数调printstar打印一串星形图案.#include “stdio.h”
________________________
int main()
{
________________________;
return 0;}
________________________printstar(________________________)
{
printf(“*************n”);
} 解答: 1.int max(int a,int b);z=max(x,y);int w;return w; 2.void;int v;printf(“%d”,v);nzp(a); 3.long f2(int n);s=f2(n);long c=1;return c;4.float fun(void);s=fun();float s=0;return s;5.float aver(float a[]);av=aver(sco);float av;return av;6.long ff(int n);y=ff(n);longreturn f;7.int s2,s3;int v;return v;v=vs(l,w,h);8.int gongyue(int a,int b);d=gongyue(num1,num2);int temp;return a;9.void fun(int k);voidint k;fun(k-1);10.void printstar(void);printstar();voidvoid 四.改错题(解答)五.编程一(解答)六.编程二
1.编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。
2.编程实现:求出10~10000之内的所有素数。要求素数判断通过自定义函数来实现。3.编程实现:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立 方和等于该数本身。例如:153是一个“水仙花数”,因为。要求水仙花数的判断通过自定 义函数来实现。4.编程实现:打印出2~1000之间的所有完数。所谓完数,是指这样的数,该数的各因子之和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28都是完数。要求完数的判断通过自定义函数来实现。
5.编程实现:打印出10~9999之间的所有回文数,要求每10个数一行输出。要求回文数的判断通过自定义函数来实现。
6.编程实现:打印出1~9999之间的所有同构数,所谓同构数是指一个数如果出现在该数平方的右端,该数就是同构数。如5,25都是同构数。要求同构数的判断通过自定义函数来实现。
7.给定一5*5的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要求:对角线元素之和及矩阵输出分别通过两个自定义函数来实现。
8.编程实现:输入一4*4的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过通过自定义函数实现矩阵的输入输出。
9.编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中,然后输出,要求数制转换通过自定义函数来实现。
10.编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位数,x为给定的数,a中存放该数的各个位。
11.编写程序从键盘输入x和n的值,求xn(n为大于等于零的整数),要求用 递归函数求xn。
12.编写实现:输入两个正整数m,n(m>n),计算从m个元素中任意取n个元素的组合,计算机公式为:。要求通过递归函数求阶乘。
13.编程实现:从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!”;如果找不到,则打印“Not found!”。要求通过自定义函数实现查找功能。
14.从键盘输入某班20个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。
15.编程实现:从键盘任意输入某班20个学生的姓名和成绩,输出最高分及不及格学生的人数。要求分别用两个自定义函数求最高分和不及格人数。
16.编程实现:输入2个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要求每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。17.编程实现:输入N名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工信息。要求:职工信息的输入和输出分别通过自定义函数来实现。
18.编程实现:从键盘输入10名学生的信息,包括学号、姓名、成绩,用一个排序函数sort 完成学生成绩降序排列,并输出学生排序后的结果。
19.编程实现:任意输入一组不多于20个的升序排列的若干个整数,任意输入不多于10个的整数(-1作为输入结束标志),将其插入到该序列中,使其依然有序。要求:通过自定义函数实现将一个整数插入到一个有序序列中,使其依然有序。
20.一个班级有30个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。要求编程实现以下功能: 1)从键盘上输入30个学生的信息,平均成绩通过公式:平均成
第三篇:C语言程序设计基础单项选择题库
分类:
一、概念(13---51,54,55)、数据类型、输入输出格式、转义符、运算及表达式等:1---66
二、选择语句:67---72(其中67为条件运算,72可归于一类);
三、循环语句:73---102(其中78为输出格式可归于一类)
四、数组:103---133(其中123 – 125为与数组相关的函数调用)
五、函数调用:134---156
六、文件:157 – 183
七、指针:184---195
八、结构体:196---207(204.205,206为函数调用)
1、在C语言中,最基本的数据类型包括
(A)整型、实型、字符型(B)整型、实型、逻辑型(C)整型、字符型、逻辑型(D)实型、字符型、逻辑型 2 C语言中整常数的书写形式不能使用的数制形式是(A)十进制(B)十六进制(C)八进制(D)二进制 3 字符串常量“abncde125”包含字符的个数是(A)8(B)12(C)9(D)13 4 C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(A)必须为下划线(B)可以是这三种字符中的任一种(C)必须为字母或下划线(D)必须为字母 5 下列是用户自定义标识符的是(A)#x(B)_x(C)2x(D)int 6 在C语言中,下列常数不能作为常量的是(A)0xA3(B)068(C)5.6E-3(D)2e5 7 在C语言中,运算对象必须是整型的运算符是(A)%(B)>=(C)&&(D)= 8 下列表达式与x =(y++)等价的是(A)x = ++y(B)x = x + 1, y = x(C)x = y, y = y + 1(D)x += y + 1 9 若定义int x = 17;,则表达式x++ * 1 / 6的值是(A)1(B)2(C)3(D)4 10 如果在一个C语言表达式中有多个运算符,则运算时应该(A)只考虑优先级(B)只考虑结合性(C)先考虑优先级,然后考虑结合性(D)先考虑结合性,然后考虑优先级 11在C程序中,下面叙述不正确的是
(A)x和X 是两个不同的变量(B)从键盘输入数据时,对整型变量只能输入整型数据,对于实型变量只能输入实型数据(C)逗号运算符的优先级最低(D)若x、y类型相同,则执行语句y = x,后,将把x的值放入y中,而x的值不变 12 已知字符A的ASCII值为65,若定义int i;,则执行语句i = 'A' + 3.5;后,正确的叙述是(A)i的值是字符E(B)语句不合法
(C)i的值是字符A的ASCII值加上3,即68(D)i的值是字符A的ASCII值加上3.5,即68.5 13 C语言是计算机高级语言,它适合作为系统描述语言,它
(A)不以用来编写系统软件,可以用来编写应用软件(B)不以用来编写系统软件,不可以用来编写应用软件
(C)可以用来编写系统软件,不可以用来编写应用软件(D)可以用来编写系统软件,也可以用来编写应用软件 14 在纸上写好一个C语言程序后,上机运行的基本步骤为
(A)编辑、连接、编译、运行(B)编译、连接、编辑、运行(C)编译、编辑、连接、运行(D)编辑、编译、连接、运行 15 用C语言等高级语言编写的程序称为(A)可执行程序(B)编译程序(C)目标程序(D)源程序 16 一个C语言源程序经过“编译程序”翻译后生成一个二进制代码文件,它的扩展名为(A).dat(B).exe(C).c(D).obj 17 通过“连接程序”软件,把C语言目标程序与C语言提供的各种库函数连接起来生成一个文件,它的扩展名为(A).exe(B).dat(C).obj(D).c 18 下面叙述中正确的是
(A)在C语言程序中,要调用的函数必须在main()函数中定义(B)C语言程序总是从main()函数开始执行
(C)C语言程序总是从第一个函数开始执行(D)在C语言程序中,main()函数必须放在程序的开始位置 19 在一个C语言源程序中,main()函数的位置(A)必须在其他所有的函数之后(B)可以在任意位置(C)必须在其他所有的函数之前(D)必须在固定位置 20 一个C语言程序由
(A)若干个过程组成(B)若干个子程序组成(C)一个主程序和若干个子程序构成(D)一个主函数和若干个子函数构成 21一个函数的组成有
(A)函数的声明部分和执行部分(B)函数名、函数类型、函数参数名、函数参数类型(C)主函数和子函数(D)函数首部和函数体 22 下面叙述不正确的是
(A)在程序中任意合适的地方都可以加上注释以便阅读(B)C语言中的每条执行语句都需要用分号结束
(C)include命令所在行后面需要加分号(D)C语言具有高级语言的功能,也具有低级语言的一些功能 23 下面叙述正确的是
(A)在C程序中,main()函数的位置必须在其他所有的函数之前(B)C语言自身没有输入输出语句
(C)在C程序的编译过程中可以发现注释中的拼写错误(D)C程序的每一行只能写一条语句 24 在C语言中,用来表示“取地址”的符号是(A)$(B)#(C)@(D)& 25 在C语言中,用于结构化程序设计的三种基本结构是(A)顺序结构、选择结构、转移结构(B)顺序结构、条件结构、循环结构(C)顺序结构、选择结构、重复结构(D)顺序结构、选择结构、循环结构 26 一个算法应具有“确定性”等5个特性,则对另外4个特性描述错误的是(A)有效性(B)有穷性(C)有零个或多个输入(D)有零个或多个输出 27 程序设计一般可以简化为以下4个步骤,其中首先应该完成的是(A)调试并运行程序(B)编写程序(C)建立数学模型(D)设计数据结构和算法 28 以下不正确的C语言标识符是(A)ab.c(B)a_bc(C)abc(D)ABC 29 以下正确的C语言标识符是(A)a+b(B)test!(C)_123(D)%x 30 编辑程序的功能是
(A)命令计算机执行指定的操作(C)将C源程序编译成目标程序
(B)调试程序
(D)建立并修改程序 31 C语言程序的基本单位是(A)过程(B)函数(C)子程序(D)标识符 32 下列说法中错误的是
(A)主函数可以分为两部分:主函数首部和主函数体(B)主函数可以调用任何非主函数的其它函数
(C)任何非主函数可以调用其它任何非主函数(D)程序可以从任何非主函数开始执行 33 在下列数据中属于“字符串常量”的是(A)ABC(B)“ABC”(C)'abc'(D)'a' 34 在C语言中,字符'n'在内存占用的字节数是(A)1(B)2(C)3(D)4 35 字符串“ABC”在内存占用的字节数是(A)3(B)4(C)6(D)8 ·试题讲评
编译字符串“ABC”时,编译器会自动加上字符串结束标志' ',因此字符串“ABC”占用的内存为4个字节。36 在C语言中,合法的长整型常数是(A)0L(B)4321(C)0.07654321(D)2.3456e10 ·试题讲评
4321在C语言中默认为是int型数据,数据后加L或l表示该数的类型为长整型。37 char型常量在内存中存放的是(A)ASCII值(B)BCD码值
(C)内码值(D)十进制代码值 38 设m, n, a, b, c, d均为0,执行(m = a == b)||(n = c == d)后,m,n的值是(A)0,0(B)0,1(C)1,0(D)1,1 ·试题讲评
(1)在C语言中,“||”表示逻辑或,“&&”表示逻辑与。
(2)对于“m =(表达式a)||(表达式b)”,若“表达式a”为真或“表达式b”为真,则m为真。特别指出,若“表达式a”为真,则m的值肯定为真(无论“表达式b”的结果是否为真),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。
(3)对于“m =(表达式a)&&(表达式b)”,若“表达式a”为假或“表达式b”为假,则m为假。特别指出,若“表达式a”为假,则m的值肯定为假(无论“表达式b”的结果如何),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。
(4)在本题的表达式中,从左至右,先计算“(m = a == b)”,在此表达式中,先计算“a == b”,由于a,b的值均为0,因此“a == b”的结果是真(即1)。再将“a == b”的运算结果(即1)赋值给m,则m的值为1,因此“(m = a == b)”的结果为1,即真,按前述规则,不再对表达式“(n = c == d)”进行计算,因此结果为选项C。39 设a为5,执行下列语句后,b的值不为2的是(A)b = a / 2(B)b = 6c的值的类型是(A)float(B)int(C)char(D)double 43 在以下一组运算符中,优先级最高的运算符是(A)<=(B)=(C)%(D)&& 44 下列叙述中正确的是
(A)C程序中的所有字母都必须小写(B)C程序中的关键字必须小写,其他标识符不区分大小写
(C)C语言中的所有字母都不区分大小写(D)C语言中的所有关键字必须小写 45 下面不属于C语言关键字的是(A)integer(B)typedef(C)enum(D)union 46 以下叙述不正确的是
(A)分号是C语句的必要组成部分(B)C程序的注释可以写在语句的后面(C)函数是C程序的基本单位(D)主函数的名字是mian 47 下列能正确表示a≥10或a≤0的C语言关系表达式是(A)a>= 10 or a <= 0(B)a >= 10 | a <= 0(C)a>= 10 || a <= 0(D)a >= 10 && a <= 0 48 下列只有当整数x为奇数时,才是逻辑“真”的表达式是(A)x % 2 == 0(B)!(x % 2 == 0)(C)!(x % 2)(D)(x'0';printf(“%ld#”, number);ch= getchar();}(A)2#18#(B)2402#18#(C)22#1818#(D)# 103 在C语言中,数组名代表的是(A)数组中全部元素的个数(B)数组中第一个元素的值(C)数组中全部元素的值(D)数组的首地址 104 下面叙述中错误的是
(A)同一个数组中的每一个元素都属于同一个数据类型(B)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出
(C)数组名代表数组所占存储区的首地址,其值不可以改变(D)在程序运行时,如果数组元素的下标超出了所定义的下标范围,系统将给出“下标越界”的出错信息 105 如果有语句:int x[3][2];,则下面能正确引用数组元素的选项是(A)x[0][2](B)x[1][2](C)x[2][1](D)x[2][2] 106 如果有语句:int x;char y[6];,则下面正确的输入语句是(A)scanf(“%d%s”, x, y);(B)scanf(“%d%s”, &x, y);(C)scanf(“%d%s”, x, &y);(D)scanf(“%d%s”, &x, &y);107 下面能正确定义一维数组的选项是(A)int num[];(B)int num[0...50];(C)int N = 50, num[N];(D)#define N 50 int num[N];·试题讲评
数组长度不能为变量。108 下面不能正确定义二维数组的选项是(A)int a[2][] = {{1, 2}, {3, 4}};(B)int a[][2] = {1, 2, 3, 4};(C)int a[2][2] = {{1}, {2}};(D)int a[2][2] = {{1}, 2, 3};109 如果有定义:int a[2][2] = {0, 1, 2, 3};,则a数组的各个元素分别为
(A)a[0][0]=0, a[0][1]=1, a[1][0]=2, a[1][1]=3(B)a[0][0]=0, a[0][1]=2, a[1][0]=1, a[1][1]=3(C)a[0][0]=3, a[0][1]=2, a[1][0]=1, a[1][1]=0(D)a[0][0]=3, a[0][1]=1, a[1][0]=2, a[1][1]=0 110 下面能正确定义一维数组的选项是
(A)int a1[] = “string”;(B)int a2[5] = {1, 2, 3, 4, 5, 6};(C)char a3 = {“string”};(D)char a4[] = {1, 2, 3, 4, 5, 6};111 如果有语句:char a[] = “string”, b[] = {'s', 't', 'r', 'i', 'n', 'g'};,则下面叙述中正确的是(A)数组a的长度大于数组b的长度(B)数组a的长度等于数组b的长度(C)数组a的长度小于数组b的长度(D)数组a和数组b二者等价 112 若定义str1、str2、str3为字符串,则语句strcat(strcpy(str1, str2), str3);的功能是
(A)把字符串str1连接到字符串str2中再把字符串str2复制到字符串str3之后(B)把字符串str1复制到字符串str2中再把字符串str2连接到字符串str3之后
(C)把字符串str2连接到字符串str1之后再把字符串str3复制到字符串str1中(D)把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后 113 下面叙述中错误的是
(A)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出(B)对于字符型数组,可以直接用数组名对数组进行整体输入或输出
(C)对于字符型数组,可以用来存放字符串(D)对于字符型数组,可以在赋值语句中运用运算符“=”进行整体赋值 114 若有以下语句,各选项中数值为4的表达式是 int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};char c = 'a', d, g;(A)a[g-c](B)a[4](C)a['d'c] 115 假设int型变量占4个字节的存储单元,对于如下定义,数组x在内存中所占字节数为 int x[10] = {0, 2, 4};(A)4(B)12(C)20(D)40 116 以下程序段的输出结果是 int j;int x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for(j=0;j<3;j++){ printf(“%d ”, x[j][2-j]);}(A)3 5 7(B)3 6 9(C)1 5 9(D)1 4 7 117 以下程序段运行后的输出结果是 int n[3], t, j, k;
for(t=0;t<3;t++){ n[t] = 0;} k = 2;for(t=0;t { n[j] = n[t] + 1; } } printf(“%dn”, n[1]);(A)0(B)1(C)2(D)3 118 以下程序段运行后的输出结果是 int p[7] = {11, 13, 14, 15, 16, 17, 18}, i=0, k=0; while(i<7 && p[i]%2){ k = k + p[i];i++;} printf(“%dn”, k);(A)58(B)56(C)45(D)24 119 以下程序段运行后的输出结果是 int m[][3] = {1, 4, 7, 2, 5, 8, 3, 6 ,9};int i, k=2; for(i=0;i<3;i++){ printf(“%d ”, m[k][i]);}(A)3 6 9(B)4 5 6(C)2 5 8(D)7 8 9 120 下列选项中正确的语句是 (A)char *s;s = “Beijing”;(B)char *s;s = {“Beijing”};(C)char s[8];s = “Beijing”;(D)char s[8];s = {“Beijing”};121 以下代码段执行后,b中的值是:2960 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b;b = p[5];(A)5(B)6(C)8(D)9 122 以下程序段运行后的输出结果是 char a[]=“abcdefg”, b[10]=“abcdefg”; printf(“%d %dn”, sizeof(a), sizeof(b));(A)7 7(B)8 8(C)8 10(D)10 10 123 下列程序运行后的输出结果是 #include int main(void){ int a[2]={3, 5}, b[2]={3, 5}; swap1(a); swap2(b[0], b[1]);printf(“%d %d %d %dn”, a[0], a[1], b[0], b[1]);return 0;} void swap1(int c[]){ int t; t = c[0]; c[0] = c[1]; c[1] = t;} void swap2(int c0, int c1){ int t; t = c0; c0 = c1; c1 = t;}(A)5 3 3 5(B)5 3 5 3(C)3 5 3 5(D)3 5 5 3 124 下列程序运行后的输出结果是 #include int main(void){ int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i; sort(aa, 10);for(i=0;i<10;i++)printf(“%d ”, aa[i]);printf(“n”);return 0;} void sort(int a[], int n){ int i, j, t; for(i=0;i a[i] = a[j]; a[j] = t;} }(A)9 2 7 4 5 6 3 8 1 10(B)1 2 3 4 5 6 7 8 9 10(C)10 9 8 7 6 5 4 3 2 1(D)1 10 3 8 5 6 7 4 9 2 125 下列程序运行后的输出结果是 #include int main(void){ int i, aa[5] = {1, 2, 3, 4, 5}; f(aa, 0, 4);for(i=0;i<5;i++)printf(“%d,”, aa[i]);return 0;} void f(int a[], int i, int j){ int t; if(i < j) { t = a[i]; a[i] = a[j]; a[j] = t;f(a, i+1, j-1); } }(A)5,4,3,2,1,(B)1,2,3,4,5,(C)5,4,3,2,1(D)5,2,3,4,1 126 以下程序段运行后的输出结果是 char ch[3][5] = {“AAAA”, “BBB”, “CC”}; printf(“"%s”n“, ch[1]);(A)”AAAA“(B)”BBB“(C)”BBBCC“(D)”CC“ 127 以下程序段运行后的输出结果是 int b[3][3] = {0, 1, 2, 0, 1, 2, 0, 1, 2}, i, j, t=1; for(i=0;i<3;i++){ for(j=i;j<=i;j++) { t += b[i][b[j][j]]; } } printf(”%dn“, t);(A)4(B)3(C)9(D)1 128 以下程序段运行后的输出结果是 int aa[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {3, 9, 10, 2}, {4, 2, 9, 6}};int i, s=0; for(i=0;i<4;i++){ s += aa[i][1];} printf(”%dn“, s);(A)19(B)20(C)11(D)13 129 以下程序段的运行结果是: char s[10], s=”abcd“; printf(”%s“, s);(A)abcd(B)a(C)ab cd(D)编译不通过 130 对于定义char s[] = ”“NameAddress”n“;,字符串s所占字节数是(A)16(B)14(C)15(D)19 131 以下程序段的运行后结果是 char str[] = ”abn 12“"; printf(”%d“, strlen(str));(A)6(B)12(C)3(D)4 132 对于定义char c[8] = ”Tianjin“和int j,下面的输出函数调用中错误的是(A)printf(”%s“, c);(B)puts(c);(C)for(j=0;j<8;j++){ printf(”%c“, c[j]);}(D)for(j=0;j<8;j++){ puts(c[j]);} 133 对于定义char a[10] = {0};和int j;,下面输入函数调用中错误的是(A)scanf(”%s“, a);(B)gets(a);(C)for(j=0;j<9;j++){ scanf(”%c“, a[j]);}(D)for(j=0;j<9;j++){ scanf(”%c“, &a[j]);} 134 在C语言中,程序的基本单位是(A)函数(B)语句(C)程序段(D)文件 135 在C语言中,程序进行编译的单位是(A)语句(B)程序段(C)函数(D)文件 136 在C语言中,若定义函数时对函数类型未加显式说明,则函数的隐含类型为(A)void`(B)int(C)double(D)char 137 在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时(A)实参和形参共用一个存储单元(B)由用户确定是否共用一个存储单元(C)实参和形参分别占用一个独立的存储单元(D)由计算机系统确定是否共用一个存储单元 138 在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是(A)由实参传递给形参,再由形参传递给实参(B)由用户指定传递方式(C)单向值传递(D)地址传递 139 在C语言的函数调用中,如果数组名作为函数的实参,则传递给形参的是(A)数组第一个元素的值(B)数组全部元素的值(C)数组全部元素的个数(D)数组的首地址 140 在C语言中规定,函数返回值的类型由(A)定义该函数时所指定的函数类型决定(B)return语句中的表达式类型决定(C)调用该函数的主调函数决定(D)调用该函数时系统临时决定 141 函数调用在程序中出现的位置一般有3种方式,下面叙述中错误的是 (A)函数调用可以出现在表达式中(B)函数调用可以作为独立的语句存在(C)函数调用可以作为一个函数的实参(D)函数调用可以作为一个函数的形参 142 在C语言中,下面关于函数正确的叙述是(A)函数可以嵌套定义,也可以嵌套调用(B)函数可以嵌套定义,但不可以嵌套调用(C)函数不可以嵌套定义,但可以嵌套调用(D)函数不可以嵌套定义,也不可以嵌套调用 143 在C语言中,函数调用语句function((a, b, c),(d, e));中参数的个数是(A)1(B)2(C)4(D)5 ·试题讲评 (a, b, c)和(d, e)分别都是逗号表达式 144 在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则(A)C语言中不允许这样的递归调用(B)称为函数的直接递归调用(C)称为函数的间接递归调用(D)称为函数的循环调用 145 下面叙述中不正确的是 (A)函数中的形参是函数自己的局部变量(B)在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元 (C)在一个函数中定义的变量只在本函数范围内有效(D)在一个函数内的复合语句中定义的变量只在本函数范围内有效 ·试题讲评 在一个函数内的复合语句中定义的变量只在本复合语句范围内有效 146 在一个源程序文件中定义的全局变量的作用域为 (A)从定义该变量的位置开始至本文件结束(B)本程序的全部范围(C)本文件的全部范围(D)本函数的全部范围 147 下面叙述中不正确的是(A)函数可以没有形参,可是函数名后的一对括号却不能省略(B)在C语言中,不能在一个函数的内部再定义函数 (C)在没有声明函数返回值类型时,函数返回值的类型默认为int(D)函数的类型可以是整型、实型、字符型,但不可以是指针型 148 下面程序的输出结果是 #include int main(void){ int x=5, y=3, s; s = function(x, y); printf(”%dn“, s);return 0;} int function(int a, int b){ return a*a-b*b;}(A)2(B)8(C)16(D)32 149 下面程序的输出结果是 #include int main(void){ printf(”%ldn“, func(5));return 0;} long func(int n){ if(n > 2){ return func(n-1)+ func(n-2);} else { return 1;} }(A)5(B)6(C)7(D)8 150 下面程序的输出结果是 #include int main(void){ int a=27, b=15, c; c = zdgys(a, b); printf(”%dn“, c);return 0;} int zdgys(int x, int y){ int w; while(y) { w = x % y; x = y; y = w; } return x;}(A)2(B)3(C)4(D)5 151 下面程序的输出结果是 #include int main(void){ double x;int a=3, b=4, c=5; x = func(a, b, c); printf(”%fn“, x);return 0;} double func(int x, int y, int z){ double t; t = x % y * z;return t;}(A)3(B)3.000000(C)15(D)15.000000 152 下面程序的输出结果是 #include int main(void){ int i, s; for(i = 0;i < 4;i++)s = func();printf(”%dn“, s);return 0;} int func(void){ static int x = 6;x++;return x;}(A)7(B)8(C)9(D)10 153 下面程序中应该补充(填写在横线位置)的代码是 #include //函数功能:求两数中的较大数 int main(void){ int a, b, c; scanf(”%d, %d“, &a, &b); c = __________________;printf(”max is %d“, c);return 0;} int max(int x, int y){ int z; if(x > y)z = x;else z = y;return z;}(A)max(a, b)(B)max(&a, &b);(C)max(x, y)(D)int max(int a, int b)154 下面程序中应该补充(填写在横线位置)的代码中,有错的是 #include int main(void){ int a, b, c; scanf(”%d, %d“, &a, &b);c = min(a, b);printf(”min is %d“, c);return 0;} //函数功能:求两数中的较大数 int min(int x, int y){ int z; z = x int x1=30, x2=40;void sub(int x, int y); int main(void){ int x3=10, x4=20; sub(x3, x4); sub(x2, x1);printf(”%d,%d,%d,%dn“, x3, x4, x1, x2);return 0;} void sub(int x, int y){ x1 = x; x = y; y = x1;}(A)10,20,40,40(B)20,10,40,30(C)20,10,40,40(D)10,20,30,40 156 下面程序的输出结果是 #include int main(void){ increment(); increment(); increment();return 0;} void increment(void){ int x = 0; x += 1;printf(”%d “, x);}(A)1 1 1(B)1 2 3(C)1(D)3 3 3 157 在C语言中,下面关于文件的存取方式正确的叙述是(A)只能从文件的开头存取(B)可以顺序存取,但不可以随机存取 (C)不可以顺序存取,但可以随机存取(D)可以顺序存取,也可以随机存取 158 下列关于C语言数据文件的叙述中正确的是 (A)文件由ASCII码字符序列组成,C语言只能读写文本文件(B)文件由二进制数据序列组成,C语言只能读写二进制文件 (C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 159 在C语言中,读写操作时需要进行转换的文件是(A)二进制文件(B)文本文件 (C)二进制文件和文本文件都需要转换(D)二进制文件和文本文件都不需要转换 160 在C语言中,下面关于文件操作正确的叙述是 (A)对文件操作时,必须先检查文件是否存在,然后再打开文件(B)对文件操作时需要先打开文件 (C)对文件操作时需要先关闭文件(D)对文件操作时打开和关闭文件的顺序没有要求 161 为了进行写操作而打开二进制文件wr.dat的正确写法是(A)fp = fopen(”wr.dat“, ”r“);(B)fp = fopen(”wr.dat“, ”w“);(C)fp = fopen(”wr.dat“, ”rb“);(D)fp = fopen(”wr.dat“, ”wb“);162 下面的语句中,将fp定义为文件型指针的是(A)file fp;(B)file *fp;(C)FILE fp;(D)FILE *fp;163 以下要作为fopen函数中第一个参数的正确格式是(A)”c:usertext.txt“(B)”c:usertext.txt“(C)”usertext.txt“(D)”c:user ext.txt“ ·试题讲评 字符常量反斜线()的书写形式是''(转义符方式)164 若执行fopen函数时发生错误,则函数的返回值是(A)0(NULL)(B)1(C)-1(EOF)(D)地址值 165 当顺利执行了文件关闭操作时,fclose函数的返回值是(A)-1(B)1(C)TRUE(D)0 166 如果不能实现文件“打开”的任务,fopen函数将会带回一个出错信息。以下对出错原因描述错误的是 (A)用”r“方式打开一个并不存在的文件(B)磁盘出故障 (C)磁盘已满无法建立新文件(D)用”w“方式打开文件时,没有先建立文件 167 在C语言中,标准库函数fread(buf, size, count, fp)中参数buf的含义是 (A)一个指针,指向要读入数据的存放地址(B)一个文件指针,指向要读的文件(C)一个整型变量,代表要读入的数据总数(D)一个存储区,存放要读的数据项 ·试题讲评 size:要读写的字节数;count:要读写多少个数据项(每个数据项的长度为size)。168 在C语言中,标准库函数fwrite(buf, size, count, fp)的功能是 (A)从buf所指向的文件中读取长度为size的count个数据项存入fp起始的内存(B)从fp所指向的文件中读取长度为size的count个数据项存入buf起始的内存 (C)把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中(D)把fp起始的内存中长度为size的count个数据项输出到buf所指向的文件中 169 下面程序的功能是 #include FILE *fp1, *fp2; fp1 = fopen(”c:xxxfile.c“, ”r“);if(NULL == fp1) { printf(”cannot open file in disk c!n“); exit(1); } fp2 = fopen(”d:file.c“, ”w“);if(NULL == fp2) { printf(”cannot open file in disk d!n“); fclose(fp1);exit(2); } while(!feof(fp1))fputc(fgetc(fp1), fp2);printf(”copy success!n“); fclose(fp1); fclose(fp2);return 0;}(A)将c盘xxx子目录下file.c文件复制到d盘xxx子目录下file.c文件中(B)将d盘xxx子目录下file.c文件复制到c盘xxx子目录下file.c文件中 (C)将c盘根目录下file.c文件复制到d盘xxx子目录下file.c文件中(D)将c盘xxx子目录下file.c文件复制到d盘根目录下file.c文件中 170 当已存在一个abc.txt文件时,执行函数fopen(”abc.txt“, ”r+“)的功能是 (A)打开abc.txt文件,清除原有的内容(B)打开abc.txt文件,只能写入新的内容 (C)打开abc.txt文件,只能读取原有内容(D)打开abc.txt文件,可以读取和写入新的内容 171 fopen(filename, mode)函数的mode取值”r“和”w“时,它们之间的差别是 (A)”r“可向文件输入,”w“不可向文件输入(B)”r“不可向文件输入,”w“可向文件输入(C)”r“不可由文件输出,”w“可由文件输出(D)文件不存在时,”r“建立新文件,”w“出错 172 若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是(A)”ab+“(B)”wb+“(C)”rb+“(D)”ab“ ·试题讲评 ”rb+“:为了读和写,打开一个二进制文件,若指定文件不存在则出错;”wb+“:为了读和写,打开一个新的二进制文件,若指定文件不存在,则建立新文件。173 fread(buf, 64, 2, fp)的功能是 (A)从fp文件流中读出整数64,并存放在buf中(B)从fp文件流中读出整数64和2,并存放在buf中 (C)从fp文件流中读出64字节的字符,并存放在buf中(D)从fp文件流中读出2个64字节的字符,并存放在buf中 174 以下程序的功能是 #include FILE *fp;char str[] = ”HELLO“; fp = fopen(”CON“, ”w“);if(NULL == fp) { printf(”file open error!n“); exit(1); } fputs(str, fp);fclose(fp);return 0;}(A)在屏幕上显示HELLO(B)在打印机上打印出HELLO(C)把HELLO存入CON文件中(D)都不对 ..作为输出设备时,CON是标准输出设备显示器的文件名,是dos的保留字。175 C语言中文件的格式化输入输出函数对是(A)fscanf/fprintf(B)fread/fwrite(C)fgets/fputs(D)fgetc/fputc 176 C语言中文件的数据块输入输出函数对是(A)fread/fwrite(B)fscanf/fprintf(C)fgetc/fputc(D)fgets/fputs 177 feof(fp)函数用来判断文件是否结束,如果未遇到文件结束,函数值为(A)0(B)1(C)非零(D)false 178 fgetc函数的作用是从指定文件读入一个字符,关于对应文件的打开方式,不正确的是(A)只读(B)只写(C)”r“(D)读写 179 若调用fputc函数输出字符成功,则其返回值是(A)0(B)1(C)EOF(D)输出的字符 180 fseek函数的功能是 (A)改变文件位置的指针位置(即下一次读写操作从文件的什么位置开始)(B)使文件位置指针重新置于文件开头(C)返回文件位置指针的当前值(D)关闭文件 181 以下程序的功能是 #include FILE *fp;char ch; fp = fopen(”filename.txt“, ”w“);if(NULL == fp){ printf(”file open error!“); exit(1);} while((ch=getchar())!= '@') { fputc(ch ,fp); putchar(ch); } fclose(fp); return 0;}(A)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志),同时在屏幕上显示这些字符。(B)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志)。 (C)把从键盘输入的字符输出到屏幕(用@作为输入结束标志)。(D)从名为filename.txt的磁盘文件中读入字符(用@作为输入结束标志),并在屏幕上显示这些字符。182 下面程序的功能是将数组str的4个元素写到名为filename.dat的二进制文件中。程序中需要补充的语句是 #include FILE *fp;char str[] = ”abcd“; fp = fopen(”filename.dat“, ”wb“);if(NULL == fp){ printf(”file open error!“); exit(1);} ____________________________ fclose(fp); return 0;}(A)fwrite(str, sizeof(char), 4, fp);(B)fwrite(fp, sizeof(char), 4, str);(C)fread(str, sizeof(char), 4, fp);(D)fwrite(str[0], sizeof(char), 1, fp);183 下面的程序执行后,文件file.txt中的内容是 #include fun(”file.txt“, ”Fine, thank you!“);return 0;} void fun(char *fname, char *st){ FILE *fp;int len, i; fp = fopen(fname, ”w“);if(NULL == fp){ printf(”file open error!“); exit(1);} len = strlen(st);for(i=0;i 变量的指针即变量的地址,是指变量所占内存单元的首地址。185 如果已经定义int x;,则对指针变量pointer进行说明和初始化正确的是(A)int pointer = x;(B)int pointer = &x;(C)int *pointer = &x;(D)int *pointer = *x;186 如果已经定义int x, *pointer;,则下面赋值语句正确的是(A)pointer = &x;(B)pointer = x;(C)*pointer = &x;(D)*pointer = *x;187 即使两个指针变量的类型相同,它们也不能(A)相减(B)相加(C)比较(D)指向同一地址 188 在C语言中,对变量的访问方式是 (A)能直接访问,能间接访问(B)能直接访问,不能间接访问(C)不能直接访问,能间接访问(D)不能直接访问,不能间接访问 189 在C程序说明语句int(*pointer)[5];中,pointer表示的是一个 (A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 190 在C程序说明语句int *pointer[5];中,pointer表示的是一个 (A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 191 在C程序说明语句int(*pointer)();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针 (C)返回值为指针的函数名字(D)指向函数的指针,函数返回值为一个整数 192 在C程序说明语句int *pointer();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针 (C)返回值为指针(指向的对象为int)的函数名字(D)指向函数的指针,函数返回值为一个整数 193 设有定义int a=3, b, *p=&a;,则下列语句表达有错的是(A)b = *a;(B)b = *&a;(C)b = *p;(D)b = a;·试题讲评 a不是指针变量,不能使用指针运算符*。194 若有说明int i, j=7, *p=&i;,则与i = j;等价的语句是(A)i = p;(B)*p = j;(C)p = &j;(D)*p = &j;195 若有说明int a[10], *p=a;,则对数组元素引用不正确的是(A)*(a + 2)(B)p[2](C)*(p + 2)(D)p + 2 196 若有如下说明语句,则下面叙述中不正确的是 struct student { long num;char name[20];char sex;int age;} stu;(A)struct是结构体类型关键字(B)struct student是结构体类型(C)num,name,sex,age都是结构体成员名(D)stu是结构体类型名 197 若有如下说明语句,则定义了 union student { long num;char name[20];char sex;int age;};(A)结构体类型(B)结构体变量(C)共用体类型(D)共用体变量 198 当定义一个结构体变量时,系统分配给它的内存空间字节数是 (A)各成员所需内存字节数的总和(B)结构体中第一个成员所需内存字节数(C)结构体中最后一个成员所需内存字节数(D)成员中占内存字节数最大的 199 有以下三种形式可供选择,则为了表示结构体变量中的成员,各选项中叙述正确的是 1、结构体变量.成员名 2、(*结构体指针变量).成员名 3、结构体指针变量->成员名(A)只能用1或2表示(B)只能用1或3表示(C)只能用2或3表示(D)三种形式均可 200 以下程序在VC6.0下运行后的输出结果为 #include struct dt { char a[4];int b;double c;} data; int main(void){ printf(”%dn“, sizeof(struct dt)); return 0;}(A)4(B)8(C)16(D)3 201 若有以下定义,则对变量student1中“生日”的正确赋值方式是 struct student { int num;char name[20], sex;struct { int year, month, day; } birthday;}; struct student student1;(A)student1.birthday.year = 2003;student1.birthday.month = 5;student1.birthday.day = 1;(B)year = 2003;month = 5;day = 1;(C)birthday.year = 2003;birthday.month = 5;birthday.day = 1;(D)student1.year = 2003;student1.month = 5;student1.day = 1;202 若有以下定义,则下面各输出语句中能输出字母J的是 struct student { int num;char name[20];}; struct student school[10000] = {{1001, ”Mike“}, {1002, ”James“}, {1003, ”Tom“}};(A)printf(”%c“, school[0].name[0]);(B)printf(”%c“, school[1].name[0]);(C)printf(”%c“, school[2].name[0]);(D)printf(”%c“, school[1].name);203 若有以下定义,则下面各输入语句中不正确的是 struct student { int num;char name[20];char sex;float score;} student1,*p = &student1;(A)scanf(”%d“, &student1.num);(B)scanf(”%s“, &student1.name);(C)scanf(”%c“, &(*p).sex);(D)scanf(”%f“, &(p->score));204 以下程序的输出结果是: #include struct student { int num; float score;}; void fun(struct student tmp);int main(void){ struct student stu[2] = {{1001,650}, {1002,550}};fun(stu[0]);printf(”%d,%4.0fn“, stu[0].num, stu[0].score);return 0;} void fun(struct student tmp){ struct student stu[2] = {{1003, 450}, {1004, 250}}; tmp.num = stu[1].num;}(A)1001, 650(B)1002, 550(C)1004, 650(D)1004, 250 205 以下程序的输出结果是: #include struct student { int num; float score; char name[20];}; void fun(struct student *p);int main(void){ struct student stu[2] = {{1003, 450, ”Liu“}, {1004, 250, ”Tao“}};fun(stu);printf(”%d,%3.0f,%sn“, stu[0].num, stu[0].score, stu[0].name);return 0;} void fun(struct student *p){ struct student stu[2] = {{1001,650, ”He“}, {1002,550, ”Li“}},*q=stu; ++q; *p = *q;}(A)1002,550,Li(B)1004,250,Tao(C)1001,650,He(D)1003,450,Liu 206 以下程序的输出结果是: #include struct student { long num; char name[10]; int age;}; void func(struct student *p);int main(void){ struct student stu[3] = {{1101, ”Liu“, 21}, {11102, ”Tao“, 22}, {1103, ”Xu“, 23}};func(stu + 1); return 0;} void func(struct student *p){ printf(”%s“, p->name);}(A)Tao(B)Liu(C)Xu(D)11102 207 以下程序的输出结果是: #include struct student { int num;int *q;}; int main(void){ int age[3] = {16, 17, 18};struct student stu[3] = {{1001, &age[0]}, {1003, &age[1]}, {1005, &age[2]}};struct student *p = stu; printf(”%d,%d",(p+1)->num, *((p+1)->q));return 0;}(A)1003,17(B)1001,16(C)1005,18(D)1003,16 1.Problem A: Hello world!Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。 Input 无 Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming! Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming! HINT 请注意换行符 Append Code #include printf(“Hello Da_min,n”); printf(“Hello Er_min,n”); printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。 Input 输入一个浮点型数据,有效数字不会超过十进制的6位。 Output 输出为两行。 第一行为圆的面积,第二行为圆的周长,格式见sample。 Sample Input 3 Sample Output Area: 28.260000 Perimeter: 18.840000 HINT 了解浮点类型的输入、输出和算术运算符 Append Code 法一 #include #include double r; scanf(“%d”,&r); printf(“Area: %lfn”,pi*r*r); printf(“Perimeter: %lfn”,2*pi*r); } 3.Problem C:平均值 Description 求3个数的平均值。 Input 输入只有一行,为3个较小的整数。 Output 输出为这3个整数的平均值,保留3位小数。 Sample Input 1 2 3 Sample Output 2.000 HINT 注意除法运算对整型数据和浮点型数据是不一样的。 Append Code #include 4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。 Input 输入为3个字符。 Output 输出为3行。 每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。 Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 HINT 了解字符值的存储和整型的关系。 Append Code #include 5.Problem A: 最简单的程序 Description 输出一行“Hello world!”。 Input 无 Output Hello world! Sample Input Sample Output Hello world! HINT Append Code #include printf(“Hello world!”);} 6.Problem B: 算术基本运算 Description 计算两整数x和y(0 Input 输入只有一行,格式见sample。 Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample Sample Input x = 11, y = 3 Sample Output x + y : 14 xy : %dn“,x-y); printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。 编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。 Input 一个整数a,a是很小的整数。 Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。 5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。 Sample Input 0 Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1 HINT Append Code #include : %dn“,a);printf(”--a : %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a : %dn“,++a);} 8.Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。 Input 输入两个数,第一个是整数,第二个是浮点数。 Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。 Sample Input-1 1 Sample Output 1 1 HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人! Append Code #include int n; float m; scanf(”%d%f“,&n,&m); //n=abs(n); //m=fabs(m); if(n<0) { n=-n; } if(m<0) { m=-m; } printf(”%dn“,n); printf(”%g“,m); return 0;} 9.Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。 Input 输入只有一行,为一个100以内的正整数。 Output 输出为一行。 若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30 Sample Output even HINT 用整数运算可以解决,练习“?:”表达式。 Append Code #include int n; scanf(”%d“,&n); if(n>=0&&n<=100){ if(n%2==0)printf(”evenn“); else printf(”oddn“); } return 0;} 10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。 Input 输入只有一行,三个整数m、n和x,且0 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。 Append Code #include int m,x,n,a; float b; scanf(”%d%d%d“,&m,&n,&x); 0 x m a=m*x; if(a>n) b=0.88*a; else b=a; printf(”%.2fn“,b); } 11.Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。 Input 输入只有一行,为一个10000以内的正整数。 Output 输出为一行。 若输入为闰年偶数则输出“Yes”,否则输出“No”。 Sample Input 2010 Sample Output No HINT 了解逻辑运算符和关系运算符。 Append Code #include int x; scanf(”%d“,&x); if(x>0&&x<10000) { if(x%4==0&&x%100!=0) printf(”Yesn“); else if(x%400==0) printf(”Yesn“); else printf(”Non“); } else printf(”error“);} 12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。 Input 一个整数x,100<=x<=999。 Output x是水仙花数,则输出“YES”,否则为“NO”。 Sample Input 153 Sample Output YES HINT Append Code #include int a,b,c,x; scanf(”%d“,&x); a=x/100; b=x/10%10; c=x%10; if(x==a*a*a+b*b*b+c*c*c) printf(”Yes“); else printf(”No“);} 13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。 Input 输入只有一行,为三个整数。 Output 按从小到大输出这三个数。 Sample Input 15 10 20 Sample Output 10 15 20 HINT 用if语句判断各种情况可以解决这个问题。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a>=b) { if(b>=c) printf(”%d %d %dn“,c,b,a); else if(c>=a) printf(”%d %d %dn“,b,a,c); else printf(”%d %d %dn“,b,c,a); } else { if(a>=c) printf(”%d %d %dn“,c,a,b); else if(b>=c) printf(”%d %d %dn“,a,c,b); else printf(”%d %d %dn“,a,b,c); } } 14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中; 如果这个数字是奇数,则将大于该数的最小偶数累加到和中。 Input 三个正整数,均在100以内。 Output 一个和。 Sample Input 2 3 5 Sample Output 12 HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a%2!=0)a++; if(b%2!=0)b++; if(c%2!=0)c++; printf(”%dn“,a+b+c); } 15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。 Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。 Sample Input 70 80 70 240 80 80 82 Sample Output congratulations HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 Append Code #include int a,b,c,d,e,f,g,h; scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g); h=e+f+g; if(e>=a&&f>=b&&g>=c&&h>=d) printf(”congratulations“); else printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的和,顺序与输入对应。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N给出了测试样例数,用for循环处理方便。 Append Code #include int n,a,b,i;Scanf(“%d”,&n);For(i=0;i 17.Problem H: A+B Problem Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code #include int a,b; while(scanf(”%d%d“,&a,&b)!=EOF){ printf(”%dn“,a+b); } return 0;} 18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U Input 输入一个英文字母 Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。 Sample Input A Sample Output yes HINT Append Code #include char ch; scanf(”%c“,&ch); if(ch>='A'&&ch<='Z') ch=ch+32; if(ch=='a') printf(”yes“); else if(ch=='e') printf(”yes“); else if(ch=='i') printf(”yes“); else if(ch=='o') printf(”yes“); else if(ch=='u') printf(”yes“); else printf(”no“); } 19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。 Input 输入3个int类型内的整数,两两之间用一个空格隔开。 Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。 Sample Input 2 1 3 Sample Output 1 2 3 HINT Append Code #include int a,b,c,temp; scanf(”%d%d%d“,&a,&b,&c); if(a { temp=a; a=b; b=temp; } if(a { temp=a; a=c; c=temp; } if(b { temp=b; b=c; c=temp; } printf(”%d %d %dn“,c,b,a);} 20.Problem E: Description 判断输入整数的奇偶性。 判断奇偶数 Input 输入为一个整数。 Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出: n is an odd number.见样例。 Sample Input 12 Sample Output 12 is an even number.HINT Append Code #include int a; scanf(”%d“,&a); if(a%2==0) printf(”%d is an even number.“,a); else printf(”%d is an odd number.“,a);} 21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。 Input 两个整数a和b,均不超过int类型的表示范围。 Output 表示a>b的结果:如果a>b,则输出1,否则输出0。 Sample Input 3 4 Sample Output 0 HINT Append Code #include printf(”1“); else printf(”0“);return 0;} 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之间的输入是非法数据,输出“Error”。 Input 输入多行,每行一个整数。 Output 输入所对应的成绩等级。 Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch语句解决这个问题比较方便。 Append Code #include int score; while(scanf(”%d“,&score)!=EOF) { if(score<0||score>100) printf(”Errorn“); else { switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5:printf(”Failingn“);break; case 6:printf(”Passn“);break; case 7:printf(”Averagen“);break; case 8:printf(”Goodn“);break; case 9: case 10:printf(”Excellentn“);break; } } } return 0;} 23.Problem E: 输出是m的倍数或n的倍数、但不是 m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n Input 输入三个整数,依次为k、m、n。 Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。 Append Code #include a=m;else a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){ } if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0)) printf(” %d“,i);} return 0; 24.Problem B: 两整数相加减 Description 计算a+b和a-b。 Input 输入为一对整数a和b。a,b用空格分开。 Output 输出a+b和a-b的计算结果,各占一行。 Sample Input 1 2 Sample Output 3-1 HINT Append Code #include printf(”%dn“,a+b); printf(”%dn“,a-b);} 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。 注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如: 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。 Output 如果输入的数字满足条件,则输出yes,否则输出no。 Sample Input 100 Sample Output yes HINT 注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 库函数sqrt()可以用于求一个数的平方根。 Append Code #include if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0) printf(”yes“); else printf(”no“);} 26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问”你考试考了多少分?(0-100)“接受输入后判断其等级并显示出来等级: 优:90<=分数<=100 良:80<=分数<90 中:60<=分数<80 差:0<=分数<60 Input 输入任意一个整数分数值,显示等级;再输入任意一个整数分数值,显示等级;....直到测试数据较充分,可输入-1止。 Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0-80-1 Sample Output grad must between 0 and 100 优 优 良 中 中 差 差 grad must between 0 and 100 grad must between 0 and 100 HINT Append Code #include int x; while(scanf(”%d“,&x)!=EOF) { if(x<0||x>100) printf(”grad must between 0 and 100n“); else if(x>=90) printf(”优n“); else if(x>=80) printf(”良n“); else if(x>=60) printf(”中n“); else if(x>=0) printf(”差n“); } return 0;} Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生? Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。 Output 所有可能的学生数,每个数占一行。 Sample Input 200 Sample Output 58 118 178 HINT Append Code #include int n,i; scanf(”%d“,&n); for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3) printf(”%dn“,i);} return 0;} Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。 Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。 Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。Sample Input 10 2 3 4 5-1-2-3-4-5 Sample Output 5 5 HINT 貌似还有一种叫做0的数。 Append Code #include int n,a,i,num1=0,num2=0; scanf(”%d“,&n);for(i=0;i { scanf(”%d“,&a); if(a>0) num1++; else if(a<0) num2++; } printf(”%d %dn“,num1,num2); return 0;} Problem A: A+B Problem(III): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample Input 1 2 10 20 0 0 Sample Output 3 30 HINT 练习break的使用。 Append Code #include { if(a!=0||b!=0) } printf(”%dn“,a+b); else break; return 0;} 30 Problem B: A+B Problem(IV): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。 Append Code #include n++; if(n==1) printf(”%dn“,a+b); else printf(”n%dn“,a+b); } return 0;} Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。 Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。 Output 输出为两行,格式见sample。 Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格还是回车都是空白符,对scanf(”%d“)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。 Append Code #include int n,i,max,min; scanf(”%d“,&n); int a[n]; for(i=0;i scanf(”%d“,&a[i]); max=a[0]; min=a[0]; for(i=0;i { if(max max=a[i]; if(min>a[i]) min=a[i]; } printf(”The maximum number is %d.n“,max); printf(”The minimum number is %d.“,min); return 0;} 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。 Input 输入为两个整数m和n,满足0<=m<=n<=100。 Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。 输出的所有数在两行“=====”之间。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。 Append Code #include t=0; for(j=2;j<=sqrt(i);j++) if(i%j==0) t=1; if(t==0&&i>1) printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形? Input 第一行是n(1<=n<=100),表示有n组测试数据 接下来有n行,每一行包含三个整数,表示三个边长(1<=边长<=100) Output 如果三条边能构成三角形,输出YES,否则输出NO Sample Input 3 1 2 3 2 8 7 20 20 1 Sample Output NO YES YES HINT Append Code #include {scanf(”%d%d%d“,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) printf(”YESn“);else printf(”NOn“);} return 0;} 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。 Input 输入的第一个数为n(n<=1000),后接n个整数。 Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。 Sample Input 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1 2 3 3 5 5 6 7 8 9 HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。 Append Code #include int c,i,n,j; int a[1000]; scanf(”%d“,&n); for(i=0;i scanf(”%d“,&a[i]); for(i=1;i<=n-1;i++) { for(j=0;j { if(a[j]>a[j+1]) { c=a[j]; a[j]=a[j+1]; a[j+1]=c; } } } printf(”%d“,a[0]); for(i=1;i printf(” %d“,a[i]); return 0;} 35.Problem A: Description 购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。 Input 输入有多组。每一组的第一行是N(0 Output 对每组输入,输出她们走的路长。 Sample Input 4 13 89 37 6 7 30 41 14 39 42 0 Sample Output 152 70 HINT Append Code #include int n,i,max,min,a[100001]; while(scanf(”%d“,&n)&&n!=0) { scanf(”%d“,&a[0]); min=max=a[0]; for(i=1;i { scanf(”%d“,&a[i]); if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf(”%dn“,(max-min)*2); } return 0;} 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。 Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。 Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。 Sample Input 3 1 10 1 100 1 1 Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int n,i,j,max,min,sum; scanf(”%d“,&n); for(i=0;i { sum=0; scanf(”%d%d“,&min,&max); if(max==min) printf(”case %d:sum=%d.n“,i+1,min); else { for(j=min;j<=max;j++) sum=sum+j; printf(”case %d:sum=%d.n“,i+1,sum); } } return 0;} 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。 Input 两个字母st和ed,都是大写字母,用一个空格分开。 Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。例如: 输入为A和E,则输出为BCD; 输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出,只有一个空行。最后要输出一行(行尾不回车): ***END*** Sample Input A C Sample Output B ***END*** HINT Append Code #include char st,ed,a; int i; scanf(”%c%c%c“,&st,&a,&ed); { for(i=st+1;i printf(”%c“,i); printf(”n***END***“); } return 0;} 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。 Input 输入有2个:一个大写字母c和一个正整数d(0 Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。 如:c='A',d=3,则输出应为:D。若:c='Y',d=3,则输出应为:B。 Sample Input A 3 Sample Output D HINT Append Code #include char c; int d; scanf(”%c%d“,&c,&d); if(c+d<='Z') printf(”%c“,c+d); else printf(”%c“,c+d-26); return 0;} 39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。 Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。 Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。 Sample Input abcdefg 123456 kkkkkkkk abcdefg Sample Output Wrong!Wrong!Welcome! HINT 输入可以用scanf(”%s“)处理,密码比较用字符串的比较可以完成。 Append Code #include char a[20],b[20]; int i,j=1; scanf(”%s“,a); while(scanf(”%s“,b)!=EOF) { if(j<=5) { if((strcmp(a,b)==0)) { printf(”Welcome!n“); break; } else printf(”Wrong!n“); j++; } else printf(”Out of limited!n"); } } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)? 这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。 Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。 Output 输出为n行,每行为第m个月后的兔子总数。 《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。 本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。 2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。 2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高! 2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。第四篇:C语言程序设计
第五篇:C 语言程序设计