dddd

9 篇文章 0 订阅
 

试卷编号: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);

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值