试卷编号:9405
所属语言:C语言
试卷方案:C语言练习
试卷总分:115分
共有题型:3种
一、单项选择 共100题 (共计100分)
第1题 (1.0分)
有以下程序
main()
{ 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("%d\n",k);
}
执行后输出的结果是
A:58
B:56
C:45
D:24
答案:D
第2题 (1.0分)
以下正确的描述是:在C语言程序中()。
A:函数的定义可以嵌套,但函数的调用不可以嵌套
B:函数的定义不可以嵌套,但函数的调用可以嵌套
C:函数的定义和函数的调用均不可以嵌套
D:函数的定义和函数的调用均可以嵌套
答案:B
第3题 (1.0分)
有如下程序
main( )
{ int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是
A:a=2,b=1
B:a=1,b=1
C:a=1,b=0
D:a=2,b=2
答案:A
第4题 (1.0分)
下述标识符中,()是合法的用户标识符.
A:A#C
B:getch
C:void
D:ab*
答案:B
第5题 (1.0分)
若有以下程序:
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
答案:C
第6题 (1.0分)
有以下程序
main()
{ char a='a',b;
print("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是
A:b,b
B:b,c
C:a,b
D:a,c
答案:A
第7题 (1.0分)
以下不正确的叙述是()。
A:在C程序中所用的变量必须先定义后使用
B:程序中,APH和aph是两个不同的变量
C:若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变
D:当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值
答案:D
第8题 (1.0分)
在下列选项中,不正确的赋值语句是( )
A:++t;
B:n1=(n2=(n3=0));
C:k=i==j;
D:a=b+c=1;
答案:D
第9题 (1.0分)
若有int x=4,y=5;, 则执行完表达式x*=y-1后,x值为( ).
A:16
B:0
C:1
D:19
答案:A
第10题 (1.0分)
下列选项中,合法的C语言关键字是()。
A:VAR
B:cher
C:integer
D:default
答案:D
第11题 (1.0分)
下列数组说明中,正确的是()。
A:int array[][4];
B:int array[][];
C:int array[][][5];
D:int array[3][];
答案:A
第12题 (1.0分)
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
A:a的值是字符C
B:a的值是浮点型
C:不允许字符型和浮点型相加
D:a的值是字符'A'的ASCII值加上1.
答案:D
第13题 (1.0分)
用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。
long a=0xffffff;
int b; char c;
A:0ffffff 和0x61
B:-1和98
C:-1和97
D:指向同一地址
答案:C
第14题 (1.0分)
设以下变量均为int类型,则值不等于7的表达式是()。
A:(x=y=6,x+y,x+1)
B:(x=y=6,x+y,y+1)
C:(x=6,x+1,y=6,x+y)
D:(y=6,y+1,x=y,x+1)
答案:C
第15题 (1.0分)
若k是int型变量,且有下面的程序片段:
int k = -2; if (k<=0) printf("####"); else printf("&&&&");
上面程序片段的输出结果是( )
A:####
B:&&&&
C:####&&&&
D:有语法错误,无输出结果
答案:A
第16题 (1.0分)
int a=3,b=2,c=1;
if(a>b>c)a=b;
else a=c;
则a的值为()。
A:3
B:2
C:1
D:0
答案:C
第17题 (1.0分)
t为int类型,进人下面的循环之前,t的值为0
while( t=l )
{ ……}
则以下叙述中正确的是
A:循环控制表达式的值为0
B:循环控制表达式的值为1
C:循环控制表达式不合法
D:以上说法都不对
答案:B
第18题 (1.0分)
以下叙述不正确的是()。
A:一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面
答案:D
第19题 (1.0分)
已定义ch为字符型变量,以下赋值语句中错误的是()。
A:ch='\';
B:ch=62+3;
C:ch=NULL;
D:ch='\xaa';
答案:A
第20题 (1.0分)
以下程序的输出结果是
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A:258
B:741
C:852
D:369
答案:C
第21题 (1.0分)
在C语言中,执行语句:for (j=1; j<=4; ++j);后,变量j的值是( )
A:3
B:4
C:5
D:不定
答案:C
第22题 (1.0分)
有如下程序
main( )
{ int n=9;
while(n>6) {n--;printf("%d",n);}
}
该程序段的输出结果是
A:987
B:876
C:8765
D:9876
答案:B
第23题 (1.0分)
以下不正确的说法是:C语言规定()。
A:实参可以是常量,变量或表达式
B:形参可以是常量,变量或表达式
C:实参可以为任何类型
D:形参应与其对应的实参类型一致
答案:B
第24题 (1.0分)
下列条件语句中,功能与其他语句不同的是
A:if(a) printf("%d\n",x); else printf("%d\n",y)
B:if(a==0) printf("%d\n",y); else printf("%d\n",x)
C:if (a!=0) printf("%d\n",x); else printf("%d\n",y)
D:if(a==0) printf("%d\n",x); else printf("%d\n",y)
答案:D
第25题 (1.0分)
若变量c为char类型,能正确判断出c为小写字母的表达式是
A:a'<=c<= 'z'
B:(c>= 'a')||(c<= 'z')
C:('a'<=c)and ('z'>=c)
D:(c>= 'a')&&(c<= 'z')
答案:D
第26题 (1.0分)
下列程序段的输出结果为()。
int x=3,y=2;
printf("%d",(x-=y,x*=y+8/5));
A:1
B:7
C:3
D:5
答案:C
第27题 (1.0分)
表达式:10!=9的值是( )
A:true
B:非零值
C:0
D:1
答案:D
第28题 (1.0分)
When a=1,b=2,c=3时, after execution of the following program segment,the value of x is()。
k1=1;
k2=2;
k3=3;
x=15;
if(!k1) x--;
else if(k2) x=4;
else x=3;
A:14
B:4
C:15
D:3
答案:B
第29题 (1.0分)
执行以下程序段后,输出结果和a的值是()。
int a=10;
printf("%d",a++);
A:10 和 10
B:10 和 11
C:11 和 10
D:11 和 11
答案:B
第30题 (1.0分)
在C语言的函数中,下列正确的说法是()。
A:必须有形参
B:形参必须是变量名
C:可以有也可以没有形参
D:数组名不能作形参
答案:C
第31题 (1.0分)
若有说明语句:char c='\72';则变量c()。
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:说明不合法,c的值不确定
答案:A
第32题 (1.0分)
已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。
A:0
B:语法错
C:1
D:"假"
答案:C
第33题 (1.0分)
执行下面程序片段的结果是( )
int x=23;
do
{ printf("%2d",x--);}
while(!x);
A:打印出321
B:打印出23
C:不打印任何内容
D:陷入死循环
答案:B
第34题 (1.0分)
下列数组说明中,正确的是()。
A:static char str[]="China";
B:static char str[]; str="China";
C:static char str1[5],str2[]={"China"}; str1=str2;
D:static char str1[],str2[];str2={"China"}; strcpy(str1,str2);
答案:A
第35题 (1.0分)
以下对C语言函数的描述中,正确的是()。
A:C程序必须由一个或一个以上的函数组成
B:C函数既可以嵌套定义又可以递归调用
C:函数必须有返回值,否则不能使用函数
D:C程序中有调用关系的所有函数必须放在同一个程序文件中
答案:A
第36题 (1.0分)
若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()。
A:1
B:2
C:2.0
D:2.5
答案:C
第37题 (1.0分)
下面程序段执行后的输出结果为( ).
int a,b;
a=7;
b=a++;
printf("a=%d,b=%d",a,b);
A:7 7
B:8 7
C:a=7,b=8
D:a=8,b=7
答案:D
第38题 (1.0分)
以下关于运算符优先顺序的描述中正确的是()。
A:关系运算符<算术运算符<赋值运算符<逻辑运算符
B:逻辑运算符<关系运算符<算术运算符<赋值运算符
C:赋值运算符<逻辑运算符<关系运算符<算术运算符
D:算术运算符<关系运算符<赋值运算符<逻辑运算符
答案:C
第39题 (1.0分)
以下运算符中,优先级最高的运算符是()。
A:||
B:%
C:!
D:==
答案:C
第40题 (1.0分)
一个C语言程序是由()。
A:一个主程序和若干子程序组成
B:函数组成
C:若干过程组成
D:若干子程序组成
答案:B
第41题 (1.0分)
有以下程序
main()
{
int a,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A:6,1
B:2,1
C:6,0
D:2,0
答案:
第42题 (1.0分)
以下不符合C语言语法的赋值语句是()。
A:a=1,b=2
B:++j;
C:a=b=5;
D:y=(a=3,6*5);
答案:A
第43题 (1.0分)
下列运算符中优先级最高的是()。
A:<
B:+
C:&&
D:!=
答案:B
第44题 (1.0分)
表达式18/4*sqrt(4.0)/8值的数据类型为()。
A:int
B:float
C:double
D:不确定
答案:C
第45题 (1.0分)
The result of the following program is()。
main()
{ int n;
for(n=1;n<=10;n++)
{
if(n%3==0) continue;
printf("%d",n);
}
}
A:12457810
B:369
C:12
D:1234567890
答案:A
第46题 (1.0分)
在C语言中,有以下定义:char b[10]={'h','n','s','p','k','s'};,则语句printf("%c\n",b[1]);的结果为( )
A:h
B:n
C:s
D:p
答案:B
第47题 (1.0分)
以下程序的输出结果是
main()
{ char c='z';
printf("%c",c-25);
}
A:a
B:Z
C:z-25
D:y
答案:A
第48题 (1.0分)
以下所列的C语言常量中,错误的是
A:0xFF
B:1.2e0.5
C:2L
D:\72'
答案:B
第49题 (1.0分)
在C语言中,____是不合法的变量说明.
A:int a1,a2=061
B:char C[]={'A','B'}
C:long a,b
D:int m=n=20
答案:D
第50题 (1.0分)
Which one is a right assignment statement()。
A:a=1,b=2
B:j+1
C:a=b=5;
D:y=int(x)
答案:C
第51题 (1.0分)
设变量说明为
int a=2,b=3,c=7,d=10;
则表达式 d=a==b?++b:++C 的值是____.
A:10
B:4
C:8
D:6
答案:C
第52题 (1.0分)
有以下语句:int b;char c[10];,则正确的输入语句是
A:scanf("%d%s",&b,&c)
B:scanf("%d%s",&b,c
C:scanf("%d%s",b,c)
D:scanf("%d%s",b,&c)
答案:B
第53题 (1.0分)
在C语言中,执行语句:for (i=1; i<4; i++);后,变量i的值是( )
A:3
B:4
C:5
D:不定
答案:B
第54题 (1.0分)
int a[10];
给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A:for(i=1;i<11;i++)a[i]=i;
B:for(i=1;i<11;i++)a[i-1]=i;
C:for(i=1;i<11;i++)a[i+1]=i;
D:for(i=1;i<11;i++)a[0]=1;
答案:B
第55题 (1.0分)
设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,
则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A:0
B:1
C:2
D:3
答案:C
第56题 (1.0分)
如果int a=2,b=3,c=0,下列描述正确的是
A:a>b!=c和a>(b!=c)的执行顺序是一样的
B:!a!=(b!=c)表达式的值为1
C:a||(b=c)执行后b的值为0
D:a&&b>c的结果为假
答案:B
第57题 (1.0分)
若有以下定义:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是( )
A:a[g-c]
B:a[4]
C:a['d'-'c']
D:a['d'-c]
答案:D
第58题 (1.0分)
有如下程序
main( )
{ int n=9;
while(n>6) {n--;printf("%d",n);}
}
该程序段的输出结果是
A:987
B:876
C:8765
D:9876
答案:B
第59题 (1.0分)
有以下程序
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,1
答案:C
第60题 (1.0分)
有以下程序
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是
A:1 2 3
B:2 3 4
C:2 2 3
D:2 3 3
答案:D
第61题 (1.0分)
求平方根函数的函数名为()。
A:cos
B:abs
C:pow
D:sqrt
答案:D
第62题 (1.0分)
下面程序段执行后的输出结果为( ).
int a,b;
a=10;
b=a++;
printf("a=%d,b=%d",a,b);
A:a=10,b=11
B:a=11,b=10
C:10 10
D:11 10
答案:B
第63题 (1.0分)
以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);()。
A:是无限循环
B:循环次数不定
C:4次
D:3次
答案:C
第64题 (1.0分)
执行下列语句后,a和b的值分别为()。
int a,b;
a=1+'a';
b=2+7%-4-'A';
A:-63,-64
B:98,-60
C:1,-60
D:79,78
答案:B
第65题 (1.0分)
在C语言中,下列不正确的转义字符是( )
A:'\\'
B:'\t'
C:'074'
D:'\0'
答案:C
第66题 (1.0分)
在C语言中,合法的字符常量是( )
A:'\084'
B:'\x43'
C:'ab'
D:"\0"
答案:B
第67题 (1.0分)
下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是()。
A:8
B:23
C:17
D:6
答案:B
第68题 (1.0分)
有以下程序 A
main()
{
int m=12,n=34;
printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是
A:12353514
B:12353513
C:12343514
D:12343513
答案:A
第69题 (1.0分)
有如下程序
main( )
{ int y=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);
}
运行该程序的输出结果是
A:3 4
B:4 2
C:4 3
D:3 3
答案:D
第70题 (1.0分)
C 语言中以下几种运算符的优先次序()的排列是正确的。
A:由高到低为:!,&&,||,算术运算符,赋值运算符
B:由高到低为:!,算术运算符,关系运算符,&&,||,赋值运算符
C:由高到低为:算术运算符,关系运算符,赋值运算符,!,&&,||
D:由高到低为:算术运算符,关系运算符,!,&&,||,赋值运算符
答案:B
第71题 (1.0分)
下列叙述中正确的是()。
A:C语言编译时不检查语法
B:C语言的子程序有过程和函数两种
C:C语言的函数可以嵌套定义
D:C语言所有函数都是外部函数
答案:D
第72题 (1.0分)
设k为整型变量,则下面while循环共执行( )次
k=2;
while(k!=0)printf("%d",k),
k--;
printf("\n");
A:无限多
B:0
C:1
D:2
答案:D
第73题 (1.0分)
以下标识符中,不能作为合法的C用户定义标识符的是()。
A:a3_b3
B:void
C:_123
D:IF
答案:B
第74题 (1.0分)
设 int x=1, y=1; 表达式(!x||y--)的值是
A:0
B:1
C:2
D:-1
答案:B
第75题 (1.0分)
若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达
式的值为“假”,则以下不能满足要求的表达式是()。
A:A%2==1
B:!(A%2==0)
C:!(A%2)
D:A%2
答案:C
第76题 (1.0分)
下列变量说明语句中,正确的是()。
A:char:a b c;
B:char a;b;c;
C:int x;z;
D:int x,z;
答案:D
第77题 (1.0分)
以下选项中,与k=n++完全等价的表达式是()。
A:k=n,n=n+1
B:n=n+1,k=n
C:k=++n
D:k+=n+1
答案:A
第78题 (1.0分)
下面四个选项中,均是不合法的用户标识符的选项是()。
A:A P_0 do
B:float la0 _A
C:b-a goto int
D:_123 temp int
答案:C
第79题 (1.0分)
有以下程序
main()
{ int s=0,a=1,n;
scanf("%d",&n);
do
{ s+=1; a=a-2; }
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是
A:-1
B:-3
C:-5
D:0
答案:B
第80题 (1.0分)
有以下程序
main()
{
int a,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A:6,1
B:2,1
C:6,0
D:2,0
答案:
第81题 (1.0分)
以下程序的输出结果是( )
main( )
{ int a=12,b=12;
printf("%d%d\n",--a,++b);
}
A:10 10
B:12 12
C:11 10
D:11 13
答案:D
第82题 (1.0分)
以下程序的输出结果是
main()
{ int i, k, a[10], p[3];
k=5;
for (i=0;i<10;i++) a[i ]=i;
for (i=0;i<3;i++) p[i ]=a[i *(i+1)];
for (i=0;i<3;i++) k+=p[i] *2;
printf("%d\n",k);
}
A:20
B:21
C:22
D:23
答案:B
第83题 (1.0分)
若x=0,y=1,则语句while(x==y){x++; break;}循环体执行次数
是().
A:3
B:2
C:1
D:0
答案:D
第84题 (1.0分)
设j和k都是int类型,则下面的for循环语句()。
for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);
A:最多执行10次
B:最多执行9次
C:是无限循环
D:循环体一次也不执行
答案:A
第85题 (1.0分)
下列程序执行后的输出结果是(小数点后只写一位)
main()
{ double d; float f; long l; int i;
i=f=1=d=20/3;
printf("%d %ld %f %f \n", i,l,f,d);
}
A:6 6 6.0 6.0
B:6 6 6.7 6.7
C:6 6 6.0 6.7
D:6 6 6.7 6.0
答案:A
第86题 (1.0分)
若有int x=4,y=5;, 则执行完表达式x*=y-1后,x值为( ).
A:16
B:0
C:1
D:19
答案:A
第87题 (1.0分)
在C语言中,当do-while语句中的条件为( )时,结束该循环.
A:0
B:1
C:true
D:非0
答案:A
第88题 (1.0分)
下列说法不正确的是()。
A:主函数main中定义的变量在整个文件或程序中有效
B:不同函数中,可以使用相同名字的变量
C:形式参数是局部变量
D:在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
答案:A
第89题 (1.0分)
C语言中要求对变量作强制定义的主要理由是()。
A:便于移植
B:便于写文件
C:便于编辑预处理程序的处理
D:便于确定类型和分配空间
答案:D
第90题 (1.0分)
t为int类型,进人下面的循环之前,t的值为0
while( t=1 )
{ ……}
则以下叙述中正确的是______。
A:循环控制表达式的值为0
B:循环控制表达式的值为1
C:循环控制表达式不合法
D:以上说法都不对
答案:B
第91题 (1.0分)
以下数值中,不正确的八进制数或十六进制数是()。
A:0x16
B:16
C:-16
D:0xaaaa
答案:C
第92题 (1.0分)
C语言中用于结构化程序设计的三种基本结构是()。
A:顺序结构、选择结构、循环结构
B:if、switch、break
C:for、while、do-while
D:if、for、continue
答案:A
第93题 (1.0分)
C语言中不可以嵌套的是()。
A:函数调用
B:函数定义
C:循环语句
D:选择语句
答案:B
第94题 (1.0分)
下列程序段的输出结果为()。
float x=213.82631;
printf("%3d",(int)x);
A:213.82
B:213.83
C:213
D:3.8
答案:C
第95题 (1.0分)
对 for(表达式1; ;表达式3) 可理解为()。
A:for(表达式1;0;表达式3)
B:for(表达式1;1;表达式3)
C:for(表达式1;表达式1;表达式3)
D:for(表达式1;表达式3;表达式3)
答案:B
第96题 (1.0分)
有如下程序
main( )
{ int i,sum;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是
A:6
B:3
C:死循环
D:0
答案:C
第97题 (1.0分)
The result of the following program is()。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D
第98题 (1.0分)
为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:
else子句总是与()配对。
A:缩排位置相同的if
B:其之前最近的if
C:其之后最近的if
D:同一行上的if
答案:B
第99题 (1.0分)
double x;scanf("%lf",&x);不可以赋值给x变量的常量是()。
A:123
B:100000
C:A'
D:"abc"
答案:D
第100题 (1.0分)
下面不正确的字符串常量是()。
A:'abc'
B:"12'12"
C:"0"
D:" "
答案:A
二、程序填空 共10题 (共计10分)
第1题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能: 统计子字符串substr在字符串str中出现的次数。
例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。
若字符串为"asasasa",子字符串为"asa",则应输出3
-------------------------------------------------------*/
#include <stdio.h>
fun (char *substr,char *str)
{
int i,j,k,num=0;
for(i=0; str[i]; i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
/***********SPACE***********/
if(substr[【?】]=='\0')
{
num++;
/***********SPACE***********/
【?】;
}
return num;
}
main()
{
char str[80],substr[80];
printf("input a string:") ;
gets(str);
printf("input a substring:") ;
gets(substr);
/***********SPACE***********/
printf("%d\n",【?】);
}
答案:
1). k + 1
2). break
3). fun(substr,str)
第2题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]|
的最小值是多少 ?
-------------------------------------------------------*/
#include <stdio.h>
#include <limits.h>
/***********SPACE***********/
#define min(x, y) (【?】)
int min_distance(int x[], int y[], int m, int n)
{
int minimum = INT_MAX;
int index_x = 0, index_y = 0;
while (index_x < m && index_y < n)
/***********SPACE***********/
if (【?】)
{
minimum = min(minimum, x[index_x]-y[index_y]);
index_y++;
}
else
{
minimum = min(minimum, y[index_y]-x[index_x]);
/***********SPACE***********/
【?】;
}
return minimum;
}
#include <stdio.h>
void main(void)
{
int x[] = { 1, 3, 7, 11, 18};
int m = sizeof(x)/sizeof(int);
int y[] = { 4, 5, 8, 13, 22};
int n = sizeof(y)/sizeof(int);
int i, min_distance(int [], int [], int, int);
printf("\nCompute Minimum Distance Between Two Sorted Arrays");
printf("\n==================================================");
printf("\n\nGiven Array #1 :");
for (i = 0; i < m; i++)
printf("%5d", x[i]);
printf("\n\nGiven Array #2 :");
for (i = 0; i < n; i++)
printf("%5d", y[i]);
printf("\n\nMinimum Distance = %d", min_distance(x, y, m, n));
}
答案:
1). x<y?x:y 或 y>x?x:y
2). x[index_x] >= y[index_y] 或 y[index_y]<=x[index_x]
3). index_x++ 或 index_x=index_x+1 或 ++index_x
第3题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:输入数组,最大的与第一个元素交换,最小的与最后一个
元素交换,输出数组。
-------------------------------------------------------*/
#include <stdio.h>
input(number)
int number[10];
{
int i;
/***********SPACE***********/
for(i=0;i<9;【?】)
scanf("%d,",&number[i]);
scanf("%d",&number[9]);
}
/***********SPACE***********/
max_min(【?】)
int array[10];
{
int *max,*min,k,l;
int *p,*arr_end;
/***********SPACE***********/
arr_end=【?】;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
/***********SPACE***********/
else if(【?】) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
}
output(array)
int array[10];
{
int *p;
for(p=array;p<array+9;p++)
printf("%d,",*p);
printf("%d\n",array[9]);
}
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
答案:
1). i++ 或 i=i+1 或 ++i
2). array
3). array+10 或 10+array
4). *p<*min 或 *min>*p
第4题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:数组名作为函数参数,求平均成绩。
-------------------------------------------------------*/
#include <stdio.h>
float aver(float a[ ]) /*定义求平均值函数,形参为一浮点型数组名*/
{
int i;
float av,s=a[0];
for(i=1;i<5;i++)
/***********SPACE***********/
s+=【?】[i];
av=s/5;
/***********SPACE***********/
return 【?】;
}
void main()
{
float sco[5],av;
int i;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++)
/***********SPACE***********/
scanf("%f",【?】);
/***********SPACE***********/
av=aver(【?】);
printf("average score is %5.2f\n",av);
}
答案:
1). a
2). av 或 (av)
3). &sco[i] 或 sco+i
4). sco
第5题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到
文件test.txt中,然后从该文件读出字符串并显示出来。
-------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
FILE *fp;
char t,str[100],str1[100]; int n,i,j;
if((fp=fopen("test.txt","w"))==NULL)
{
printf("can't open this file.\n");
exit(0);
}
printf("input a string:\n"); gets(str);
/***********SPACE***********/
【?】;
/***********SPACE***********/
for(i=0; 【?】 ;i++)
for(j=0;j<n-i-1;j++)
/***********SPACE***********/
if(【?】)
{
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
/***********SPACE***********/
【?】;
fclose(fp);
fp=fopen("test.txt","r");
fgets(str1,100,fp);
printf("%s\n",str1);
fclose(fp);
}
答案:
1). n=strlen(str) 或 for(n=0;str[n]!='\0';n++) 或 for(n=0;str[n];n++) 或 for(n=0;str[n]!=0;n++)
2). i<n 或 n>i 或 i<-1+n 或 i<n-1 或 n-1>i 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i
3). str[j]>str[ j + 1 ] 或 str[ j + 1 ]<str[j] 或 str[j+1]<str[j] 或 str[j+1]<=str[j]
4). fputs(str,fp) 或 fprintf(fp,"%s\n",str) 或 fprintf(fp,"%s",str)
第6题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用函数调用方式,实现字符串的复制。
-------------------------------------------------------*/
#include <stdio.h>
void string_copy(char *str_from, char *str_to)
{
int i=0;
/***********SPACE***********/
for(; (*(【?】)=*(str_from+i))!='\0'; i++) ;
}
main()
{
static char array_str1[20]="i am a teacher.";
char array_str2[20];
/***********SPACE***********/
【?】(array_str1, array_str2);
/***********SPACE***********/
【?】("array_str2=%s\n",array_str2);
}
答案:
1). str_to+i 或 i+str_to
2). string_copy
3). printf
第7题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:计算圆周率的近似值。
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int s,n;
/***********SPACE***********/
double 【?】,t;
t=1;pi=0;n=1;s=1;
/***********SPACE***********/
while(【?】>=2e-6)
{
pi+=t;n+=2;s=-s;t=s/n;
}
/***********SPACE***********/
pi*=【?】;
printf("pi=%.6f\n",pi);
}
答案:
1). pi
2). fabs(t)
3). 4
第8题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:一个40磅重的板碎成4块,每块正好是一个整数磅,且用这
4块当砝码能称出1~40磅的整数重量的物体。编程求这4块
的各自重量。
-------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,j,k,l,p,t1,t2,t3,t4;
for(i=1;i<38;i++)
/***********SPACE***********/
for(【?】;j<38-i;j++)
/***********SPACE***********/
for(k=j;k<【?】;k++)
{
l=40-i-j-k;
for(p=1;p<40;p++)
{
for(t1=-1;t1<2;t1++)
for(t2=-1;t2<2;t2++)
for(t3=-1;t3<2;t3++)
for(t4=-1;t4<2;t4++)
/***********SPACE***********/
if(【?】==p) goto next;
break;
/***********SPACE***********/
next:if(p==【?】)
{
printf("%d,%d,%d,%d\n",i,j,k,l);
exit(0);
}
}
}
printf("error.");
}
答案:
1). j=i
2). 39-i-j 或 39 -i -j
3). i*t1+j*t2+k*t3+l*t4 或 i * t1 + j * t2 + k * t3 + l * t4
4). 39
第9题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:输出结果为:
* * * * *
* * * * *
* * * * *
* * * * *
-------------------------------------------------------*/
#include <stdio.h>
main()
{
/***********SPACE***********/
static char 【?】={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i<5;i++)
{
printf("\n");
for(j=1;j<=3*i;j++)
/***********SPACE***********/
printf("%1c",【?】);
/***********SPACE***********/
for(k=0;k<【?】;k++)
printf("%3c",a[k]);
}
printf("\n");;
}
答案:
1). a[5] 或 a[]
2). space 或 ' '
3). 5 或 =4
第10题 (1.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作
为终止标记。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int x,i=0,j=0;
float s1=0,s2=0,av1,av2;
scanf("%d",&x);
/***********SPACE***********/
while(【?】)
{
if(x%2==0)
{
s1=s1+x;
i++;
}
/***********SPACE***********/
【?】
{
s2=s2+x;
j++;
}
/***********SPACE***********/
【?】;
}
if(i!=0)
av1=s1/i;
else
av1=0;
if(j!=0)
/***********SPACE***********/
【?】 ;
else
av2=0;
printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);
}
答案:
1). x != 0 或 x
2). else 或 else if(x%2==1) 或 else if(x%2!=0) 或 if(x%2)
3). scanf("%d",&x)
4). av2=s2/j
三、程序改错 共5题 (共计5分)
第1题 (1.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:将6个数按输入时顺序的逆序进行排列.
------------------------------------------------------*/
#include <stdio.h>
sort(char *p,int m)
{
int i;
char change,*p1,*p2;
for(i=0;i<m/2;i++)
{
/***********FOUND***********/
*p1=p+i; *p2=p+(m-1-i);
change=*p1;
*p1=*p2;
*p2=change;
}
}
main( )
{
int i;
/***********FOUND***********/
char p,num[6];
for(i=0;i<=5;i++)
/***********FOUND***********/
scanf("%d",num[i]);
p=&num[0];
/***********FOUND***********/
sort(*p,6);
for(i=0;i<=5;i++)
printf("%d",num[i]);
}
答案:
1). p1=p+i; p2=p+(m-1-i);
2). char *p,num[6];
3). scanf("%d",&num[i]);
4). sort(p,6);
第2题 (1.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:编写一个函数,该函数可以统计一个长度为3的字符串在另
一个字符串中出现的次数。
例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符
串为:asd,则应输出n=4。
------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
int fun(char *str,char *substr)
{
/**********FOUND**********/
unsigned int i,n=0
/**********FOUND**********/
for(i=0;i<=strlen(str);i++)
if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))
/**********FOUND**********/
++i;
return n;
}
main()
{
char str[81],substr[4];
int n;
printf("输入主字符串: ");
gets(str);
printf("输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
}
答案:
1). unsigned int i,n=0;
2). for(i=0;i<=strlen(str)-3;i++) 或 for(i=0;i<strlen(str)-2;i++)
3). n++; 或 n+=1; 或 n=n+1; 或 ++n;
第3题 (1.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:输入10个数,要求输出这10个数的平均值
------------------------------------------------------*/
#include <stdio.h>
double average(double array[10])
{
int i;
double aver,sum=array[0];
/***********FOUND***********/
for(i=0;i<10;i++)
sum=sum+array[i];
aver=sum/10.0;
return(aver);
}
main( )
{
/***********FOUND***********/
int score[10],aver ;
int i;
printf("input 10 scores:\n");
for(i=0;i<10;i++)
/***********FOUND***********/
scanf("%f", score);
printf("\n");
/***********FOUND***********/
aver=average(score[10]);
printf("average score is %5.2f",aver);
}
答案:
1). for(i=1;i<10;i++) 或 for(i=1;i<=9;i++)
2). float score[10],aver; 或 float aver,score[10]; 或 double score[10],aver; 或 double aver,score[10];
3). scanf("%f", &score[i]); 或 scanf("%f", score+i);
4). aver=average(score);
第4题 (1.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:将长整型数中每一位上为奇数的数依次取出,构成一个新
数放在t中。高位仍在高位,低位仍在低位。
例如:当s中的数为:87653142时,t中的数为: 7531。
------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
void fun (long s, long *t)
{
int d;
long sl=1;
/**********FOUND**********/
t = 0;
while ( s > 0)
{
d = s%10;
/**********FOUND**********/
if (d%2 == 0)
{
*t = d * sl + *t;
sl *= 10;
}
/**********FOUND**********/
s \= 10;
}
}
main()
{
long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
答案:
1). *t = 0;
2). if(d%2) 或 if(d%2!=0) 或 if((d%2)!=0)
3). s /= 10; 或 s=s/10;
第5题 (1.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序
打印出来。
------------------------------------------------------*/
#include<stdio.h>
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
/**********FOUND**********/
int next;
if(n<=1)
{
/**********FOUND**********/
next!=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
/**********FOUND**********/
palin(n);
putchar(next);
}
}
答案:
1). char next;
2). next=getchar();
3). palin(n-1);