admin 管理员组

文章数量: 887032


2024年2月21日发(作者:手表详情页模板)

。语言中,引用数组元素时,其数组下标的数据类型允许是 C 【1】在C型表达式 B)整型常量 A

)任何类型的表达式C)整型常量或整型表达式 D

。的正确说明是 D 【2】以下对一维整型数组a D)#define SIZE 10 C)int n;

”,&n); int a[SIZE]; scanf(“%d int a[n];

D 。】若有说明:int a[10];则对a数组元素的正确引用是 【3a[] )a(5) D A)a[10]

。】以下能对一维数组a进行正确初始化的语句是 C 【4int a[10]=(0,0,0,0,0); B

int a[10]={10*1}; D) C)int a[]={0};

。 B a【5】以下对二维数组的正确说明是a[3][];

D)float a(3)(4); C)float a(3,4);

D 。】若有说明:int a[3][4];则对a数组元素的正确引用是 【6a[1,3] C)a(2)(1) Da[2][4] A)B)

。 C 进行正确初始化的语句是【7】以下不能对二维数组aB)};6}}; C)D) int a[][3]={1,2,3,4,5,6};

【8】 指出下面各说明语句中哪些是合法的:(多选)

A. int abcd[0x80]; B. char 9ab[10];

C. char chi[-200]; D. int aaa[5]={3,4,5};

E. float key[]={,,1,0}; F. char disk[];

G. int n,floppy[n]; H. int cash[4]={1,2,3,4,5,6};

答案: ADE

【9】下面程序中有错误的行是 D (每行程序前面的数字表示行号)。

1 main()

2 {

float a[3]={1};3

4 int i;

5 scanf(“%d”,&a);

6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

7 printf(“a[0]=%dn”,a[0]);

8 }

int a[2][3]={0};

A)int n=10,a[n];A )int a(10);

B)

)整

)a[10-10]CB)

)int a[10]={};A)

B)double a[1][4]; A)int

a[1+1][0])

A)3 B)6 C)7 D)5

【10】 请回答下列问题。

(1)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,请写出正确的说明语句。 ___

(2)该数组下标的取值范围是从___到___(从小到大)。

(3)如何用scanf函数输入数组的第二个元素。 ___

(4)如何用赋值语句把39存入第一个元素。 ___

(5)如何表示把第六个和第四个元素之和存入第一个元素。 ___

答案: int array[10] = {9,4,7,49,32,-5};

0 9

scanf(%d,&array[1]);

array[0] = 39;

array[0] = array[5] + array[3];

【11】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 A 。(假)

设a[0][0]位于数组的第一个位置上。 A)i*m+j+1 B)j*m+i C)i*m+j-1 D)i*m+j

【12】若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 B 。

A)2 B)3 C)4 D)无确定值

【13】定义如下变量和数组:

int k;

int a[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是 A 。

for(k=0;k<3;k++) printf(%d,a[k][2-k]);

A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7

【14】若有以下程序段:

… …

int a[]={4,0,2,3,1}; i,j,t;

for(i=1;i<5;i++)

{

t=a[i]; j=i-1;

while(j>=0&&t>a[j])

{ a[j+1]=a[j]; j--; }

a[j+1]=t;

}

… …

则该程序段的功能是 B 。

A) 对数组a进行插入排序(升序)

B) 对数组a进行插入排序(降序)

C) 对数组a进行选择排序(升序)

D) 对数组a进行选择排序(降序)

【题15】当运行以下程序时,从键盘输入:AhaMA Aha(表示回车),则下面程序的运行结果是 D 。

#include <>

main()

