四川大学网络教育《C 语言程序设计》复习资料期末考试复习题及参考答案
c语言期末考试题库大题及详解答案

c语言期末考试题库大题及详解答案1. 题目一:数组的逆序输出题目描述:编写一个C语言程序,实现一个整型数组的逆序输出。
程序代码:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);for (int i = n - 1; i >= 0; i--) {printf("%d ", arr[i]);}return 0;}```答案解析:程序中定义了一个整型数组`arr`,使用`sizeof`运算符计算数组长度,并通过逆序循环输出数组元素。
2. 题目二:计算字符串中字符出现的次数题目描述:编写一个C语言程序,计算一个字符串中某个字符出现的次数。
程序代码:```c#include <stdio.h>#include <string.h>int main() {char str[] = "Moonshot AI";char ch = 'o';int count = 0;for (int i = 0; str[i] != '\0'; i++) {if (str[i] == ch) {count++;}}printf("字符'%c'出现的次数为:%d\n", ch, count);return 0;}```答案解析:程序中定义了一个字符串`str`和一个字符`ch`,通过循环遍历字符串并计数字符`ch`的出现次数。
3. 题目三:实现一个简单的计算器题目描述:编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除运算。
程序代码:```c#include <stdio.h>int main() {double num1, num2;char op;printf("请输入第一个数字:");scanf("%lf", &num1);printf("请输入运算符(+、-、*、/):");scanf(" %c", &op); // 注意在%c前面加空格,以跳过任何空白字符printf("请输入第二个数字:");scanf("%lf", &num2);switch (op) {case '+':printf("结果:%.2lf\n", num1 + num2);break;case '-':printf("结果:%.2lf\n", num1 - num2);break;case '*':printf("结果:%.2lf\n", num1 * num2);break;case '/':if (num2 != 0) {printf("结果:%.2lf\n", num1 / num2);} else {printf("除数不能为0\n");}break;default:printf("无效的运算符\n");}return 0;}```答案解析:程序首先接收用户输入的两个数字和一个运算符,然后使用`switch`语句根据运算符执行相应的运算,并输出结果。
大学C语言期末考试练习题(带详解答案)

一、单项选择题1.( A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A) 程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4。
下列关于C语言的说法错误的是(B)。
A)C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写.C)C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5。
下列正确的标识符是(C).A.-a1 B。
a[i] C。
a2_i D。
int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“—" ,选项B中“[”与“]"不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%x B)a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line#His。
c语言期末考试题库大题及详解答案

c语言期末考试题库大题及详解答案C语言期末考试题库大题及详解答案一、简答题1. 请简述C语言的基本数据类型及其特点。
答案:C语言的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和枚举型(enum)。
整型用于存储整数,浮点型用于存储小数,字符型用于存储单个字符,枚举型用于定义一组命名的常量。
每种数据类型都有其特定的取值范围和占用内存大小。
2. 请解释C语言中的数组和指针的区别。
答案:数组是一种数据结构,用于存储固定数量的相同类型元素,可以通过下标访问元素。
指针是一个变量,它存储另一个变量的内存地址。
数组名可以作为指向数组第一个元素的指针使用,但数组本身是一个固定大小的内存块,而指针可以被赋值为不同的地址,具有动态性。
二、编程题1. 编写一个C语言程序,实现输入三个整数,找出其中的最大值并输出。
答案:```c#include <stdio.h>int main() {int num1, num2, num3, max;printf("请输入三个整数:");scanf("%d %d %d", &num1, &num2, &num3);max = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);printf("最大值是:%d\n", max);return 0;}```2. 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");fgets(str, sizeof(str), stdin); // 使用fgets以包含空格int len = strlen(str) - 1; // 减去换行符长度for (int i = len; i >= 0; --i) {printf("%c", str[i]);}printf("\n");return 0;}```三、综合题1. 请编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除四种基本运算。
大一c程序设计期末考试题及答案

大一c程序设计期末考试题及答案在本次大一C程序设计的期末考试中,我们精心准备了以下题目,旨在考察同学们对C语言基础知识的掌握程度以及编程能力。
以下是考试题目及参考答案。
一、选择题(每题2分,共20分)1. C语言中,哪个关键字用于声明函数?A. intB. voidC. returnD. function答案:A2. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable-nameC. _variableD. variable$name答案:C3. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A4. 若有以下代码片段:```cint a = 5;int b = 10;a = b;```执行后,变量a的值是多少?A. 5B. 10C. 15D. 0答案:B5. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. 以上都是答案:D6. C语言中,哪个函数用于输入字符?A. scanf()B. printf()C. getchar()D. getc()答案:C7. 下列哪个选项是C语言中的循环结构?A. ifB. switchC. forD. do-while8. 在C语言中,哪个关键字用于定义数组?A. arrayB. listC. vectorD. int[]答案:D9. 下列哪个选项是C语言中的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello" "World"D. 'Hello' 'World'答案:A10. 在C语言中,哪个函数用于输出格式化的字符串?A. printf()B. scanf()C. sprintf()D. fprintf()答案:A二、填空题(每空2分,共20分)1. 在C语言中,使用____关键字可以定义一个函数。
大学c语言期末考试题及答案

