《C程序设计基础及实验》课程期中考试试卷参考答案
C++程序设计基础期中测试题卷

《程序设计基础》期中测试题卷学号:姓名:一选择题。
从四个选择答案中选择正确的一个,把编号填入括号内(每小题2.5分,共40分)1. 以下C++标识符中,哪一个是正确的( )。
A. voidB. _text_1C. 3_nameD. 2a_one2. 一个C++源程序主要由()组成。
A. 子过程B. 过程C. 主程序与子程序D. 函数3. 不属于字符型常量的是( )。
A. …s‟B. …\32‟C. …\n‟D. “L”4. 设x、y和z均为实型变量,代数式x/(yz)的正确写法是( )。
A. x/y*zB. x%y%zC. x%y*zD. x/y/z5. 设整型变量i为5,使整型变量k不为2的表达式为( )。
A. k=i%2B. k=i/2C. k=6 - (--i)D. k=i>3?2:16. 假设变量x的值为35,则表达式(x&15)&&(x|15)的值是( )。
A. 35B. 15C. 1D. 07. 假设变量x的值为10,则程序段:while(--x) {} 的循环次数是( )。
A. 9B. 10C. 11D. 无限8. 语句for(int i=0,x=0; !x && i<=6; i++) 的循环次数为( )。
A. 0B. 7C. 6D. 59. 下面的函数声明语句中,最正确的是( )。
A. int max(x,y) ;B. Void max(int,int) ;C. int max(int x, int y) ;D. max(int, int);10. 在C++程序中,直接或间接调用自己的函数称为( )。
A. 递归函数B. 内联函数C. 重载函数D. 成员函数11. 在一个程序文件中,在所有函数外部定义的变量称为( )。
A. 局部变量B. 全局变量C. 寄存器变量D. 外部变量12. 在下列的句子中,将函数int f(int x, int y)正确重载的是( )。
程序设计基础期中考试试卷与参考答

程序设计基础期中考试试卷与参考答Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT《程序设计基础》课程期中考试试卷试题一、判断题(每小题2分,共20分)说明:在以下提供的若干陈述中,逐一判断其正确与否,用A表示正确,用B表示错误。
(1) 事件过程可以由某个用户事件触发执行,它不能被其他过程调用。
(2) Visual Basic的Double类型数据可以精确表示其数值范围内的所有实数。
(3) For/Next循环正常(未执行Exit For)结束后,控制变量的当前值等于终值。
(4) Sub过程名在过程中必须被赋值。
(5) SetFocus方法是把焦点移到指定对象上,使对象获得焦点,该方法适用于所有控件。
(6) 移动框架时框架内控件也随之移动,所以框架内控件的Left和Top属性值也随之改变。
(7) 单选钮控件和复选框控件都具有Value属性,它们的作用完全一样。
(8) 当组合框的Style属性设置为0时,组合框称为“下拉式组合框”,其选项可以从下拉列表框的列表项中选择,也可以由用户输入。
(9) 若Visual Basic中容器取缺省坐标系,则坐标原点在容器左上角、单位长度为像素。
(10 ) 用Output模式打开文件,如果指定文件和路径不存在,则会自动创建指定文件及路径。
试题二、单选题(每小题2分,共20分)(11 ) 将VB新建的“标准EXE”工程保存在磁盘上,至少会产生(11)文件。
[A] .frx和.frm [B] .exe和.vbp [C] .vbp和.frm [D] .frm和.bas(12 ) 窗体Form1的Name属性是Frm1,它的单击事件过程名是(12)。
[A] Form1_Click [B] Form_Click [C] Frm1_Click [D] Me_Click(13 ) 已知字符串变量x存放"1234",表达式Val("&H"+Left(x,2))的值是(13)。
c程序设计期中考试题及答案