{

char s[80],c=‘a';

int i=0;

scanf(“%s”,s);

while(s[i]!=‘0')

{

if(s[i]==c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32;

i++;

}

puts(s);

}

A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA

【题16】设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。

main()

{

int a[10],b[10],i;

for(i=0;i<10;i++)

scanf(“%d”,&a[i]);

for(【1】;i<10;i++)

【2】

for(i=1;i<10;i++)

{

printf(“=”,b[i]);

if(【3】==0) printf(“n”);

}

}

【1】i=1 【2】b[i]=a[i]+a[i-1] 【3】(i%3)

进制。请填空。n】下面程序将十进制整数转换成17【题.

main()

{

int i,base,n,j,num[20];

printf(“Enter data that will be convertedn”);

scanf(“%d”,&n);

printf(“Enter basen”);

scanf(“%d”,&base);

do{

i++;

num[i]=n【1】base;

n=n【2】base;

}while(n!=0);

printf(“The data %d has been converted into the %d--base

data:n”,n,base);

for(【3】)

printf(“%d”,num[j]);

}

【1】% 【2】/ 【3】j=i; j>=1; j--

【题18】下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。请填空。

例如:array a: array b:

4 5 6 6 4 5

1 2 3 3 1 2

main()

{

int a[2][3]={4,5,6,1,2,3},b[2][3];

int i,j;

printf(“array a:n”);

for(i=0;i<=1;i++)

{

for(j=0;j<3;j++)

{

printf(“]”,a[i][j]);

【1】;

}

printf(“n”);

}

for(【2】;i++) b[i][0]=a[i][2];

printf(“array b:n”);

for(i=0;i<2;i++)

{

for(j=0;j<3;j++)

printf(“]”,b[i][j]);

【3】;

}

}

【1】b[i][j+1]=a[i][j] 【2】i=0;i<2 【3】printf(“n”)

编程答案:

[1]

#define M 50

main()

{

int a[M], c[5], i, n = 0, x;

printf(“Enter 0 or 1 or 2 or 3 or 4, to end with –1n”);

scanf(“%d”, &x);

while (x != -1)

{

if (x >= 0 && x <= 4)

{

a[n] = x;

n++;

}

scanf(“%d”, &x);

}

for (i=0; i<5; i++)

c[i] = 0;

for (i=0; i

c[a[i]]++;

printf(“The result is:n”);

for (i=0; i<=4; i++)

printf(“%d:%dn”,i c[i]);

printf(“n”);

}

[2] main()

{

int a [5][5], i, j, n = 1;

for (i=0; i<5; i++)

for (j=0; j<5; j++)

a[i][j] = n++;

printf(“The result is:n”);

for (i=0; i<5; i++)

{

for (j=0; j<=i; j++)

printf(“M”, a[i][j]);

printf(“n”);

}

}

[3] #include <>

#include <>

main()

{

char a[80], b[] = “ab”, max;

int i = 1, j;

printf(“Input a stringn”);

gets(a);

puts(a);

max = a[0];

while (a[i] != ‘0')

{

if (a[i] > max)

{

max = a[i];

j = i;

}

i++;

}

for (i=strlen(a)+2; i>j; i--)

a[i] = a[i-2];

a[i+1] = ‘a';

a[i+2] = ‘b';

puts(a);

}

第八章 函数补充作

【题1】以下正确的说法是 B 。

建立函数的目的之一是 A)提高程序的执行效率

B)提高程序的可读性

C)减少程序的篇幅

D)减少程序文件所占内存

【题2】以下正确的说法是 B 。

A) 用户若需调用标准库函数,调用前必须重新定义

B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C) 系统根本不允许用户重新定义标准库函数

D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

【题3】若调用一个函数,且此函数中没有return语句,则正确的说法是 D 。

该函数 A)没有返回值

B)返回若干个系统默认值

C)能返回一个用户所希望的函数值

D)返回一个不确定的值

【题4】以下不正确的说法是 D 。

C语言规定 A)实参可以是常量、变量或表达式

B)形参可以是常量、变量或表达式

C)实参可以为任意类型

D)形参应与其对应的实参类型一致

【题5】以下正确的说法是 C 。

A) 定义函数时,形参的类型说明可以放在函数体内

B) return后边的值不能为表达式

C) 如果函数值的类型与返回值类型不一致,以函数值类型为准

D) 如果形参与实参的类型不一致,以实参类型为准

【题6】以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。

sub(int k,int n)

{

int a1,a2;

a2=【1】; (为:C)

a1=k-【2】; (为:A)

if((k%3==0&&a2==5)||(k%3==0&&a1==5))

{

printf(“%d”,k);

n++;

return n;

}

else return -1;

}

main()

{

int n=0,k,m;

for(k=10;k<=99;k++)

{

m=sub(k,n);

if(m!=-1) n=m;

}

printf(“nn=%d”,n);

}

