您的当前位置:首页正文

期中考试命题稿2011-2012(1)

2024-04-08 来源:好走旅游网


浙江工业大学2010/2011学年

第一学期期中试卷

课程 C++程序设计 I 姓名___________________________ 班级____________________________ 授课教师 题序 计分

试题一、选择题(每题1分,共20分) 1.C语言中最简单的数据类型包括__________。B A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 2.C语言中,运算对象必须是整型的运算符是__________。A A) % B) / C) %和/ D) * 3.为表示关系x≤y≤z,正确的C语言表达式是__________。A A) (x<=y)&&(y<=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y)&(y>=z) 4. 若定义x和y为double类型,则表达式:x=2,y=x+5/2的值是__________。C A) 4 B) 4.5 C) 4.0 D) 3.0 5. 若变量已正确说明为int类型,要给a,b,c输入数据,以下语句正确的是__________。D A) read(a,b,c); B) scanf(“%d%d%d”,a,b,c); C) scanf(“%D%D%D”,&a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&c); 6. 下面有关for循环的正确描述是_______。 D A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判断表达式 C) 在for循环中不能用break语句跳出循环体 D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 7. 设int c=5和int a, a=2+(c+=c++,c+8,++c), 则a=__________。B A) 15 B) 14 C) 13 D) 16 8.以下程序的输出结果是__________。D int main() { int x=10,y=10; printf(“%d %d\\n”,x--,--y);

一 二 三 四 五 六 七 八 总评

return 0; } A) 10 10 B) 9 9 C) 9 10 D) 10 9 9. 不合法的八进制数是________ B A) 0 B) 028 C) 077 D)01 10. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为__________D A) a<>0 B) !a C) a=0 D) a 11. 以下程序的输出结果是( )。C int main( ) { int a=011; printf(“%d\\n”,++a);return 0; } A) 12 B) 11 C) 10 D) 9 12. 在C语言中,逻辑值“真”用__________表示。D A) true B) 大于0的数 C) 非0的整数 D) 非0的数 13. 下面程序的输出是__________ A int main() { unsigned a=32768; printf(“a=%d\\n”,a); return 0; } A) a=32768 B) a=32767 C) a=-32768 D) a=-1 14. 在C语言的if语句中,用作判断的表达式为__________ D A) 关系表达式 B) 逻辑表达式 C) 算术表达式 D) 任意表达式 15. 执行下面的程序后,a的值为 B int main() { int a,b; for (a=1,b=1;a<=100;a++) { if (b>=20) break; if (b%3==1){ b+=3; continue;} b-=5; } return 0;

1

} A) 7 B) 8 C) 9 D) 10 16. 表达式__________是满足:当c的值为1、3、5三个数时值为“真”,否则值为“假”的表达式 D A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c==5) D) (c==1)||(c==3)||(c==5) 17. 若变量已正确说明,则以下程序段输出为__________ A a=10;b=50;c=30; if (a>b) a=b,b=c; c=a; A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 18. 定义如下变量:B int n=10; 则下列循环的输出结果是 while (n>7) { n--; printf(“%d\\n”,n); } A) 10 B) 9 C) 10 D) 9 9 8 9 8 8 7 8 7 7 6 19. 在C语言中,while语句中的条件为__________时,结束该循环。A A) 0 B) 1 C) true D) 非0 20. 若k为整型,以下while循环__________次。C int k=10; while (k=0) k=k-1; A) 10次 B) 无限循环 C) 一次不执行 D) 执行一次 试题二、程序填空题(每空1 分,共20 分) 【程序说明】 1. 以下程序可判断输入的一个整数是否能被3或7整除,若能整除,输出“yes”,否则输出“no”。请填 2