c程序设计期中考试题及答案一、选择题(每题2分,共20分)1. C语言中,用于定义整型变量的关键字是()。
A. intB. floatC. doubleD. char答案:A2. 下列哪个选项是C语言中的合法标识符?()A. 2variableB. variable2C. variable-2D. variable$2答案:B3. 在C语言中,以下哪个选项是正确的字符串字面量?()A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!'"D. 'Hello, World!'答案:A4. 若有以下代码段:```cint a = 10, b = 20;a =b = a + b;```则变量a的值是()。
A. 10B. 30C. 20D. 无法确定答案:B5. C语言中,哪个函数用于计算并返回字符串的长度?()A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A6. 在C语言中,以下哪个是正确的二维数组声明?()A. int array[3][4];B. int array[][];C. int array[3][];D. int array[4,3];答案:A7. C语言中,以下哪个是正确的函数声明?()A. int add(int a, int b);B. int add(int, int);C. int add();D. int add(a, b);答案:A8. 下列哪个选项是C语言中的逻辑运算符?()A. &&B. ||C. !D. 以上都是答案:D9. 在C语言中,以下哪个选项是正确的条件语句?()A. if (condition) { statement1; } else { statement2; }B. if (condition) statement1; else statement2;C. if (condition) statement1; if (condition) statement2;D. if (condition) { statement1; statement2; }答案:A10. C语言中,以下哪个选项是正确的循环语句?()A. for (int i = 0; i < 10; i++) { /* code */ }B. while (condition) { /* code */ }C. do { /* code */ } while (condition);D. 以上都是答案:D二、填空题(每题2分,共20分)1. C语言中,用于定义字符型变量的关键字是()。
《 程序设计基础 》期中考试试卷

二、选择题(每题1分,共15分)
1.判断下面标识符中哪个是C语言中合法的用户定义标识符()
A.2a1b B. a%bd C. _123 D.char
2.设有以下定义
int a=0; double b=1.25; char c=’A’; #define M 2
B.调用之前的函数声明可以写为void printarray(float [],int) ;
C.调用语句可以为printarray(a[8],8);
D.调用语句可以为printarray(a,8);
12.以下说法正确的是( )
A.若在某函数中用static声明一个局部变量,则该变量在此函数外也起作用
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{a[i][j]=a[j][i]; a[j][i]= a[i][j];
}
}
四、程序填空(共10分)
1.本程序用于求100-500之间的素数并输出
# include<stdio.h>
#include<math.h>
void main()
{
printf("s=%f\n",s);
}
2、以下程序用语实现分段函数cost=的功能
#include<stdio.h>
void main(){
int n; float cost;
if(n>5) cost=1;
if(n>3) cost =0.7;
else cost=0.5;
}
3、以下程序用于从终端接收一个字符赋给c,如c不为换行符就循环输出,为换行符则停止
《C程序设计基础及实验》课程期中考试试卷参考答案

浙江大学《C程序设计基础及实验》课程期中考试试卷参考答案考试日期:2017年12月8日,考试时间:70分钟诚信考试,沉着应考,杜绝违纪。
考生姓名:学号:所属院系:_(注意:答题内容必须写在答题卷上,写在本试卷上无效)试题一、单选题(每小题2分,共20分)1.以下正确的字符常量是______。
A.’\412’B.255C.’\08’D.’’【解答】A.八进制412超出了8位二进制所能表示的范围03ff;B.255是一个合法的整数,可以表示一个字节的值;C.8不是一个合法的八进制数字;D.是转义字符,’表示单个单引号字符本身,所以。
字符常量缺少右单引号。
2.假设有定义:floatx=16/5/2.0,y=16/5.0/2;则x和y的值分别为______。
A.1.51.6B.1.61.6C.1.51.5D.1.61.5【解答】16/5/2.0(16/5)/2.03/2.01.516/5.0/2(16/5.0)/23.2/21.63.下列语句中,_____将输出%d。
A.printf(“%d”);B.printf(“%%d”);C.printf(“\%d”);D.printf(“%%%d”)【解答】A.%d表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;B.%%表示输出一个%符号本身,d是普通字符,原样输出,所以输出%d;C.\%表示符号%,%d表示输出十进制整型值,故输出结果是随机值;D.%%表示输出符号%本身,%d表示输出十进制整型值。
4.下列程序段输出结果为_____。
《C程序设计基础及实验》期中考试试卷,2017年12月8日1/10intx=1,y=012;printf(“%y d*”x+,+);A.12B.10C.20D.24【解答】x++表达式的值是1,y*x++y*1y012105.下列程序段输出结果为_____。
inta=1,b=2,c=2,t;while(a<b<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);A.1,2,0B.2,1,0C.1,2,1D.2,1,1【解答】a=1,b=2,c=2(1)表达式a<b<c1<2<21<21条件成立,则执行循环体,结果为:a=2,b=1,c=1(2)表达式a<b<c2<1<10<11条件成立,则执行循环体,结果为:a=1,b=2,c=0(3)表达式a<b<c1<2<01<00条件不成立,循环结束。
C语言程序设计期中试卷(含答案)