【1】 A)k*10 B)k_x0010_ C)k/10 D)k*10_x0010_

【2】 A)a2*10 B)a2 C)a2/10 D)a2_x0010_

【题7】折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。请选择填空。

binary(int a[10],int m)

{

int low=0,high=9,mid;

while(low<=high)

{

mid=(low+high)/2;

if(m

else if(m>a[mid]) 【2】; (为:B)

else return(mid);

}

return(-1);

}

【1】 A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1

【2】 A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1

【题8】以下程序的正确运行结果是 D 。

#define MAX 10

int a[MAX],i;

main()

{

printf(“n”); sub1(); sub3(a); sub2(); sub3(a);

}

sub2()

{

int a[MAX],i,max;

max=5;

for(i=0;i

}

sub1()

{

for(i=0;i

}

sub3(int a[])

{

int i;

for(i=0;i

printf(“n”);

}

A) 0 2 4 6 8 10 12 14 16 18

0 1 2 3 4

B) 0 1 2 3 4

0 2 4 6 8 10 12 14 16 18

C) 0 1 2 3 4 5 6 7 8 9

0 1 2 3 4

D) 0 2 4 6 8 10 12 14 16 18

0 2 4 6 8 10 12 14 16 18

【题9】以下程序的功能是用递归方法计算五位学生的年龄,请填空。

递归公式如下:

10(n?1)?age(n)?

?age(n?1)?2(n?1)? #include <>

age(int n)

{

int c;

if(n==1) c=10;

else c=【1】;

return(c);

}

main()

{

int n=5;

printf(“age:%dn”,【2】);

}

【1】age(n-1)+2 【2】age(5)

【题10】以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,

直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值-1。请填空。

#include <>

int search(int a[10],int m)

{

int i;

for(i=0;i<=9;i++) if(【 1】) return(i);

return(-1);

}

main()

{

int a[10],m,i,no; …

);【2】 no=search( nOK FOUND!%d”,no+1);】) printf(“ if(【3 else printf(“nSorry

Not Found!”); } 3 【】no>=0a,m 1 【】a[i]==m 【2】

。 【题11】以下程序的运行结果是

#include <> int k=1;

main() { int i=4;

fun(i);

n”,i,k);printf(“(1) %d,%d }

fun(int m)

{

m+=k; k+=m;

{ char k=‘B';

-‘A');n”,kprintf(“(2) %d } n”,m,k);printf(“(3) %d,%d

} (2)1 (3)5,6 (1)4,6

】以下程序的运行结果是12【题 。 int n=1;

main()

{

static int x=5; int y;

y=n;

printf(“MAIN:x=- y=- n=-n”,x,y,n);

func();

printf(“MAIN:x=- y=- n=-n”,x,y,n);

func();

}

func()

{

static int x=4; int y=10;

x=x+2;

n=n+10;

y=y+n;

printf(“FUNC:x=- y=- n=-n”,x,y,n);

}

MAIN:x=5 y=1 n=1

FANC:x=6 y=21 n=11

MAIN:x=5 y=1 n=11

FANC:x=8 y=31 n=21

【题13】以下程序的功能是 输出1至5的阶乘 。

int fac(int n)

{

static int f=1;

f=f*n;

return(f);

}

main()

{

int i;

for(i=1;i<=5;i++)

printf(“%d!=%dn”,i,fac(i));

}

【题14】以下程序的输出结果是a=_36__,b=_16__,c=_19__。/*指针*/

#include <>

int func(int a,int *p);

void main()

{ int a=1,b=2,c;

c=func(a,&b);

b=func(c,&a);

a=func(b,&c);

printf(a=%d,b=%d,c=%d,a,b,c);

}

int func(int a,int *p)

{ a++;

*p=a+2;

return(*p+a);

}

编程答案:

[1] float f2(int n)

{

if (n == 1)

return 1;

else

return (f2(n-1) * n);

}

float f1(int x, int n)

{

int i;

float j = 1;

for (i=1; i<=n; i++)

j = j * x;

return j;

}

[2] max(int arr[][4])

{

int i, j, max;

max = arr[0][0];

for (i=0; i<2; i++)

for (j=0; j<4; j++)

if (arr[i][j] > max)

max = arr[i][j];

return(max);

}


本文标签: 数组 元素 程序 函数 查找