大学c语言期末考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言的执行方式是编译执行C. C语言支持面向对象编程D. C语言具有丰富的库函数答案:C2. 在C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 下列关于数组的描述中,正确的是:A. 数组必须在定义时初始化B. 数组的下标从1开始C. 数组可以存储不同类型的数据D. 数组的大小在定义后不能改变答案:D4. 在C语言中,用于文件操作的库函数是:A. printfC. fopenD. getchar答案:C5. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以作为函数的参数C. 指针可以被赋值为NULLD. 指针可以存储函数的地址答案:D6. 在C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:B7. 下列关于循环的描述中,错误的是:A. for循环可以嵌套使用B. while循环可以和break语句一起使用C. do-while循环至少执行一次D. 循环体内不能使用continue语句答案:D8. 在C语言中,用于定义一个宏的预处理命令是:B. #includeC. #pragmaD. #import答案:A9. 下列关于函数的描述中,错误的是:A. 函数可以有返回值B. 函数可以没有参数C. 函数可以没有返回值D. 函数可以没有定义答案:D10. 在C语言中,用于定义一个枚举类型的关键字是:A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共10分)1. C语言中,用于定义一个整型变量的关键字是____。
答案:int2. 在C语言中,表示逻辑与运算的运算符是____。
答案:&&3. 当需要在C语言中表示一个常量时,可以使用关键字____。
C语言程序设计期末考试题及答案

} ;++x } ;++x ;eunitnoc )2%j(fi { )++j;3=<j;0=j(rof ;++x { )++i;2<i;0=i(rof ;0=x,j,i tni { )(niam >h.oidts< edulcni # �是果结行运的序程面下�61 } ;)d,"n\d%"(ftnirp ;++a=+d ;)a(nuf ;3=a nti { )(niam } ;)d,"d%"(ftnirp ;++p=+d ;5=d tni { )p tni( nuf ; l1=d tni 44)D 59)C 99)B 48)A 是果结出输,后行运序程下以�51 } ;)a,"n\d%"(ftnirp ;m&==1p=a ;m&=2p*,k&=1p*,6=m,4=k,a tni { )(niam 值定无 a,错出时行运)D 0)C 1)B 4)A 是值的 a 后行执序程下以�41 } ;))b+a(S,"n/fl.4%"( ftnirp ;2=b,1=a tni { )(niam x*x*tp )x(s enifid # 5.5 TP enifed # edulcni # 0.54�D 0.22�C 5.9 �B 5.94 �A 是果结出输,后行运序程下以�31 ;)2v,1v,"n\d%,d%"(ftnirp }
;)]cgra[vgra,"s%"(ftnirp )0>cgra--(elihw { ))][vgra* rahc ,cgra tni (niam HGFEDCBALKJI )D LKJIHGFEDCBA )C LHJI )B GFEDCBA )A 为果结出输则�>车回<LKJI HGFEDCBA GORP �入键下符示提 SOD 的录目在 所件文行执可此在果如�EXE.GORP 件文行执可成生后接连和译编经序程下以定假 �02 EGAUGNAl c )D EGAUGNAL C )C egaugnal c )B egaugnaL C )A �是果结行运的序程面上 } ;)c,”c%“(ftnirp fidne # ;23+c=c )’Z’=<c&&’A’=>c(fi esle # ;23-c=c )’z’=<c&&’a’=>c(fi RETTEL fi # ;++i { ’0\’=!)]i[rts=c((elihW ;0=i ;i tni ;c,”egaugnaL C”=]02[rts rahc { )(niam 0 RETTEL enifed # �序程读请�91 0)D 3)C 2)B 1 )A 为值的 n,后)d>c=n(&&)b>a=m(:式达表行执则 ;2=n,2=m,4=d,3=c,2=b,1=a tni :义定下如有设�81 } ;)p*,"n\d%"(ftnirp ;)a,p&( tuf l))tni(foezis(collam)* tni(=p ;p*,}11,9,7,5,3,1{=]3[]2[a tni { )(niam };]1[]1[p=s** { )]3[]2[p tni,s** tni( tuf 11)D 9)C 7 )B 1 )A 是果结出输,后行运序程下以�71 21=x)D 6=x)C 8=x)B 4=x )A } ;)x,”n\d%=x“(ftnirp
四川大学C语言期末试题

C 循环体只执行一次 D 是无限循环 3.下列说法不正确的是( )。 A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复 合语句中有效 4.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 5.关于return语句,下列正确的说法是( )。 A 可以在同一函数中出现多次 B 必须在每个函数中出现 C 只能在除主函数之外的函数中出现一次 D 在主函数中不能出现 6.数组名作为实参传递给形参时,数组名被处理为( )。 A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 7.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。 A fp=fopen("file","r"); B fp=fopen("file","w"); C fp=fopen("file","r+"); D fp=fopen("file","w+"); 8. 定义结构体的关键字是( ) A. union B. enum C.struct D.typedef 9. 以下程序的输出结果是( ) #define f(x) x*x int main(void) { int a=6,b=2,c; c=f(a)/f(b); printf(“%d\n”,c); } A. 9 B. 6 C. 36 D. 18五、填空题(本大题共来自0小题,每空2分,共20分)。
四川大学C语言期末试题(最新版)

invert(a, 0, N - 1); for (i = 0; i < N; i++)
printf("%d ", a[i]); printf("\n"); return 0; }
/* 输入 a[i] *//
本题 5 页,本页为第 4 页
教务处试题编号:
A卷
学号:
B)double If; C)char forch D)float x&;
4.以下选项中可作为 C 语言合法常量的是 A 。
A)-80
B)-0819
C)-1el.0
D)-168.0e
5.以下能正确定义且赋初值的语句是 。
A)int a=b=16;
B)char c=97;
C)float x=x+1.8; D)double x=1.23E2.0
if (n == 1) return 1; else return n + f(n - 1); } int main(void)
本题 5 页,本页为第 3 页
教务处试题编号:
A卷
学号:
姓名
{ printf("%d\n", f(5)); return 0;
}
运行结果是:
6.有以下程序:
#include <stdio.h> void point(char *p){ p += 5; } int main(void) {
A)float *p = 1068; B)int *p= (int)a;
C)float p=&a;
D)float *p=&a;
c期末考试题及答案

