程序设计模拟题3
一 单项选择题
1. 选出C语言的合法变量名__B___
A $123 B _auto_ C register D 2_and 2. int j; float y; char name[50]
当执行以下C语句时
scanf( \ 输入以下字符: 55566 777% 则y 的值是_ A_
A 55566.0 B 777.0 C 566.0 D 566777.0 3. 下列关于switch语句和break语句的说法中,正确的是__B__。 A break语句是switch语句中的一部分
B 在switch语句中可以根据需要使用或不使用break语句 C 在switch语句中必须使用break语句 D 以上三个结论中有两个是正确的 4. 以下的for循环_B__ for(x=0,y=0;(y!=123)&&(x<4);x++);
A 执行三次 B 执行四次 C 循环次数不定 D 是无限循环 5. 关于下面的程序片段: #define A 3
#define B(a) ((A+1)*a) int X;
X=3*(A+B(7));
正确的判断是_B__
A 程序错误,不允许嵌套宏定义 B X值为93 C X值为21 D 程序错误,宏定义不允许有参数 6. 选出正确的赋值语句______(设char b[5],*p=b;)
A b= \ B *a= \ C p= \ D *p= \7. 以下对二维数组a的正确说明是_____ A int a[ ][3]={ 0 }; B int a[3][ ]={ {1},{2},{3} }; C int a[1][3]={ 1,2,3,4 }; D int a[2][3]={ {1,2},{3,4},{5,6} }; 8. 合法的实型常量是______ A 123e B 3e-0.5 C .e3 D -2.0e-2
9. C语言程序的三种基本结构是______
A 递归结构,循环结构,转移结构 B 顺序结构,选择结构,循环结构 C 嵌套结构,递归结构,顺序结构 D 循环结构,转移结构,顺序结构 };s; 二 填空题
1.若整型变量a=5,b=4,c=3,则表达式a>b||b>c的值为 。 2.已知a=3,b=5,c=7;则b>c?b:a的值为_______。 3.表达式7&3的结果为_______。
4. 构成数组的各个元素必须具有相同的_______ 。 5. 若整型变量a=5,则表达式a<<2的值为 。
第 1 页
6.将一维数组a的第j个元素的地址赋给指针变量p的语句是______。 7.定义int i=1;执行while(i++<5)后i的值为______。
8.设a=7,b=6,c=5;写出表达式(a+b)>(c*c)&&b的值是______。
三 程序填空题
1.输出由'*'组成的倒三角图案,图案的行数n从键盘输入。
如果行数n为6,则图案如图所示: ****** ***** **** *** ** * #include
{
int i, j, n;
printf(\ scanf(\(1)___);
for( i=0; i___(2)___n; i++ ) {
for( j=___(3)___; j putchar( '*' ); putchar( '\\n' ); } } 2.数组a中存放N个由小到大排列的有序整数。从键盘输入一整数x,使用二分法在数组中查找是否 有此整数。二分查找法的思路是:将待查数据与全部数组元素中位于中间下标位置的元素相比较,如果待查数据大于中间元素,则缩小查找范围,在中点之后的数组元素中继续查找;否则在在中点之前继续查找。 #include scanf( \ lo=___(1)___; hi=N-1; while(lo<=hi) { mid=(lo+hi)/2; if( x==a[mid] ) ___(2)___; else if( x>a[mid] ) lo=mid+1; else hi=__(3)__; } if(lo<=hi) printf(\ 第 2 页 else printf(\ } 四 改错题 (下面每小题有三行程序存在错误,要求不改变程序的功能,指出出错语句,并写出完整的正确语句) 1.本程序计算N×N二维整型数组中元素值为负数的元素个数占全部元素个数的百分比(输出时保留一位小数)。 行号 程序 01 #include 03 float fun( int arr[][N] ); 04 main( ) 05 { 06 static int aa[][]={ 07 { 1, 2, 3, 4 }, { 4, 5, 6, 7 }, 08 { 10,11,12,13 }, {20,21,22,23 } }; 09 float p; 10 p=fun(aa); 11 printf(\ 12 } 13 void fun( int arr[][N] ) 14 { 15 int i, j; 16 int s=0; 17 for( i=0; i 18 for( j=1; j 21 return (float)s/(N*N); 22 } 可能出错的程序语句的行号为:03、06、10、11、13、16、18、19、21,错误依次为: 行号___06___应改为________ static int aa[][N]={___________。 行号___13 ___应改为________ float fun(int arr[ ][N])______。 行号___18___应改为__________ for(j=0;j 01 #include 04 char s[81]; 05 char *p1, p2; 第 3 页 06 printf(\ 07 scanf(“%s”,s); 08 p1=p2=s; 09 while( p1!= ’\\0’ ) 10 { 11 if(*p1!=’ ’) 12 { 13 *p2=*p1; 14 p2++; 15 } 16 p1++; 17 } 18 *p2 = ’\\0’; 19 printf(\ 20 } 可能出错的程序语句的行号为:05、07、08、09、11、13、16,错误依次为: 行号__05____应改为________ char *p1,*p2;________ 。 行号___07___应改为____________ gets(s);_________。 行号___09___应改为______while(* p1!= ’\\0’ );_____。 五 阅读理解 1. 下面程序的输出结果为:___0_______。 main() { static int x[]={5,9,2,8,6,7}; int s, *p; s=0; for(p=x; p s+=1/(*p); printf(“%d”,s); } 2. 下面程序的输出结果为:_____10______ #include { int x=10; fun(x); printf(“%d”,x); } fun(int x) { x=15; return; } 第 4 页