桂林电子科技大学信息科技学院试卷2008-2009 学年第 2 学期 课号 课程名称:C 语言程序设计(闭卷) 适用班级(或年级、专业) 通信、电子(本试卷包括第一卷和第二卷,答卷时间总共120分钟)第一卷说明:(1) 第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。
(2) 答本卷的题目时,要在标准答题纸上编写对应的栏目中,用铅笔在正确答案图黑,在试题上直接勾划者不得分。
(3) 本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
第一部分:基础知识(20题,共40分)1 以下叙述中正确的是A )C 语言的源程序不必通过编译就可以直接运行B )C 语言中的每条可执行语句最终都将被转换成二进制的机器指令 C )C 源程序经编译形成的二进制代码可以直接运行D )C 语言中的函数不可以单独进行编译 2 以下选项中合法的用户标识符是A) long B) _2Test C) 3Dmax D) A.dat3 已知大写字母A 的ASCII 码值是65,小写字母a 的ASCII 码是97,则用八进制表示的字符常量'\101'是A) 字符A B) 字符a C) 字符e D) 非法的常量 4 以下非法的赋值语句是A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0; 5 设a 和b 均为double 型变量,且a=5.5、b=2.5,则表达式(int)a+b/b 的值是 A) 6.500000 B) 6 C) 5.500000 D) 6.0000006 已知i 、j 、k 为int 型变量,若从键盘输入:1,2,3<回车>,使i 的值为1、j 的值为2、k 的值为3,以下选项中正确的输入语句是A) scanf("%2d%2d%2d ",&i,&j,&k); B) scanf("%d %d %d ",&i,&j,&k); C) scanf("%d,%d,%d ",&i,&j,&k); D) scanf("i=%d,j=%d,k=%d ",&i,&j,&k);7设有定义:float a=2,b=4,h=3;,以下C 语言表达式与代数式 计算结果不相符的是A) (a+b) *h/2 B) (1/2)*(a+b)*h C) (a+b)*h*1/2 D) h/2*(a+b)h b a )(218与数学式子123-x nx对应的C 语言表达式是A) 3*x^n(2*x-1) B) 3*x**n(2*x-1)C) 3*pow(x,n)*(1/(2*x-1)) D) 3*pow(n,x)/(2*x-1)9 设有定义:long x=-123456L ;,则以下能够正确输出变量x 值的语句是A) printf("x=%d\n ",x); B) printf("x=%1d\n ",x); C) printf("x=%8dL\n ",x); D) printf("x=%LD\n ",x); 10 若有以下程序:main(){ int k=2,i=2,m;m=(k+=i*=k); printf("%d,%d\n ",m,i); }执行后的输出结果是A) 8,6 B) 8,3 C) 6,4 D) 7,4 11 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是A) 6 B) 0 C) 2 D) 1 12 以下选项中,与k=n++完全等价的表达式是A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1 13 下列关于单目运算符++、--的叙述中正确的是A) 它们的运算对象可以是任何变量和常量B) 它们的运算对象可以是char 型变量和int 型变量,但不能是float 型变量 C) 它们的运算对象可以是int 型变量,但不能是double 型变量和float 型变量 D) 它们的运算对象可以是char 型变量、int 型变量和float 型变量 14 若有以下程序段(n 所赋的是八进制数)int m=32767,n=032767; printf("%d,%o\n ",m,n); 执行后输出结果是A) 32767,32767 B) 32767,032767 C) 32767,77777 D) 32767,077777 15 C 语言中用于结构化程序设计的三种基本结构是A) 顺序结构、选择结构、循环结构 B) if 、switch 、break C) for 、while 、do-while D) if 、for 、continue16 有一函数,0x 0x 0x 101y <=>-=⎪⎩⎪⎨⎧,以下程序段中不能根据x值正确计算出y值的是A) if(x>0) y=1; B) y=0;else if(x==0) y=0; if(x>0) y=1;else y=-1; else if(x<0) y=-1;C) y=0; D) if(x>=0)if(x>=0) if(x>0) y=1; if(x>0) y=1; else y=0; else y=-1; else y=-1;int m=0,n=0; char c='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是:A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,018 有以下程序main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是A) 0,0 B) 0,1 C) 1,0 D) 1,119 有定义语句:int x,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是A) 11 12<回车> B) 11, 12<回车> C) 11,12<回车> D) 11,<回车>12<回车>20 设有如下程序段:int x=2002,y=2003;printf("%d\n",(x,y));则以下叙述中正确的是A) 输出语句中格式说明符的个数少于输出项的个数,不能正确输出B) 运行时产生出错信息C) 输出值为2002D) 输出值为2003二第二部分:简单程序(12题,21-26题每题2分,27-32题每题3分,共30分)21 有以下程序main(){ int i;for(i=0;i<3;i++)switch(i){ case 1:printf("%d",i);case 2:printf("%d",i);default:printf("%d",i);}}执行后输出结果是A) 011122 B) 012 C) 012020 D) 120{ int i=1,j=1,k=2;if((j++||k++)&&i++) printf("%d,%d,%d\n",i,j,k);}执行后输出结果是A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,323 有以下程序main(){ char a,b,c,*d;a='\'; b='\xbc';c='\0xab'; d="\017";printf("%c%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a='\';语句不正确 B) b='\xbc';语句不正确C) d="\017";语句不正确 D) a='\';和c='\0xab';语句都不正确24 以下程序段中与语句k=a>b?(b>c?1:0):0; 功能等价的是A) if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1;else k=0; else k=0;C) if(a<=b) k=0; D) if(a>b) k=1;else if(b<=c) k=1; else if(b>c) k=1;else k=0;25 有以下程序main(){ int a=5,b=4,c=3,d=2;if(a>b>c)printf("%d\n",d);else if((c-1>=d)==1)printf("%d\n",d+1);elseprintf("%d\n",d+2);}执行后输出结果是A) 2 B) 3 C) 4 D) 编译时有错,无结果26 有以下程序main(){ int i=10,j=1;printf("%d,%d\n",i--,++j); }执行后输出结果是A) 9,2 B) 10,2 C) 9,1 D) 10,1{ int i=0,s=0;do{ if(i%2) { i++; continue; }i++;s+=i;} while(i<7);printf("%d\n",s);}执行后输出结果是A) 16 B) 12 C) 28 D) 2128 有以下程序main(){ int x=0,y=5,z=3;while(z-->0&&++x<5) y=y-1;printf("%d,%d,%d\n",x,y,z);}程序执行后的输出结果是A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-529 有以下程序main(){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}程序执行后的输出结果是A) 自然数1~9的累加和 B) 自然数1~10的累加和C) 自然数1~9中的奇数之和 D) 自然数1~10中的偶数之和30 有以下程序main(){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序执行后的输出结果是A) n=5 B) n=2 C) n=3 D) n=431 要求以下程序的功能是计算:10131211++++= s main (){ int n; float s; s=1.0;for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n ",s); }程序运行后输出结果错误,导致错误结果的程序行是A) s=1.0; B) for(n=10;n>1;n--) C) s=s+1/n; D) printf("%6.4f/n ",s); 32 有以下程序段int n=0,p;do { scanf("%d ",&p); n++; } while(p!=12345 && n<3); 此处do —while 循环的结束条件是A) p 的值不等于12345并且n 的值小于3 B) p 的值等于12345并且n 的值大于等于3 C) p 的值不等于12345或者n 的值小于3 D) p 的值等于12345或者n 的值大于等于3第二卷说明:(1) 第二卷含5大题,均属填空题,总共有10个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C 语言程序。
《C++程序设计》期中考试答案