空。 #include int main() { int k; printf(“Enter a int number:”); scanf(“%d”,&k); if________________ (k%3==0||k%7==0) printf(“yes\\n”); else printf(“___________”); “no\\n” return 0; } 【程序说明】 2. 以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数。请填空。 int main() { ______n,i,j; int printf(“Enter INT numbers,with 0 to end\\n”); i=j=0; scanf(“%d”,&n); while __________ (n!=0)或(n) { if (n>0) i=__________; i+1 if (n<0) j=__________; j+1 ___________________; scanf(“%d”,&n); } printf(“i=%4d j=%4d\\n”,i,j); } 【程序说明】 3. 以下程序用“辗转相除法”来求出两个正整数的最大公约数。请填空。若两个数分别放在m和n中,求最大公约数的算法如下: (1) 将两数中最大的那个放在m中,小的放在n中。 3

(2) 求出m被n除后的余数r。 (3) 若余数为0则执行步骤(7);否则执行步骤(4)。 (4) 把除数作为新的被除数;把余数作为新的除数。 (5) 求出新的余数r。 (6) 重复步骤(3)到(5)。 (7) 输出n,n即为最大公约数。 int main() { int r,m,n; printf(“Enter m,n:”); scanf(“%d%d”,__________); &m,&n printf(“m=%d n=%d\\n”,m,n); if (mprintf(“n=%d,cock=%d,hen=%d,chick=%d\\n”,n,i,j,k); } } return 0; } 试题三、程序阅读题(每题5分,共20分) ⒈ 程序1( ) -1 4 7 6 #include void main() { int m=18,s=0; do { switch(m%6) { case 2 : m/=2;s+=2; break; case 3 : m/=3;s+=3; break; case 5 : m/=5;s+=5; break; default : m--; s--; }; printf(\"%d\\n\ } while(m); } 2.程序2( ) 程序运行时,输入ABC,写出输出结果 zyx #include int main( ) { char ch; while((ch = getchar()) != '\\n') { if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch; 5

putchar(ch); } return 0; } 3.程序.3( ) 程序运行后,请写出输出结果。 9 #include int a=6 , b=9; int max(int a,int b) { int c; c=a>b?a:b; return(c); } int main() { int a=2; printf(\"%d\\n\return 0; } 4.程序4( ) 程序运行后,写出输出结果 5 #include int i=5,j=1; int f(int x) { static int k=0; x+=k; ++k; return x; } int main()

6

{ int i; i=f(2); i=f(3); printf(“%d”,i+j); return 0; } 试题四、程序设计题(第一题12分,第二题14分,第三题14分,共40分) 1.C语言头文件math.h中提供了求绝对值的函数fabs(x),其功能是: x x≥0 fabs(x)= -x x<0 请你自定义一个函数,实现求整数的绝对值的功能,并编写main()函数进行测试。 2.编写一个函数,输入任意年份,判断该年是否是闰年。判断闰年的条件是: 1)公元年数如能被4整除,而不能被100整除,则是闰年; 2)公元年数能被400整除也是闰年。 并编写main()函数进行测试。如:输入2000,输出:“2000年是闰年”。输入2001,输出“2001年不是闰年”。 3.编写程序计算下式的值: 1-1/(1*2)+1/(2*3)-1/(3*4)…….+(-1)n*1/(n*(n+1)) 要求最后一项的绝对值小于0.001时,停止计算。 7

1. #include 2分 int absolut(int x) 5分 { int y; if(x>=0) y=x; else y=-x; return y; } void main() 5分 { int a; scanf(\"%d\ 2分 printf(\"%d\\n\ 3分 } 2. #include 2分 int is_run(int year) 6分 { if((year%4==0&&year%100!=0)||year%400==0) 4分 return 1; else return 0; } void main() 6分 { int n; scanf(\"%d\ 2分 if(is_run(n)) printf(\"%d是闰年\\n\ 3分 else printf(\"%d不是闰年\\n\ 1分 } 3 #include 2分 #include 2分 void main() { int n=1; double s=0.0,d=1; 2分 while(fabs(d)>=0.001) 2分 { s+=d; 1分 d=pow(-1,n)/n/(n+1); 2分 n++; 1分 } printf(\"s=%lf\\n\ 2分 }

8

因篇幅问题不能全部显示,请点此查看更多更全内容