c期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪项不是C语言的基本数据类型?A. intB. floatC. stringD. char答案:C2. 在C语言中,用于定义一个结构体的关键字是?A. structB. unionC. enumD. typedef答案:A3. 下列哪个选项不是C语言中的循环语句?A. forB. whileC. do-whileD. switch答案:D4. 在C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B5. C语言中,用于定义一个函数的关键字是?A. functionB. defineC. defD. void答案:D6. 下列哪个选项是C语言中的文件操作函数?A. printfB. scanfC. fopenD. fclose答案:C7. 在C语言中,哪个关键字用于声明一个全局变量?A. externB. staticC. autoD. register答案:A8. 下列哪个选项不是C语言中的逻辑运算符?A. &&B. ||C. =D. !答案:C9. C语言中,用于数组定义的关键字是?A. arrayB. listC. vectorD. []答案:D10. 在C语言中,哪个函数用于输出字符串?A. printfB. scanfC. putsD. getchar答案:C二、填空题(每题3分,共15分)1. 在C语言中,______关键字用于定义一个指针。
答案:*2. C语言中,______函数用于计算字符串的长度。
答案:strlen3. ______关键字用于在C语言中定义一个二维数组。
答案:[ ][ ]4. C语言中,______函数用于将字符串从源字符串复制到目标字符串。
答案:strcpy5. 在C语言中,______运算符用于比较两个值是否相等。
答案:==三、简答题(每题5分,共10分)1. 简述C语言中函数的调用过程。
(精校版)C程序设计期末考试习题(含答案)

二、读程序写结果(每题 6 分,共 24 分)
1. 有以下程序
int f(int a)
{ int b=0;
static c=3;
b=b+1;c=c+1;
return(a+b+c);
}
void main()
{ int a=2,i;
for(i=0;i〈3;i++) printf(“%2d”,f(a));
}
执行后输出的结果是
。
2。 有以下程序
void f(int y,int *x)
{ y=y+*x; *x=*x+y;}
void main( )
{ int x=2,y=4;
f(y,&x);
printf(“x=%d,y=%d\n”,x,y);
}
执行后输出的结果是
。
3。 有以下程序
#define LETTER 1
7。 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是 ( ).
A) p=1;
B) *q=2;
C) q=p;
D) *p=5;
8. 设有定义:int a,*pa=&a; 以下 scanf 语句中能正确为变量 a 读入数据的是 ( )。
A) scanf(“%d”,pa) ;
A)字符 B 和字符 P
B) 字符串 FORTD) 字符串 BASIC 和字符串 PASCAL
10。 执行语句 for(i=1;i++〈4;);后变量 i 的值是( ).
A) 3
B)4
C) 5
D) 不定
一、填空题(每空 2 分,共 18 分)
c语言期末考试题库大题及详解答案