《C++程序设计》期中考试答案⼤连东软信息学院08~09学年第⼆学期期中试题C++程序设计学⽣层次:嵌⼊式系统⼯程系 08级嵌⼊式系统⼯程专科说明:本试卷共五⼤题,试卷满分100分,考试时间120分钟。
⼀、单选题(每⼩题1分,满分20分)⼆、填空题(每空1分,满分20分)1.当执⾏cin语句时,从键盘上输⼊每个数据后必须接着输⼊⼀个___空格__符,然后才能继续输⼊下⼀个数据。
2.重载⼀个函数的条件是:该函数必须在参数的个数或参数的__类型__上与其它同名函数有所不同。
3.函数调⽤时,实参向形参的传送分为两种传送⽅式。
4.如果⼀个函数中有多个默认参数,则默认参数必须全部处在形参表的__右边__部分。
5.假定对⼆维数组a[3][4]进⾏初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]和a[2][3]分别被初始化为___8__和__0__。
6.假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为__25__。
7.若y是x的引⽤,则&y和&x的值_相等___,即为变量___x___的地址。
8.类中的数据成员的访问属性通常被指明为_私有的_。
9.,对于结10.若在类的定义体中只给出了⼀个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上__类名_和两个冒号分隔符。
11.若要把类外定义的成员函数规定为内联函数,则必须把__inline__关键字放到函数原型或函数头的前⾯。
12.假定class A为⼀个类,a为该类的公有数据成员,f()为该类公有函数成员,x为该类的⼀个对象,则访问x对象中数据成员a 的格式为__x.a__,访问x对象中函数成员f()的格式为_x.f()_。
13.⼀个类的_构造函数_实现对该类对象的初始化功能。
14.⼀个类可以有__多_个构造函数,__⼀个析构函数。
三、写出程序的运⾏结果(每⼩题4分,满分20分)1.运⾏结果:i=1011,*pi=1011,ri=1011i=2022,*pi=2022,ri=2022i=3033,*pi=3033,ri=30332.#includevoid main(){int a,b;for(a=1,b=2; b<50;) {cout<a=a+b;b=a+b;}cout<cout<}运⾏结果:1 2 3 5 8 13 21 3455 893.#include#includeusing namespace std;class Student{public:Student(int n,string nam,char s) {num=n;name=nam;sex=s;cout<<"Constructor called."<}~Student(){cout<<"Destructor called."<{cout<<"num:"<cout<<"name:"<cout<<"sex:"<}private:int num;string name;char sex;};int main(){Student stud1(1001,"Wang",'g'); stud1.display();Student stud2(1002,"Fan",'b'); stud2.display();return 0;}运⾏结果:Constructor called.num: 1001name: Wangsex: gConstructor called.num: 1002name: Fansex: bDestructor called.1001 Destructor called.10024.class A{float x,y;public:A(float a, float b=8) { x=a; y=b; } A() { x=0; y=0;}void Print(void) { cout<void main(void){ A a1, a2(10), a3(3.0, 7.0);a1.Print();a3.Print();}运⾏结果:0 020 83.0 7.05.运⾏结果:Initializing 10Initializing 12Initializing 3Initializing 4Destructing 4Destructing 3Destructing 12Destructing 10四、补充程序(每空2分,满分30分,请将答案写在答题纸上)1、#includevoid main(){int *p;int i=10;p=&i //使p指向icout << “Output int i=”<< i << endl; //输出i的值cout << “Output int p=”<< *p << endl; //输出int 指针p所指对象的值2、求2个正整数或3个正整数中的最⼤数,⽤带有默认参数的函数实现#includeusing namespace std;int main(){int max(int a,int b,int c=0); //声明函数maxint a,b,c;cin>>a>>b>>c;cout<<"max(a,b,c)="<cout<<"max(a,b)="<}int max(int a,int b,int c){if(b>a) a=b;if(c>a) a=c;return a; //补充函数体}3、下⾯为⼀个类的不完整定义,请补充完整。
C期中考试(含答案)