c语言期末考试题库大题及详解答案1. 题目:编写一个C语言程序,实现一个简单的学生成绩管理系统,要求能够添加学生信息、查询学生信息、修改学生信息和删除学生信息。
答案:```c#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int id;char name[50];float score;} Student;Student students[100];int studentCount = 0;void addStudent(int id, char* name, float score) {if (studentCount < 100) {students[studentCount].id = id;strcpy(students[studentCount].name, name);students[studentCount].score = score;studentCount++;} else {printf("学生信息已满。
\n");}}void queryStudent(int id) {for (int i = 0; i < studentCount; i++) {if (students[i].id == id) {printf("学生ID:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("未找到该学生信息。
\n");}void modifyStudent(int id, char* name, float score) {for (int i = 0; i < studentCount; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("学生信息已更新。
C语言程序设计期末考试试题含答案

C语言程序设计期末考试试题含答案一、选择题(每题 2 分,共 40 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC charD string答案:D解释:string 不是 C 语言的关键字,C 语言中表示字符串通常使用字符数组。
2、以下能正确表示八进制整数的是()A 0o123B 0123C 0x123D 123答案:B解释:在 C 语言中,八进制整数以数字 0 开头,所以 0123 是八进制整数。
3、以下变量定义中,合法的是()A int a=b=1;B char a='\0';C float 2a;D double a&;答案:B解释:A 选项中不能连续赋值;C 选项变量名不能以数字开头;D 选项变量名不能包含特殊字符&。
4、若有定义:int a=5, b=2; 则表达式 a/b 的值是()A 25B 2C 20D 3答案:B解释:C 语言中,两个整数相除结果为整数,舍去小数部分。
5、若有定义:int a5 ={1, 2, 3, 4, 5};则 a2的值是()A 2B 3C 4D 5答案:B解释:数组下标从 0 开始,所以 a2对应的值是 3 。
6、以下关于函数的叙述中,正确的是()A 函数可以嵌套定义B 函数可以嵌套调用C 函数可以没有返回值D 以上都不对答案:C解释:函数不能嵌套定义,但可以嵌套调用。
函数可以没有返回值,此时函数类型为 void 。
7、若有以下函数定义:```cint fun(int a, int b){return a + b;}```则调用 fun(1, 2)的返回值是()A 1B 2C 3D 4答案:C解释:函数 fun 实现了两个整数的相加,所以 fun(1, 2)的返回值是3 。
8、以下关于指针的叙述中,错误的是()A 指针可以指向变量B 指针可以指向数组C 指针可以指向函数D 指针不可以进行加减运算答案:D解释:指针可以进行加减运算,但运算的结果要根据指针所指向的数据类型来确定。
C语言程序设计(专科)-D卷

四川大学网络教育学院课程考试试题( D 卷)20 11 年11 月课程名称:C语言程序设计适用层次:专科适用专业:计算机应用技术闭卷一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题后的括号内。
每小题3分,共45分)1.下列哪个是正确的字符数组定义?A. char s (100);B. char s[ ]=”abcd”;C. char s[10, 20];D. char s[ ];2. 下列哪个是C语言的非法标识符?A. F123B. A_countC. No&1D. _No13. 设有定义int x; float y;则表达式10.5+x/y的数据类型是。
A. 不确定B. doubleC. intD. float4.若a为0, b不为0,则以下表达式为真的是。
A. (a||b)&& (!b)B. a&&b||(!b)C. a&&(!b)||bD. (!a||b)&&a5.十进制数 267表示成十六进制是。
A. 0X010BB. 0X0111C. 0X0113D. 0X01036.程序段 int x=5,y=10; x=x|y;执行后x的值是。
A. 10B. 15C. 5D. 07.程序段int a=1,b=3,c=2,d=4,k; k=a>b?a:c>d?c:d执行后k的值为。
A. 1B. 2C. 3D. 48.若变量已正确定义并赋值,以下符合C语言语法的表达式是。
A. a:=b+1B. a=b=c+2C. int 18.5%3D. a=a+7=c+b9.说明语句char *s = “2011\02\12”; 以下说法正确的是。
A. 字符串有4个字符B. 字符串在内存中占据6个字节C. 字符串有10个字符D. 字符串在内存中占据11个字节10.为了判断两个字符串s1与s2是否相等,应当使用。
四川大学c语言考试题及答案

四川大学c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,不正确的是:A. 变量名必须以字母开头B. 变量名可以包含下划线C. 变量名区分大小写D. 变量名不能以数字开头答案:D2. 在C语言中,用于定义一个字符型变量的关键字是:A. charB. intC. floatD. double答案:A3. 下列哪个选项不是C语言中的运算符?A. %B. &&C. =D. :答案:D4. 在C语言中,用来表示逻辑“与”的运算符是:A. &&B. ||C. !D. ^答案:A5. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. whileD. case答案:D6. 在C语言中,用于定义一个整型数组的语法是:A. int array[10];B. int array[];C. int [10] array;D. int array;答案:A7. 下列哪个函数用于将浮点数转换为字符串?A. sprintfB. printfC. scanfD. strcat答案:A8. 在C语言中,用于定义一个函数的关键字是:A. functionB. defineC. defD. void答案:D9. 下列哪个选项不是C语言中的预处理指令?A. #includeB. #defineC. #ifD. switch答案:D10. 在C语言中,用于表示“或”逻辑运算的运算符是:A. ||B. &&C. ==D. !=答案:A二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是____。
答案:int2. 在C语言中,______运算符用于比较两个值是否相等。
答案:==3. C语言中,用于定义一个字符串的语法是____。
答案:char str[] = "Hello";4. 在C语言中,____运算符用于计算两个数的和。
C语言期末考试试卷习题及答案

C语言期末考试一试卷习题及答案WORD格式C 语言期末考试一试卷(A)一、单项选择题(本大题共20 题,每题 2 分,共40分)1、以下不是 C 语言的特色的是( A )A、C语言简短、紧凑B、能够编制出功能复杂的程序C、C语言能够直接对硬件进行操作D、C语言移植性好2、以下不正确的 C 语言表记符是( D )A、 ABCB、abcC、a_bcD、3、一个 C 语言程序是由( B )A、一个主程序和若干子程序构成B、函数构成C、若干过程构成D、若干子程序构成4、一个算法应当拥有“确立性”等 5 个特征,对此外4个特征的描绘中错误的是( A )A、有零个或多个输入B、有零个或多个输出C语言期末考试一试卷习题及答案C、有穷性D、可行性5、设变量 a是整型,f是实型,i是双精度型,则表达式10+‘ a’ +i*f值的数据类型为( C )A、 intB、floatC、doubleD、不确立6、在 C 语言中, char型数据在内存中的储存形式是( C )专业资料整理WORD格式A、补码B、反码C、源码D、ASCII码7、有以下程序,输入数据:12345M678< cR >后( <CR>表示回车),x的值是()。
#include<stdio.h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、 12345B、123C、 45D、 345int a,b; float,则正确的赋值语句是8、如有以下定义x( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的履行结果是()#include<stdio.h>{int i=10,j=10;printf("%d,%d\n",++i,j--);}A、 11,10B、9,10C、11,9D、10,910、巳知字母 A 的 ASCII码是65,以下程序的履行结果是() #include<stdio.h>专业资料整理WORD格式main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);、A、 A,Y B、 65,65 C、 65,90 D65,8911、以下运算符中优先级最高的是()A、<、十C 、 %D、 ! =B12、设 x 、 y和 z是 int型变量,且x=3, y = 4 , z = 5 ,则下边表达式中值为0是 ()。
c程序设计大学期末考试题及答案

c程序设计大学期末考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于声明函数?A. intB. floatC. returnD. void答案:D2. 在C语言中,以下哪个运算符用于逻辑与操作?A. &&B. ||C. !D. %答案:A3. 若有定义int a=5;,则表达式a++的值为多少?A. 4B. 5C. 6D. 0答案:B4. 在C语言中,以下哪个函数用于计算字符串的长度?A. strcatB. strcmpC. strcpyD. strlen答案:D5. 下面哪个选项是C语言中的合法整型常量?A. 0x12B. 0x1zC. 0x1.2D. 0x1.2e答案:A6. C语言中,以下哪个选项是正确的二维数组声明?A. int a[3,4];B. int a[3][4];C. int a[3][];D. int a[][];答案:B7. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello World!"D. 'Hello World!'答案:A8. 若有定义char c='A';,则表达式c+32的值为多少?A. 65B. 97C. 66D. 98答案:B9. 在C语言中,以下哪个选项是正确的结构体声明?A. struct Student {int age; char name[20];} stu;B. struct {int age; char name[20];} stu;C. struct Student {int age; char name[20];} stu[];D. struct {int age; char name[20];} stu[];答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *p;B. *int p;C. int *p[];D. int (*p)[];答案:A二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个无返回值的函数的关键字是________。
C语言程序设计期末考试卷及答案

C 语言程序设计期末考试卷及答案一、单项选择题;从A 、B 、C 、D 四个选项中,选择一个最佳答案填入括号内 每小题1分,共计30分;1.一个C 语言程序的执行是从 ;A 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束B 本程序的main 函数开始,到main 函数结束C 本程序的main 函数开始,到本程序文件的最后一个函数结束D 本程序文件的第一个函数开始,到本程序的main 函数结束 2.下列选项中不属于...C 语言关键字的是 ;Aswitch Bprintf Cdefault Dcase3.设有语句 int a = 4; ,则执行了语句 a += a -= a a; 后,变量a 的值是 ; A24B -24C4D164.已知int i;float d;,则正确的表达式是 ; Aint d Bintd%i Cintd%i Dintd%i5.已知int i,a;,执行语句i=a=39,a/5,a+11; 后,变量i 的值是 ; A5B16C27 D386.下列选项中合法的字符型常量是 ; A"a"B'\n'C"\n" Da7.下面程序的运行结果是 ;include <stdio.h> void main { int k = 15;printf"k = %d,k = %o,k = %x\n",k,k,k; }Ak = 15,k = 15,k = 15 Bk = 15,k = 17,k = 17 Ck = 15,k = 017,k = 0xf Dk = 15,k = 17,k = f8.已知a,b,c 为int 类型,执行语句:scanf"%d%d%d",&a,&b,&c;使得a 为10,b 为20,c 为30,以下不正确...的输入形式是 ; A10 B10 C10,20,30 D10 20 20 20 30 30 309.已知int x=1,y=2,z=3;,执行下列程序段后,输出的结果是 ; ifx>y z=x;x=y;y=z; printf"%d,%d,%d",x,y,z; A1,2,3B2,3,3C2,3,1D2,3,210.若变量c 为char 类型,能正确判断出c 为大写字母的表达式是 ; A'A'<=c<='Z' B'A'<=c||c<='Z' CA<=c&&c<=Z D'A'<=c&&c<='Z'11.有以下程序段:int k=0;whilek=1 k++;while 循环执行的次数是 ;------------------------------------------第----------------------------2----------------------------装---------------------------------------线---------------------------------------------班级 姓名 学号------------------------------------------第----------------------------1----------------------------装---------------------------------------线--------------------------------------------A无限次B有语法错,不能执行C一次也不执行D执行1次12.以下程序的输出结果是;void main{int x=1,a=0,b=0;switchx{ case 0:b++;case 1:a++;case 2:a++;b++; }printf"a=%d,b=%d",a,b;}Aa=1,b=0 Ba=1,b=1 Ca=2,b=1 Da=2,b=2 13.若有定义int i = 1;,执行语句while i < 10 i++; 后,i的值为 ; A9 B10 C11 D1214.有说明语句int a ={1,2,3,4,5};,则数组a包括了个元素;A10 B5 C6 D不确定15.以下程序段执行后,输出结果是 ;char str="abc\n\012\\\n";printf"%d",strlenstr;A5 B6 C7 D1316.若有以下定义:float t54;,能正确引用t数组元素的表达式是 ;At14 Bt50 Ct00 Dt0,017.执行下列程序段:int i,s = 0;int a 3 = {{1,2},{3,4},{5,6}};for i = 0;i < 3;i++s = s + aii;则s的值是 ;A5 B6 C12 D2118.下述对字符数组的描述中,错误..的是 ;A字符数组可以存放字符串B字符数组中的字符串可以整体输入输出C可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D不可以用关系运算符对字符数组中的字符串进行比较19.设有宏定义define Yx x+ 2 ,则下面程序段的运行结果是 ;int a = 2,b = 2,c = 1;printf"%d\n",a Y b + c ;A7 B8 C9 D1020.若用数组名作为函数调用的实参,传递给形参的是;A数组的长度B数组第一个元素的值C数组中全部元素的值D数组的首地址21.下面叙述中,不正确...的是 ;A在不同的函数中可以使用相同名字的变量B函数中的形式参数是局部变量C在一个函数内定义的变量只在本函数范围内有效D在一个函数内的复合语句中定义的变量在本函数范围内有效22.若在程序中定义了以下函数:float max float a ,float b{ return a>b a:b; }并将其放在主调函数之后,则在调用之前应该对该函数进行声明,以下选项中错误..的声明是 ;A float max float a,b ;B float max float ,float ;C float max float a ,float b ;D float max float x ,float y ;23.要使函数体内的某局部变量能保留函数前一次调用后的值,供下一次调用时继续使用,该变量的存储类型应是 ;A autoB externC staticD register24.类型相同的两个指针变量之间不能..进行的运算是 ;A+ B- C= D==25.若有说明语句:int i, x34 ;,则不能..将x11的值赋值给变量i的语句是 ;Ai = x + 1 + 1 ; Bi = x11;Ci = x + 1 ; Di = x1 + 1 ;26.有如下程序段:int a6 = { 1,2,3,4,5,6 };int m,ptr;ptr = &a0;m = ptr ptr + 2 ptr + 4 ;执行该程序段后,m的值为 ;A 15 B48 C24 D827.设有定义:enum team{ my,your=4,his,her = his+10};则枚举元素my、your、his、her的值分别是 ;A0 1 2 3 B0 4 0 10 C0 4 5 15 D1 4 5 1528.下面程序的运行结果是 ;union myun{ struct{ int x,y,z; }u;int k;}a;void main{ a.u.x = 4;a.u.y = 5;a.u.z = 6;a.k = 0;printf"%d\n",a.u.x;}A4 B0 C5 D629.表达式11 & 18的值是 ;A0 B1 C2 D27 30.当顺利执行了文件关闭操作后,fclose函数的返回值是 ;A 0 Btrue C -1 D 1二、填空题每小题2分,共计20分;1.C语言源程序编译后生成程序,然后经过连接生成可执行程序;2.实型常量有两种表示方法:小数形式和;3.rewind函数的功能是;4. 若ch是字符型变量,与ch=getchar;功能相同的语句是; 5.以下程序段要使指针变量p指向一个整型的动态存储单元,请填空;int p;p= mallocsizeofint;6.已知:int p,a = 2,b = 1;,则执行程序段p = &a;a = p + b; 后,a的值为; 7.已知:int x = 1, y = 2, z;,则执行z = x > y ++x : ++y;后,z的值为; 8.当执行下面程序且输入:ABC<回车>时,输出的结果是 ;include <stdio.h>void main{ char ss10 ="12345";getsss;printf“%s\n”,ss;}9.下面程序的功能是用函数的递归调用求nn≥1,请填空;float fint n{ if n==1 return1;else return ;}void main{ int n;scanf"%d",&n;printf"%.0f\n",fn;}10.以下程序执行后的输出结果是 ;void main{ int a = 3,b = 1,t;t = a << 2 | b;printf"%d\n",t ;}三、程序阅读题每小题4分,共计20分;1.以下程序执行后的输出结果是;include <stdio.h>void main{ int i;for i = 1;i <5;i++putchar‘’;}2. 以下程序执行后的输出结果是;void main{ int arr10={-1,2,3,4,-5,6,7,-8,9,0},i,k = 0;for i = 0;i <10;i ++ifarri<0 k++;printf"%d\n",k ;}3.以下程序执行后的输出结果是;void funint a10{int i,j,t;for i=0;i<9;i++for j=0;j<9-i;j++if aj>aj+1{t=aj;aj=aj+1;aj+1=t; }}void main{int i;int a10={4,3,5,1,0,8,2,6,7,9};funa;for i=0;i<10;i++printf"%3d",ai;printf"\n";}4.以下程序执行后的输出结果是;include <stdio.h>struct stu{ int x;int y;}p;int a2 = {10,20};struct stu aa2 = { 150,&a0,250,&a1};void main{ p = aa;printf"%d\n",++p-> x ; } 5.以下程序执行后的输出结果是;void swap int p1 ,int p2{ int k;k = p1;p1 = p2;p2 = k;}void main{ int a = 3,b = 6,x = &a,y = &b;swap x,y ;printf"%d,%d\n",x,y ;}四、程序改错题共2小题,每正确修改一处错误得2分,共计10分;注意:不得增行或删行,写出改正后的程序行,使之能够得出正确的结果;1.下列程序的功能是计算数列1,3,5,…,2n-1,…的前n项之和,其中n由键盘输入;void main{int s=0,n,i=1;scanf"%d",n; / 1该行有错误/do{ s=s+i;i=i+2; }while i>2n-1; / 2该行有错误/printf"s=%d\n",s;}2.下列给定的程序中,函数average的功能是:求10个数的平均值;include <stdio.h>float averagefloat array{ int i;float aver,sum; / 1该行有错误/for i=0;i<10;i++sum=arrayi; / 2该行有错误/ aver=sum/10;returnaver;}void main{ float data10,aver;int i;printf"Please input 10 data:\n";for i=0;i<10;i++scanf"%f",&datai;aver=averagedata0; / 3该行有错误/printf"averege data is %5.2f\n",aver;}五、程序设计题共3小题,第1小题6分,第2、3小题各7分,共20分;1.输入x,计算并输出下列分段函数y的值结果保留2位小数;2.在一个已排序的整型数组设从小到大中,插入一个整数,使之仍然有序要求数组中原有的10个整数从键盘按顺序输入;3.请先编写一个函数concatchar str1 ,char str2 ,实现两个字符串的连接注意不要用strcat函数;再编写一个main 函数进行测试:在主函数中输入两个字符串,然后调用concat函数,最后将连接后的字符串输出;参考答案一、单项选择题;从A、B、C、D四个选项中,选择一个最佳答案填入括号内每小题1分,共30分,错选、漏选、多选均不得分;⎪⎩⎪⎨⎧>-≤≤<=)15(5.105.2)150(34)0(xxxxxy二、填空题每小题2分,共20分,错填、漏填均不得分;三、程序阅读题每小题4分,共20分说明:对于程序阅读题,如果该题考生所给出的答案仅仅是书写格式上的错误,没有其它方面错误,扣1分,否则该题不得分;四、程序改错题共2小题,每正确修改一处错误得2分,共计10分; 注意:不得增行或删行,写出改正后的程序行,使之能够得出正确的结果;1. 1scanf"%d",&n;2while i<=2n-1; 2.1float aver,sum=0;2sum=sum+arrayi; 或者改为sum+=arrayi; 、sum=sum+array+i; 、sum+= array+i;sum=sum+array+i;也正确3aver=averagedata; 或者改为aver=average&data0; 也正确五、程序设计题共3小题,第1小题6分,第2、3小题各7分,共20分评分总则:若考生给出的程序语法正确,符合要求,能够实现具体功能,即可得满分;若程序存在错误,不能得出正确结果,阅卷教师酌情给分,给分方法参考下列评分标准; 1源程序代码include <stdio.h> main{float x,y; …… 1 分 printf"input x:";scanf"%f",&x; …… 2 分ifx<0 y=0;else if x<=15 y=4x/3;else y=2.5x-10.5; …… 2 分printf"y=%.2f\n",y; …… 1 分}2源程序代码include "stdio.h"main{int a11,i,b;printf"imput 10 sorted integer number:\n";for i=0;i<10;i++scanf"%d",&ai; …… 2 分printf"input an integer:\n";scanf"%d",&b; …… 1 分for i=9;i>=0&&ai>b;i--ai+1=ai; …… 2 分ai+1=b; …… 1 分printf"sorted numbers:\n";for i=0;i<11;i++printf"%5d",ai; …… 1 分}3源程序代码include <stdio.h>include <string.h>void concatchar str1,char str2 …… 1 分{int i,j;j=strlenstr1; …… 1 分for i=0; str2i='\0'; i++{str1j=str2i;j++;} …… 1 分 str1j='\0'; …… 1 分} main{ char str120,str220;printf"input two string:\n";getsstr1;getsstr2; …… 1 分 concatstr1,str2; …… 1 分 putsstr1; …… 1 分}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》复习资料一.单项选择题1.下面哪一个是合法的用户自定义标示符( D )(A) b-b (B) float (C) <fr> (D) _isw2.a、b为两个bool型变量,如下哪一个表达式能够表达“a、b同时为真或同时为假”的含义?(C )(A)a&&b||a (B)(a&&b)||!b (C)(a&&b)||(!a&&!b) (D)(a||b)&&(!a||!b)3.对于表达式(x>0)?x=x-1:x=x+1,若当前x取值为-2,该表达式的运算结果为( A )(A) -1 (B) 0 (C) 1 (D) 24.不是C语言基本数据类型的是( D )(A) 指针类型 (B) 整型 (C) 字符型 (D) 实型5.以下for循环控制中,循环次数为10次的是( C )(A)for(int i=1;i<10;i++) (B)for(int i=0;i<=10;i++)(C)for(int i=0;i<20;i+2) (D)for(int i=0;i<=20;i+2)6.设有:int a=3, b= 4, c= 5,x , y; 表达式0 && (x=a)&&(y=b)的值为( B )(A) 1 (B) 0 (C) 3 (D) 47.设有语句 int a=3 ; 则执行了语句 a+=6;后,变量a 的值为( C )(A) 18 (B) -3 (C) 9 (D) 128.对于变量定义char* p_name[]={“Kate”,“John”,“Mike”},如下哪一种表达式能表示“Mike”中的‘k’字符?( B )(A)p_name[0][2] (B)p_name[2][2](C)*(p_name[2]+3) (D)*(p_name[1]+2)9.表达式(int)7.5/(float)2的取值为( A )(A)3.75 (B)3.5 (C)3 (D)410.有定义语句:float a[4];则分配给数组a的内存空间为( C )字节(A) 20 (B) 12 (C) 16 (D) 1011.表达式6>8 | | 3>=9的取值为( A )(A)0 (B)1 (C)2 (D)312. 表达式18/4*sqrt(4.0)/8值的数据类型为(C )(A) int(B)float(C)double(D)不确定13.表达式18/4*sqrt(4.0)/8值的数据类型为( D )(A)int B float C.double D.不确定14.在以下定义中对标识符ptr描述正确的是( C )int(*ptr)[3];(A)定义不合法 (B)是一个指针数组名,每个元索是一个指向整型变量的指针(C)是一个指针,它指向一个具有3个元素的一维数组(D)是一个指向整型变量的指针15.已知有语句 scanf (“%d%d”,&a,&b);要使整型变量 a = 6, b = 8,运行时,屏幕上应输入( D )(A)a=6,b=8 (B)a=6 b=8 (C)6 8 (D)6 , 816.若char a=3,b=6,c; c=a^(b>>2);则c的二进制形式为(A )(A) 00000010 (b)00000100 (C)00000001 (D)0000001117.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是( D )(A)p=q (B)*p=*q (C)n=*q (D)p=n18.已知int a[3][4];则对数组元素引用正确的是( C )(A) a[2][4] (B) a[1,3] (C) a[2][0] (D) a(2)(1)19.已知定义int a[]={10, 60, 30};写出语句a[0]+ = a[1] - = a[2];运行后数组各元素的值为( B )(A)a[0] =70 , a[1] = 30,a[2] = 30。
(B)a[0] =40 , a[1] = 30,a[2] = 30。
(C)a[0] =10 , a[1] = 70,a[2] = -30。
(D)a[0] =40 , a[1] = 30,a[2] = 0。
20.已知 x=y=z=100,语句z + = ( x++ )+( --y ) 执行后各变量的值为( B )(A)x=100,y=99,z=299(B)x=101,y=99,z=299(C)x=101,y=100,z=301(D)x=100,y=99,z=19921.表达式0x55|0xAA的取值为( B )(A)55 (B)255 (C)0xAA (D)022. C语言中规定,if语句的嵌套结构中,else总是( D )(A) 与最近的if 配对 (B) 与第一个if 配对(C) 按缩进位置相同的if配对 (D) 与最近的且尚未配对的if 配对23.字符串“Test\n”的长度为( B )(A)4 (B)5 (C)6 (D)724. 以下描述错误的是( B )(A) break语句可用于while语句(B) break语句和continue语句的作用是一样的(C) 在循环语句中使用break语句是为了跳出循环,提前结束循环(D) 在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环25.假设有变量定义int m=2,n=3; 执行语句m*=n++;后,以下结果正确的是( C )(A)m为8,n为4 (B)m为6,n为3 (C)m为6,n为4 (D)m为8,n为326. 说明语句“int (*p)( ); ”的含义是( C )(A) p是一个指向一维数组的指针变量 (B) p是指针变量,指向一个整型数据(C) p是一个指向函数的指针,该函数返回一个int型数据 (D) 以上都不对27.假设a、b为bool变量,while((a||b)&&(!a||!b)&&!a)在如下哪一个条件下继续循环?( D )(A)a、b同为真(B)a、b同为假(C)a为真,b为假(D)a为假,b为真28. 以下对二维数组c的正确声明是( D )(A) int c[3][ ] (B) int c(3,4) (C) int c(2)(2) (D) int c[3][2]29.以下变量类型中,占用空间最大的是哪一种?( A )(A)double (B)int (C)BYTE (D)float30. 下述程序段执行后输出结果为( D )int x=100, y=200;printf ("% d", (x, y));(A) 100 (B) 200 (C) 100,200 (D) 编译出错31.设x,y和z是int型变量且x=3,y=4,z=5;则下面的表达式中值为0的是(D )(A) x&&y (B) x<=y (C) x||y (D) x<=y-z32.在下列符号中,可以作变量名的是哪一个( B )(A)2ky (B)y2k (C)π(D)*p33.以下属于合法的长整型常量是(B )(A)5876(B)0L(C)2e10(D)“5876”34.若以下选项中的变量己正确定义,则正确的赋值语句是(B )(A)x1=26.8%3(B)1+2=x2;(C)x3=0x12;(D)x4=1+2=3;35.已知变量 float x=1.2, y= -23.41; int z=345; 要使输出为 x=1.20,y= -23.4,z=345(中间无空格),则应使用语句printf( “____”, x, y, z );中间空白处应为( C )(A)%4.2f,%6.1f,%5d(B)%4.2f,%5.1f,%5d(C)%4.2f,%5.1f,%2d(D)%4.1f,%5.1f,%2d36.执行int a; printf ( "%d\n", (a=3*5, a*4, a+5) ); 两条语句后,显示输出为( B )(A)65 (B)20 (C) 15 (D)1037.已知char x[]="hello", y[]={'h','e','a','b','e'};则关于两个数组长度的正确描述是(B )(A)相同(B)x大于y (C)x小于y (D)以上答案都不对38.有语句:int a[10];则对指针变量p的正确定义和初始化是( B ) (A) int p=*a; (B) int *p=a; (C)int p=&a; (D)int *p=&a;39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )(A) a[p](B) p[a](C) *(p+2)(D) p+240.已知 x=10、y=20,写出语句z = ++x + y--;运行后变量x、y、z的值为( C )(A)x=11, y=19, z=30(B)x=11, y=19, z=31(C)x=10, y=19, z=29(D)x=11, y=20, z=3041.表达式0x0F&0xAA的取值为(B )(A)55 (B)0x0A (C)255 (D)0xA042.以下叙述不正确的是 ( C )(A)一个程序可以由一个或多个函数组成 (B)一个C源程序必须包含一个main函数(C)注释只能位于一条语句的最后面 (D)一个C源程序可以只有一个main函数43.以下合法的用户标识符为( D )(A) 1st(B)break(C)Two Words(D)B75744.对于表达式(x<=0)?x=x-2:x=x+3,若当前x取值为-2,该表达式的运算结果为( B)(A)-2 (B)-4 (C)1 (D)245.对于变量定义char* p_name[]={“Kate”,“John”,“Mike”},如下哪一种表达式能表示“John”中的‘o’字符?(C )(A)p_name[0][1] (B)p_name[2][1] (C)*(p_name[1]+1) (D)*(p_name[1]+2)46.若char w; int x;float y; double z;则表达式w*x+z-y的值为( D )类型(A)char(B)int(C)float(D)double47.假设有变量定义int m=6,n=2; 执行语句m*=n++;后,以下结果正确的是( C )(A)m为18,n为3 (B)m为12,n为2 (C)m为12,n为3 (D)m 为18,n为248.字符串“Testing\n”的长度为( B )(A)7 (B)8 (C)9 (D)1049.设int x=8,y,z;执行语句y=z=x++;x=y=z;后,变量x的值是( C )(A) 0(B) 1(C) 8(D) 950.若有定义:int a[3][4];不能表示a[1][1]的是(D )(A) *(a[1]+1) (B) *(&a[1][1]) (C)(*(a+1))[1] (D) *(a+5) 二.程序分析题1. 有如下源程序:int a[]={2,4,6,8,10};int y, *p;p=&a[0];y=*p;printf(“%d”,y);执行该程序后,输出为 2 。