计算机基础(二)期中考试卷(含答案)一、选择题(1-15题每题2分,16-25题每题3分,共60分)(1)下列常数中不能作为C语言常量的是【B】A)0xabc B)2.5e-0.2 C)32 D)0747 (2)下列可用于C用户标识符的一组是【B】A)void, define, WORD B)a3_b3, _123, CarC)For, -abc, IFCase D)2a, DO, sizeof(3)C语言中运算对象必须是整型的运算符是【A】A)%= B)/ C)= D)<=(4)已知int x=10, y=3;则执行该语句printf("%d,%d\n",x--,--y);的输出结果是【D】A)10,3 B)9,3 C)9,2 D)10,2(5)short型的数据长度为2个字节,则unsigned short 类型数据的取值范围是【C】A)-127~128 B)0~255 C)0~65535 D)0~32768 (6)已知int x=6,y=2,z;则执行表达式z=x=x>y后,变量z 的值为【B】A)0 B)1 C)4 D)5(7)已知int x=5,y=3;则表达式(x||y)&&78的结果为【A】A)1 B)0 C)5 D)78(8)已知int x=1,y=1;表达式(!x||y--)的值是【B】A)0 B)1 C)2 D)-1(9)已知int i,j;则内循环体的执行次数是【C】for(i=6;i;i--)for(j=0;j<5;j++);A)40 B)35 C)30 D)25(10)已知int x,i,j,k;则计算表达式x=(i=4,j=16,k=32)后,x的值为【C】A)4 B)16 C)32 D)52(11)下列程序段执行后,x的值为【D】int a=14,b=15,x;char c='A';x=(a&&b)&&(c<'B');A)ture B)false C)0 D)1(12)下列表达式中,结果为5的是【B】A)6*5%6 B)5*-2+15 C)5+75%10 D)6+-2/3 (13)已知int k=10;则下列程序的输出结果为【B】do{printf("%d",k--);}while(!k);A)9 B)10 C)10987654321 D)没有输出(14)对以下程序段的描述,正确的是【C】x=-1;do{x=x*x;}while(!x);A)是死循环 B)循环体执行两次C)循环体执行一次 D)有语法错误(15)已知int i,j;则for(i=j=0; i<10&&j<8; i++,j+=3);控制的循环体执行的次数是【C】A)9 B)8 C)3 D)2(16)以下程序输出结果是【A】#include <stdio.h>int main(void){int a=10,b=50,c=30;a=a>30?1:2;b=b>30?1:2;c=c>30?1:2;printf("%d,%d,%d\n",a,b,c);return 0;}A)2,1,2 B)1,2,1 C)1,1,2 D)2,1,1 (17)下列程序的输出结果是【D】#include <stdio.h>int main(void){int a=45,b=40,c=50,d;d=a>30?b:c;switch(d){case 30: printf("%d,",a);case 40: printf("%d,",b);case 50: printf("%d,",c);default: printf("#");}return 0;}A)40,50 B)50,# C)40,# D)40,50,# (18)下列程序的输出结果是【B】#include <stdio.h>int main(void){int a=10,b=10,k;for(k=0;a>8;b=++k)printf("%d,%d,",a--,--b);return 0;}A)10,9,9,8, B)10,9,9,0,C)10,10,9,1, D)9,9,9,1,(19)下列程序的输出结果是【B】#include <stdio.h>int main(void){int a,b,m;for(a=5;a>=1;a--)for(m=0,b=a;b<=5;b++)m=m+a*b;printf("%d\n",m);return 0;}A)30 B)15 C)20 D)1(20)下列程序的输出结果是【A】#include <stdio.h>int main(void){char c;c=('z'-'a')/2+'A';putchar(c);return 0;}A)M B)N C)O D)Q(21)下列程序的输出结果是【D】#include <stdio.h>int main(void){int k=8;switch(k){case 9:k+=1;case 10:k+=1;case 11:k+=1;break;default:k+=1;}printf("%d\n",k);return 0;}A)12 B)11 C)10 D)9(22)下列程序的输出结果是【B】#include <stdio.h>int main(void){int i=6;while(i--)printf("%d",--i);printf("\n");return 0;}A)531 B)420 C)654321 D)死循环(23)下列程序的输出结果是【C】#include <stdio.h>int main(void){int i=1,j=1,k=2;if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k);return 0;}A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 (24)下列程序的输出结果是【C】#include <stdio.h>int main(void){float x=2.0,y;if(x<0.0) y=0.0;else if(x<10.0) y=1.0/x;else y=1.0;printf("%.2f\n",y);return 0;}A)0.00 B)0.25 C)0.50 D)1.00(25)执行下列程序从键盘上输入5,2,则输出结果是【C】#include <stdio.h>int main(void){int a,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b) k=a%b;else k=b%a;printf("%d\n",k);return 0;}A)5 B)3 C)2 D)0二、编程题(每题10分,共40分)(1)用户输入圆柱体半径r和高h,输出其体积V,要求输出结果小数点后保留2位有效数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学《C程序设计基础及实验》课程期中考试试卷参考答案考试日期: 2017年 12 月 8 日,考试时间: 70 分钟诚信考试,沉着应考,杜绝违纪。
考生姓名:学号:所属院系: _ (注意:答题内容必须写在答题卷上,写在本试卷上无效)试题一、单选题(每小题2分,共20分)1. 以下正确的字符常量是______。
A.’\412’B.255 C.’\08’D.’\’【解答】A.八进制412超出了8位二进制所能表示的范围03ff;B.255是一个合法的整数,可以表示一个字节的值;C. 8不是一个合法的八进制数字;D. \是转义字符,\’表示单个单引号字符本身,所以。
字符常量缺少右单引号。
2. 假设有定义:float x=16/5/2.0, y=16/5.0/2; 则x 和y 的值分别为______。
A.1.5 1.6 B.1.6 1.6 C.1.5 1.5 D.1.6 1.5【解答】16/5/2.0 → (16/5)/2.0 → 3/2.0 → 1.516/5.0/2 → (16/5.0)/2 → 3.2/2 → 1.63. 下列语句中,_____ 将输出%d。
A.printf(“%d”); B.printf(“%%d”); C.printf(“\%d”); D.printf(“%%%d”)【解答】A.%d表示输出十进制整型量,但缺少相应的输出表达式,故输出结果是随机值;B.%%表示输出一个%符号本身,d是普通字符,原样输出,所以输出%d;C.\%表示符号%,%d表示输出十进制整型值,故输出结果是随机值;D.%%表示输出符号%本身,%d表示输出十进制整型值。
4. 下列程序段输出结果为_____。
int x=1, y=012;printf(“%d”,y*x++);A.12 B.10 C.20 D.24【解答】x++表达式的值是1,y*x++ → y*1 → y → 012 → 105. 下列程序段输出结果为_____。
int a=1,b=2,c=2,t;while(a<b<c) { t=a; a=b; b=t; c--; }printf(“%d,%d,%d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1【解答】a=1,b=2,c=2(1) 表达式a<b<c → 1<2<2 → 1 < 2 → 1条件成立,则执行循环体,结果为:a=2,b=1,c=1(2) 表达式a<b<c → 2<1<1 → 0 < 1 → 1条件成立,则执行循环体,结果为:a=1,b=2,c=0(3) 表达式a<b<c → 1<2<0 → 1 < 0 → 0条件不成立,循环结束。
6. 在下图中,阴影部分区域可用表达式_______来表示。
Xa b cA.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c)C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c)【解答】(x<=a)|| ((x >=b) && (x <= c)) →(x<=a)|| (x>=b) && (x <= c)7. 下列程序段输出结果为_____。
int x = -3, y = 2;if(x>y);x = -x;if(x<y)y = -y;printf("x=%d,y=%d\n", x, y);A.x=3,y=-2 B.x=3,y=2 C.x=-3,y=2 D.x=-3,y=-2【解答】x=3,y=2;欢迎下载 2请注意:if(x>y);8. 对于循环while(!e) 语句,!e等价于_____。
A.e==0 B.e!=0 C.e==1; D.e!=19. 循环for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行_____。
A.6次B.3次C.0次D.无限次【解答】(1) i=0, j=5: ++i → 1 , --j → 4, i=1,j=4, 1 != 4成立;打印;i=1, j=4;(2) i=1,j=4: ++I → 2 , --j → 3, i=2,j=3, 2 != 3成立;打印;i=2, j=3;(3) i=2,j=3: ++I → 3, --j → 2, I = 3, j=2, 3 != 2成立;打印;i=3,j=2;(4) ……10. 下列程序段执行后s值为_____。
int i=5, s=0;do if (i%2) continue; else s+=i; while (--i);A.15 B.9 C.6 D.以上均不是【解答】(1) I=5,s=0: i%2→5%2→1成立:continue;--i→4, i=4;(2) I=4,s=0: i%2→4%2→0不成立:s=0+4=4;--i→3, i=3(3) I=3,s=4: i%2→3%2→1成立:continue;--i→2, i=2(4) I=2,s=4: i%2→2%2→0不成立:s=4+2=6; --i→1,i=1(5) I=1,s=6: i%2→1%2→1成立:continue;--i→ 0试题二、填空题(每小题2分,共20分)1. 表达式1+4/5+15<7+4%5+(8,10) 的值为_____。
【解答】1+(4/5)+15<7+4%5+(8,10)→ 1+0+15<7+4%5+(8,10)→1+15<7+4%5+(8,10)→16<7+4%5+(8,10)→16<7+4+(8,10)欢迎下载 3→16<11+(8,10)→16<11+10→16<21→12. 表达式!!5 的值为_____。
【解答】!!5 → !(!5) →!0→13. 表达式~(10<<1)&4 的值为______。
【解答】10: 0000101010<<1: 00010100~(10<<1): 111010114: 00000100&----------------------------------00000000 即04. 假设有定义:int x=10;则表达式0<=x<=9 的值为_____。
【解答】0<=x<=9 → (0<=x)<=9 → (0<=10) <=9 → 1 <= 9 → 15. 下列for循环语句将输出: 0 1 2 0 1 2 0 1 2.for( i=1; i<=9; i++ ) printf("%2d", _______);【解答】(i-1)%36. 对于定义: int m=5, y=2; 当计算表达式y+=y-=m*=y后,y的值为_____。
【解答】y+=y-=m*=y ⇔ y += (y -= (m *=y))先计算m*=y: 由于m=5, y=2, 所以:m=m*y=5*2→10再计算y-=10: 由于y=2,所以:y = y-10=2-10→ -8最后计算y += -8: 由于y=-8,所以:y = y+(-8)=(-8)+(-8)→-167. 对于char c; 若已知其值为小写字母, 则将其转换为相应大写字母的表达式为_____。
欢迎下载 4【解答】c-‘a’+’A’8. 下列语句的输出结果为_____。
printf("%d#%x#", 027, 27);【解答】23#1b#9. 已知字符’a’的ASCII码为97,则下列语句的输出结果为_____。
printf("%c#%d#",98,’c’);【解答】b#99#10. 下列程序段将输出_____。
unsigned char x=255,y=’\1’;switch(!!x) {case 0: printf("*0*#");break;case 1:switch(y) {case 0: printf("*1*#");break;case 1: printf("*2*#");break;}default: printf("*3*#");}【解答】*2*#*3*#试题三、程序阅读题(每小题6分,共30分)1. 下列程序将输出_____。
#include <stdio.h>void swap(int x, int y){欢迎下载 5int t;t=x; x=y; y=t;return;}void main(void){int a=3, b=2;swap(a, b);printf("%d#%d#", a, b);return;}【解答】3#2#注:尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原则——“实参向形参单向传值(即x向a赋值,y向b赋值),形参的改变不影响实参”,实参变量a和b的值未发生交换!2. 下列程序将输出_____。
# include <stdio.h>int s;int f(int m){static int k=0;for(; k<=m; k++) s++;return s;}void main(void ){int s=1;s=f(2)+f(2);printf("%d#%d#", s, f(20));return;}【解答】输出结果为:6#21#欢迎下载 6注:(1)全局变量s的初始值为0;(2)在f函数中,s是全局变量有效,而在main函数中,s是局部变量有效;(3)在f函数中,k是静态变量,每次函数f调用结束后,其内存单元和值仍然保留。
3. 若输入:1273 <回车>,以下程序的输出结果是_______。
#include <stdio.h>void main(void){int n, m;scanf(“%d”, &n);m=0;while (n>0) {m=m*10+n%10;n/=10;}printf(“%d”, m);return;}【解答】输出结果是:37214. 若输入-6+15*3/5=<回车> , 以下程序的输出结果是_______。