数组 函数 文档

更新时间:2024-05-27 15:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数组 ·1·

数组

选择题

1. 以下关于数组的描述正确的是( )。

A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是( )。

A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf(\

int a[n];

3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A. 整型常量 B. 整型表达式

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

4. 以下对一维数组m进行正确初始化的是( )。

A. int m[10]=(0,0,0,0) ; B. int m[10]={ }; C. int m[ ]={0}; D. int m[10]={10*2}; 5. 若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是( )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1

6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中

所占字节数是( )。

A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: 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] 8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。 #include

main() {

int a[10],i=0;

while(i<10) scanf(\┇ }

数组 ·2·

A. a+(i++) B. &a[i+1] C. a+i D. &a[++i] 9. 执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10;

A. 不定值 B. 33 C. 30 D. 10 10. 以下程序的输出结果是( )

main() {

int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i; printf(\}

A. 258 B. 741 C. 852 D. 369 11. 以下程序运行后,输出结果是( )。

main() {

int n[5]={0,0,0},i,k=2;

for(i=0;i

A. 不确定的值 B. 2 C. 1 D. 0 12. 以下程序运行后,输出结果是( )。 main()

{

int y=18,i=0,j,a[8]; do

{ a[i]=y%2; i++; y=y/2;

} while(y>=1);

for(j=i-1;j>=0;j--) printf(\ printf(\

}

A. 10000 B. 10010 C. 00110 D. 10100 13. 以下程序运行后,输出结果是( )。

main() {

int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++)

if(a1[i]

for(k=0;k<4;k++) printf(\ }

A. 1234 B. 1324 C. 2413 D. 4321 14. 以下程序运行后,输出结果是( )。

main()

数组 ·3·

{

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(\}

A. 20 B. 21 C. 22 D. 23 15. 以下程序运行后输出结果是( )。 main( )

{

int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2;

for (i=0;i

for (j=0;j

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

printf(\

A. 2 B. 1 C. 0 D. 3 16. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。

找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。 main() {

int i,a[10],x,flag=0; for(i=0;i<10;i++) scanf(\scanf(\

for(i=0;i<10;i++) if _______ {flag=i+1; break;} printf(\}

A. x!=a[i] B. !(x-a[i]) C. x-a[i] D. !x-a[i] 17. 若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。

A. a(1,2) B. a[1,3] C. a[1>2][!1] D. a[2][0] 18. 若有定义:int b[3][4]={0};则下述正确的是( ) 。

A. 此定义语句不正确 B. 没有元素可得初值0 C. 数组b中各元素均为0

D. 数组b中各元素可得初值但值不一定为0 19. 若有以下数组定义,其中不正确的是( ) 。

A. int a[2][3];

B int b[][3]={0,1,2,3}; C. int c[100][100]={0};

D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

数组 ·4·

20. 若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。

A. t[2][4] B. t[5][0] C. t[0][0] D. t[0,0] 21. 在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。

A. 4 B. 1 C. 2 D. 5 22. 在定义int n[5][6]后第10个元素是( )。

A. n[2][5] B. n[2][4] C. n[1][3] D. n[1][4] 23. 若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为( )。

(假设c[0][0]位于数组的第一个位置)

A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+1 24. 若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是( )。

float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};

A. 0.0 B. 4.0 C. 5.0 D. 6.0 25. 以下程序运行后,输出结果是 ( )。

main() {

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

printf(\}

A. 0650 B. 1470 C. 5430 D. 输出值不定 26. 以下程序运行后,输出结果是( )。

main() {

int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1]; printf(“%d\\n”,s); }

A. 11 B. 19 C. 13 D. 20 27. 有以下程序

main( ) {

int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++)

for(j=0;j<=i;j++) s+=a[i][j]; printf(\}

该程序的输出结果是( )。

A. 18 B. 19 C. 20 D. 21 28. 若定义如下变量和数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。

for(i=0;i<3;i++) printf(\

A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 29. 下述对C语言字符数组的描述中错误的是( )。

数组 ·5·

A. 字符数组可以存放字符串

B. 字符数组中的字符串可以整体输入、输出

C. 可以在赋值语句中通过赋值运算符\对字符数组整体赋值 D. 不可以用关系运算符对字符数组中的字符串进行比较 30. 下述对C语言字符数组的描述中正确的是 ( )。

A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间

B. 一维数组的元素在引用时其下标大小没有限制 C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间

D. 一维数组的第一个元素是其下标为1的元素

31. 不能把字符串:Hello!赋给数组b的语句是( )。

A. char str[10]= {'H', 'e', 'l', 'l', 'o', '! '}; B. char str[10];str=\

C. char str[10];strcpy(str,\D. char str[10]=\32. 合法的数组定义是( )。

A. int a[]=\ B. int a[5]={0,1,2,3,4,5}; C. int s=\ D. char a[]={0,1,2,3,4,5}; 33. 下列语句中,不正确的是( )。

A. static char a[2]={1,2}; B. static char a[2]={ '1', '2'}; C. static char a[2]={ '1', '2', '3'}; D. static char a[2]={ '1'}; 34. 若给出以下定义:

char x[ ]=\

char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。

A. 数组x和数组y等价 B. 数组x和数组y的长度相同 C. 数组x的长度大于数组y的长度 D. 数组x的长度小于数组y的长度 35. 若有数组定义: char array [ ]=\则数组 array所占的空间为( )。

A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节 36. 若有定义和语句:

char s[10];s=\则结果是(以下└┘代表空格)( )。

A. 输出abcd B. 输出a C. 输出abcd└┘└┘└┘└┘ D. 编译不通过 37. 下面程序运行后,输出结果是( )。

main() {

char ch[7]={ \int i,s=0;

for(i=0;ch[i]>= '0'&&ch[i]<= '9';i+=2) s=10*s+ch[i]- '0'; printf(\}

A. 12ba56 B. 6521 C. 6 D. 62

数组 ·6·

38. 运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是( )。

A. 123,456,789 B. 1,456,789 C. 1,23,456,789 D. 1,23,456 main() {

char s[100]; int c, i;

scanf(\ printf(\ }

39. 运行下面的程序,如果从键盘上输入: ab<回车> c <回车> def<回车>

则输出结果为( )。

A. a B. a C. ab D. abcdef b b c c c d d d e f

#include #define N 6 main()

{

char c[N];

int i=0;

for( ;i

printf(\ }

40. 运行下面的程序,如果从键盘上输入:ABC时,输出的结果是( )。

#include main() {

char ss[10]=\strcat(ss, \

gets(ss);printf(\ }

A. ABC B. ABC9 C. 123456ABC D. ABC456789 41. 判断两个字符串是否相等,正确的表达方式是( )。

A. while(s1==s2) B. while(s1=s2)

C. while(strcmp(s1,s2)==0) D. while(strcmp(s1,s2)=0) 42. 以下程序的输出结果是( )。

main() {

数组 ·7·

char str[12]={ 's','t','r','i','n','g'}; printf(\ }

A. 6 B. 7 C. 11 D. 12 43. 若有以下程序片段:

char str[ ]=\printf(\

上面程序片段的输出结果是 ( )。

A. 3 B. 4 C. 6 D. 12 44. 若有以下程序段,输出结果是( )。

char s[ ]=\printf (\

A. 9 B. 12 C. 13 D. 14 45. 设有static char str[ ]=\

则执行printf(\后的输出结果为 ( )。

A. 5 B. 7 C. 12 D. 14 46. 以下程序运行后,输出结果是( )。

main() {

char cf[3][5]={\printf(\}

A. \B. \47. 以下程序运行后,输出的结果是( )。

#include #include main() {

char w[ ][10]={\ for (k=1;k<3;k++)

printf(\}

A. ABCD B. ABCD FGH EFG KL IJ M

C. EFG D. FGH JK KL O

48. 以下程序运行后,输出结果是( )。 main() {

char arr[2][4];

strcpy(arr,\

数组 ·8·

arr[0][3]='&';

printf(\ }

A. you&me B. you C. me D. err

填空题

1. C语言中,数组元素的下标下限为 ________。 2. C程序在执行过程中,不检查数组下标是否________。

3. 在定义时对数组的每一个元素赋值叫数组的________;C语言规定,只有________存储类

型和________存储类型的数组才可定义时赋值。 4. 下面程序的运行结果是________。

#define N 5 main() {

int a[N]={1,2,3,4,5},i,temp; for(i=0;i

{temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;} printf(\

for(i=0;i

5. 以下程序以每一行输出4个数据的形式输出a数组。

#include main() {

int a[20],i;

for(i=0;i<20;i++) scanf(\【1】); for(i=0;i<20;i++)

{if ( 【2】 ) 【3】 ; printf(\}

printf(\}

6. 以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个

数组中的数按由小到大的顺序归并到c数组中。 #include main() {

int a[10]={1,2,5,8,9,10}, an=5,b[10]={1,3,4,8,12,18},bn=5; int i,j,k,c[20],max=9999; a[an+1]=b[bn+1]=max; i=j=k=0;

while((a[i]!=max)||(b[j]!=max))

if(a[i]

数组 ·9·

else {c[k]= 【3】; k++; 【4】;}

for(i=0;i

}

7. 以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平

均分的学生成绩,用输入负数结束输入。请填空。 main( )

{

float x[1000], sum=0.0, ave, a; int n=0, i;

printf(\:\\n\;scanf(\,&a); while(a>=0.0&& n<1000)

{ sum+=【1】 ; x[n]= 【2】 ; n++; scanf(\,&a); }

ave=【3】 ;

printf(\:\\n\; printf(\,ave);

for (i=0;i

if ( 【4】 ) printf (\ }

8. 以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此

二进制数。注意:二进制数的最低位在数组的第一个元素中。 #include main() {

int b[16],x,k,r,i;

printf(\printf(\k=-1; do

{r=x% 【1】 ; b[++k]=r; x/= 【2】 ; }

while(x>=1);

for(i=k; 【3】 ;i--)

printf(\}

9. 输入10个整数,用选择法排序后按从小到大的次序输出。

#define N 10 main( ) {

int i,j,min,temp,a[N]; for(i=0;i

scanf(\【1】);

数组 ·10·

printf(\

for(i=0; 【2】; i++)

{min=i;

for(j=i;j

if(a[min]>a[j]) 【3】 ; temp=a[i]; a[i]=a[min]; a[min]=temp; }

for (i=0;i

printf(\

printf(\}

10. 当先后输入1,3,4,12,23时,屏幕上出现________;再输入12时,屏幕上出现________。

#include #define N 5 main() {

int i,j,number,top,bott,min,loca,a[N],flag; char c;

printf(\scanf(\while(i

{scanf(\for(i=0;i

{ scanf(\if ((numbera[N-1])) loca=-1; while((loca==0)&&(top<=bott)) {min=(bott+top)/2; if(number==a[min])

{loca=min;printf(\else if (number

if (loca==0||loca==-1) printf(\c=getchar();

if (c==’N’||c==’n’) flag=0; } }

11. 以下程序运行结果是 ________.

#include main() {

数组 ·11·

int a[3][3]={1,2,3,4,5,6,7,8,9},i,s1=0,s2=1; for(i=0;i<=2;i++) { s1=s1+ a[i][i];

s2=s2*a[i][i];};

printf(\ }

12. 以下程序完成功能是:计算两个3*4阶矩阵相加,并打印出结果。请填空。

#include main() {

int a[3][4]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}}; int b[3][4]={{-2,3,0,-1},{1,0,-2,3},{-2,0,1,-3}}; int i,j,c[3][4]; for(i=0;i<3;i++) for(j=0;j<4;j++) ________; for(i=0;i<3;i++) { for(j=0;j<4;j++)

printf(\printf(\} }

13. 以下程序的运行结果是________.

main() {

int i, j,a[3][3]; for(i=0;i<3;i++) {for(j=0;j<3;j++)

{if(i==3) a[i][j]=a[i-1][a[i-1][j]]+1; else a[i][j]=j; printf(\}

printf(\

} }

14. 阅读下列程序:

#include main() {

int i, j, row, column,m;

static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=array[0][0];

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

if (array[i][j]

{ m=array[i][j]; row=i; column=j;}

数组 ·12·

printf(\

}

上述程序的输出结果是 ________。

15. 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该

是________。 : .

char a[10],b;

scanf(\ : .

16. 以下程序段的输出结果是________。

main() {

char b[]=\ b[5]=0;

printf(\}

17. 若有以下程序段,若先后输入:

English? Good?

则其运行结果是________。 main() {

char c1[60],c2[3]; int i=0,j=0; scanf(\ scanf(\

while(c1[i]!= '\\0') i++;

while(c2[j]!= '\\0') c1[i++]=c2[j++]; c1[i]= '\\0';

printf(\}

18. 从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。

#include main() {

static char str[ ]={‘h’,’e’,’l’,’l’,’o’}; char str1[5];

【1】 ;

for(i=0;i<5;i++) 【2】 ; flag=0;

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

if 【3】 {flag=1; break;}

数组 ·13·

if(flag) printf(\else printf(\}

19. 以下程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。

请填空。

#include #include main()

{

char a[]=\ int i, j, k; k=strlen(a);

for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k; 【1】) if( 【2】 )

{ t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf(\ }

20. 输入5个字符串,将其中最小的打印出来。

main() {

char str[10],temp[10]; int i; 【1】;

for(i=0;i<4;i++) {gets(str);

if (strcmp(temp,str)>0) 【2】; }

printf(\}

21. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不

相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。

#include main( ) {

char str1[100],str2[100],c; int i,s;

printf(\ printf(\ i=0;

while((strl[i]==str2[i]&&(str1[i]!= 【1】)) i++; s= 【2】 ;

printf(\ }

数组 ·14·

22. 设有下列程序:

#include #include main() {

int i;

char str[10], temp[10]; gets(temp);

for (i=0; i<4; i++) { gets(str);

if (strcmp(temp,str)<0) strcpy(temp,str); }

printf(\}

上述程序运行后,如果从键盘上输入(在此代表回车符): C++ BASIC QuickC Ada Pascal

则程序的输出结果是 ________。

23. 以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标

志,请填空。

#include

#include main( ) {

int num[26],i; char c;

for(i=0; i<26; i++) num[i]=0;

while( 【1】 != '#') /*统计从终端输入的大写字母个数*/ if( isupper(c)) num[c-65]+=1;

for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/ if(num[i]) printf(\【2】 , num[i]); }

24. 下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。

char x[ ]= \char y[ ]= \int i=0;

while (x[i]!= 【1】 &&y[i]!= 【2】 ) { if (x[i]==y[i]) printf(\【3】); else i++; }

25. 下面程序完成功能是:计算一个字符串中子串出现的次数。 #include main()

数组 ·15·

{

int i ,j, k,count;

char str1[20],str2[20]; printf(\gets(str1);

printf(\gets(str2); 【1】;

for(i=0;str1[i];i++)

for(j=i,k=0;str1[j]==str2[k];j++,k++) if ( 【2】 ) count++;

printf(\}

26. 下面程序完成以下功能:从键盘输入一行字符,统计其中有多少个单词,单词之间用空

格分隔。

#include main() {

char s[81];

int i , c, num=0,word=0;

【1】;

for(i=0;(c=s[i])!=’\\0’;i++) if(c==32) 【2】;

else if (word==0) {word=1; 【3】;}

printf(\}

27. 下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指正

读反读都相同的数。请填空。 #include main() {

int buffer[10], i,k,flag; long number ,n;

printf(\scanf(\k=0;

n=number; do

{ 【1】 ; k=k+1; n=n/10;

}while (n!=0);

flag=1;

for( i=0;i<=(k-1)/2;i++)

数组 ·16·

if ( 【2】 ) flag=0; if(flag)

printf(\

else printf(\

}

数组 ·17·

函 数

选择题

1. C语言是由( )构成。

A. 主程序和子程序 B. 主函数和若干子函数

C. 一个主函数和一个其他函数 D. 主函数和子程序

2. 以下说法中正确的是( )。

A. C语言程序总是从第一个的函数开始执行

B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行

D. C语言程序中的main()函数必须放在程序的开始部分 3. 以下对C语言函数的有关描述中,正确的是( )。

A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中 4. C语言程序中,当函数调用时( )。

A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单元

D. 计算机系统自动确定是否共用存储单元 5. 关于return语句,下列正确的说法是( )。

A. 在主函数和其他函数中均要出现 B. 必须在每个函数中出现

C. 可以在同一个函数中出现多次

D. 只能在除主函数之外的函数中出现一次 6. 一个函数返回值的类型是由( )决定的。

A. return语句中表达式的类型 B. 在调用函数时临时指定 C. 定义函数时指定的函数类型 D. 调用该函数的主调函数的类型

7. 在C语言的函数中,下列正确的说法是( )。

A. 必须有形参

B. 形参必须是变量名 C. 可以有也可以没有形参 D. 数组名不能作形参

数组 ·18·

8. 以下描述正确的是( )。

A. 函数调用可以出现在执行语句或表达式中 B. 函数调用不能作为一个函数的实参 C. 函数调用可以作为一个函数的形参 D. 以上都不正确

9. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )。

A. 地址传递 B. 单向值传递

C. 由实参传给形参,再由形参传回实参 D. 传递方式由用户指定 10.当调用函数时,实参是一个数组名,则向函数传送的是( )。

A. 数组的长度 B. 数组的首地址

C. 数组每一个元素的地址 D. 数组每个元素中的值 11.如果在一个函数的复合语句中定义了一个变量,则该变量( )。

A. 只在该复合语句中有效,在该复合语句外无效 B. 在该函数中任何位置都有效 C. 在本程序的源文件范围内均有效

D. 此定义方法错误,其变量为非法变量 12.下列说法不正确的是( )。

A. 主函数main中定义的变量在整个文件或程序中有效 B. 不同函数中,可以使用相同名字的变量 C. 形式参数是局部变量

D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 13.在一个源程序文件中定义的全局变量的有效范围是( )。

A. 本源程序文件的全部范围 B. 一个C程序的所有源程序文件 C. 函数内全部范围

D. 从定义变量的位置开始到源程序文件结束 14.以下叙述中不正确的是( )。

A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个函数内的复合语句中定义的变量在本函数范围内有效 15.如果要限制一个变量只能为本文件所使用,必须通过( )来实现。

A. 外部变量说明 B. 静态局部变量 C. 静态外部变量 D. 局部变量说明 16.下列哪种数据不存放在动态存储区中( )。

A. 函数形参变量 B. 局部自动变量 C. 函数调用时的现场保护和返回地址 D. 局部静态变量 17.以下叙述中不正确的是( )。

A. 函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B. 在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C. 外部变量的隐含类别是自动存储类别。 D. 函数形参可以说明为register变量。

数组 ·19·

18.以下只有在使用时才为该类型变量分配内存的存储类说明是( )。

A. auto和 static B. auto和 register C. register和 static D. extern和 register 19.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。

A. void B. int C. float D. double 20.在C语言中,函数的隐含存储类别是( )。

A. auto B. static C. extern D. 无存储类别 21.在C语言中,形参的缺省存储类是( )。

A. auto B. register C. static D. extern 22.若有以下程序

#include void f(int n); main() {

void f(int n); f(5); }

void f(int n) {

printf(\}

则以下叙述中不正确的是( )。

A. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B. 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用

函数f

C. 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D. 函数f无返回值,所以可用void将其类型定义为无值型 23.以下所列的各函数首部中,正确的是( )。

A. void play(var :Integer,var b:Integer) B. void play(int a,b) C. void play(int a,int b)

D. Sub play(a as integer,b as integer) 24.有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是( )。

A. 3 B. 4 C. 5 D. 有语法错 25.若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参

的个数是( )。

A.3 B.4 C.5 D.6

数组 ·20·

26.以下函数值的类型是( )。

fun (float x) {

float y; y= 3*x-4; return y; }

A. int B. 不确定 C. void D. float 27.下列函数定义不正确的是( )。

A. int max() B. int max(x,y) {int x,y,z; int x,y; z=x>y?x:y; { int z; } z=x>y?x:y;

C. int max(x,y) D. int max() {int x,y,z; { } z=x>y?x:y; return(z); }

28.下列程序的运行结果是( )。

main() {

int i=3;

printf(\}

A. 5,5,4 B. 3,4,5 C. 3,3,4 D. 5,4,3 29.以下程序的输出结果是( )。

fun(int x, int y, int z) { z=x*x+y*y; } main() {

int a=31; fun(5,2,a); printf(\}

A. 0 B. 29 C. 31 30.下列程序执行后的输出结果是( )。

void func1(int i); void func2(int i);

char st[]=\void func1(int i)

return(z);}

D. 无定值

数组 ·21·

{

printf(\if(i<3){i+=2;func2(i);} }

void func2(int i) {

printf(\if(i<3){i+=2;func1(i);} }

main() {

int i=0; func1(i); printf(\}

A. hello B. hel C. hlo D. hlm 31.有如下程序

int func(int a,int b) { return(a+b);} main() {

int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(\}

该程序的输出的结果是( )。

A. 12 B. 13 C. 14 D. 15 32.有以下程序

float fun(int x,int y) { return(x+y); } main() {

int a=2,b=5,c=8;

printf(\}

程序运行后的输出结果是( )。

A. 编译出错 B. 9 C. 21 33.有以下程序

#include \int abc(int u,int v); main () {

D. 9.0 数组 ·22·

int a=24,b=16,c; c=abc(a,b);

printf(\}

int abc(int u,int v) {

int w; while(v) {

w=u%v; u=v; v=w }

return u; }

输出结果是( )。

A. 6 B. 7 C. 8 D. 9 34.阅读以下函数:

fun(char s[],char t[]) {

int i=-1;

while(++i,s[i]==t[i]&&s[i]!=’\\0’); return(s[i]==’\\0’&&t[i]==’\\0’); }

以上函数的功能是( )。

A. 比较串s和t的长度 B. 比较串s和t的大小 C. 比较串s和t是否相等 D. 将串t赋给串s 35.以下程序的输出结果是( )。

f( int b[ ], int m, int n) {

int i,s=0;

for(i=m;i

main() {

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

printf(\}

A. 10 B. 18 C. 8 D. 15 36.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。

数组 ·23·

void reverse(int a[ ],int n) {

int i,t;

for(i=0;i

t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t; } }

main() {

int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8);

for(i=6;i<10;i++) s+=b[i]; printf(\}

程序运行后的输出结果是( )。

A. 22 B. 10 C. 34 D. 30 37.请读程序:

#include func( int a, int b) { int c; c=a+b; return c; }

main() {

int x=6, y=7, z=8, r;

r=func( (x--,y--,x+y),z--); printf(\}

上面程序的输出结果是( )。

A. 11 B. 19 C. 21 D. 31 38.请读程序:

#include f(in b[], int n) {

int i, r; r=1;

for(i=0; i<=n; i++) r=r*b[i]; return r;

数组 ·24·

}

main() {

int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3);

printf(\}

上面程序的输出结果是( )。

A. 720 B. 120 C. 24 D. 6 39.下面程序的输出是( )。

main() {

int t=1; fun(fun(t)); }

fun(int h) {

static int a[3]={1,2,3}; int k;

for(k=0;k<3;k++) a[k]+=a[k]-h;

for(k=0;k<3;k++) printf(\printf(\}

A.1,2,3, B.1,3,5, C. 1,3,5, D. 1,3,5, 1,5,9, 1,3,5, 0,4,8, -1,3,7, 40.有如下程序

long fib(int n) {

if(n>2) return(fib(n-1)+fib(n-2)); else return(2); }

main() {

printf(\}

该程序的输出结果是( )。

A. 2 B. 4 C. 6 D. 8 41.以下程序的输出结果是( )。

long fun( int n) {

long s;

if(n==1 || n==2) s=2;

数组 ·25·

else s=n-fun(n-1); return s; }

main() {

printf(\}

A. 1 B. 2 C. 3 D. 4 42.以下程序的输出结果是( )。

func(int x) {

int p;

if(x==0||x==1) return(3); p=x-func(x-2); return p; }

main() {

printf(\}

A. 7 B. 2 C. 0 D. 3 43.有以下程序

int f(int n) {

if(n==1) return 1; else return f(n-1)+1; }

main() {

int i,j=0;

for(i=1;i<3;i++) j+=f(i); printf(\}

程序运行后的输出结果是( )。

A. 4 B. 3 44.下面程序的输出是( )。

int w=3; main() {

int w=10;

printf(\}

C. 2 D. 1

数组 ·26·

fun(int k) {

if(k==0) return w; return(fun(k-1)*k); }

A. 360 B. 3600 C. 1080 D. 1200 45.以下程序的输出结果是( )。

#include \int i=5; main() {

int i=3;

{ int i=10;i++;} f1(); i+=1;

printf(\}

int f1() {

i=i+1; return(i); }

A.7 B.4 C.12 D.6 46.以下程序的输出结果是( )。

int a, b; void fun() {

a=100; b=200; }

main() {

int a=5, b=7; fun();

printf(\}

A. 100200 B. 57 47.以下程序输出结果是( )。

main() {

int i;

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

C. 200100 D. 75 数组 ·27·

add() {

int x=0;static int y=0; printf(\x++; y=y+2; }

A. 0,0 B. 0,0 C. 0,0 D. 0,0 0,0 0,2 1,0 1,2 48.设有以下函数:

f (int a) {

int b=0;

static int c = 3; b++; c++; return(a+b+c); }

如果在下面的程序中调用该函数,则输出结果是( )。 main() {

int a = 2, i;

for(i=0;i<3;i++) printf(\}

A. 7 B. 7 C. 7 D. 7 8 9 10 7 9 11 13 7 49.以下程序的输出的结果是( )。

int x=3; main() {

int i;

for (i=1;i

incre() {

static int x=1; x*=x+1;

printf(\}

A. 3 3 B. 2 2 C. 2 6 D. 2 5

数组 ·28·

50.有以下程序

int a=3; main() {

int s=0;

{ int a=5; s+=a++; } s+=a++;printf(\}

程序运行后的输出结果是( )。

A. 8 B. 10 51.下面程序的输出是( )。

fun3(int x) {

static int a=3; a+=x;

return(a); }

main() {

int k=2, m=1, n; n=fun3(k); n=fun3(m);

printf(\}

A. 3 B. 4 C. 6 D. 9 52.下面程序的输出是( )。

int m=13;

int fun2(int x, int y) {

int m=3;

return(x*y-m); }

main() {

int a=7, b=5;

printf(\}

A. 1 B. 2 C. 7

C. 7 D. 11 D. 10 数组 ·29·

53.下列程序执行后输出的结果是( )。

#include f(int a) {

int b=0; static c=3; a=c++,b++; return (a); } main( ) {

int a=2,i,k;

for(i=0;i<2;i++) k=f(a++); printf(\}

A. 3 B. 0 C. 5 D. 4 54.下列程序执行后输出的结果是( )。

int d=1; fun (int p) {

int d=5; d+=p++;

printf(\}

main( ) {

int a=3; fun(a);

d+=a++; printf(\}

A. 84 B. 96 C. 94 D. 85 55.以下程序的输出结果是( )。

int d=1; fun(int p) {

static int d=5; d+=p;

printf(\return(d); }

main( )

数组 ·30·

{

int a=3;

printf(\}

A. 6 9 9 B. 6 6 9 C. 6 15 15 D. 6 6 15

填空题

1. 下面程序的输出结果是 ________。

int t(int x,int y,int cp,int dp) {

cp=x*x+y*y; dp=x*x-y*y; }

main( ) {

int a=4,b=3,c=5,d=6; t(a,b,c,d);

printf(\; }

2. 下面程序运行后的输出结果是________。

void fun(int x,int y) {

x=x+y;y=x-y;x=x-y; printf(\}

main() {

int x=2,y=3; fun(x,y);

printf(“%d,%d\\n”,x,y); }

3. 下面程序的输出结果是________。

void fun() {

static int a=0;

a+=2; printf(\}

main()

数组 ·31·

{

int cc;

for(cc=1;cc<4;cc++) fun(); printf(\}

4. 下面程序输出的最后一个值是________。

int ff(int n) {

static int f=1; f=f*n; return f; }

main() { int i;

for(i=1;i<=5;i++) printf(\}

5. 下面程序运行结果为________。

#include main() {

int i;

for(i=0;i<2;i++) as(); } as() {

int lv=0;

static int sv=0;

printf(\lv++;sv++; return; }

6. 下面程序的输出是________。

unsigned fun6( unsigned num) {

unsigned k=1; do {

k*=num; num/=10;

} while(num);

数组 ·32·

return(k); }

main() {

unsigned n=26;

printf(\}

7. 下面程序的输出结果是________。

#include fun( int x) { int p;

if( x==0||x==1) return(3); p=x-fun( x-2); return p; }

main() {

printf( \}

8. 下面程序的输出是________。

long fun5(int n) {

long s;

if((n==1)||(n==2)) s=2; else

s=n+fun5(n-1); return(s); } main() {

long x; x=fun5(4);

printf(\}

9. 下面程序的输出是________。

#define MAX 5 int a[MAX],k; main()

数组 ·33·

{

fun1();fun3(); fun2(); fun3(); printf(\}

fun1() {

for(k=0;k

fun2() {

int a[MAX],k;

for(k=0;k<5;k++) a[k]=k; }

fun3() {

int k;

for(k=0;k

10.下面程序的运行结果是________。

#include main() {

int k=4, m=1, p;

p=func(k,m); printf(\p=func(k,m); printf(\}

func(int a, int b) {

static int m=0, i=2; i+=m+1; m=i+a+b; return m; }

11.下面程序运行结果是________。

main() {

int x=2,n=3;

printf(\}

数组 ·34·

power(int x,int n) {

int p;

if(n>0) p=power(x,n-1)*x; else p=1; return(p); }

12.下面程序从键盘输入:5647,输出结果是________。

#include void convert(int n) {

int i;

if((i=n/10)!=0) convert(i);

putchar(n+’0’); }

main() {

int number;

scanf(\if(number<0)

{ putchar(‘-’); number= -number; }

convert(number); }

13.输入I am a student.时,下面程序运行结果是________。

#include main() {

int i,c,num=0,word=0; char string[81]; gets(string);

for(i=0;c=string[i];i++) if(c==’ ’)

word=0;

else if(word==0) {word=1;num++;}

printf(\}

数组 ·35·

14.下面程序的运行结果是________。

#include long fib(int g) {

switch(g) {

case 0:return 0;

case 1:case 2:return(1); }

return(fib(g-1)+fib(g-2)); }

main() {

long k; k=fib(5);

printf(\}

15.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数

的首部 【1】 。(要求形参名为b。) main() {

double s[10][22]; int n; ┆ ┆

fun(s); ┆ }

16.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行

上的最大值。请填空。 #define N 3 #define M 4

void LineMax(int x[N][M]) {

int i,j,p;

for(i=0; i

for(j=1; j

if(x[i][p]

printf(\【2】 ); }

数组 ·36·

}

main() {

int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1}; 【3】 ; }

17.下面函数的功能是:求x的y次方,请填空。

double fun( double x, int y) { int i; double z;

for(i=1, z=x; i

18.若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组

元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a[ ]) { int i;

for(i=1; i<=10; i++) 【1】=i; for(i=0; i<5; i++) 【2】=a[i]; } 19.下面函数的功能是计算s?1?111????,请填空。 1*21*2*31*2*3*4*?*ndouble fun(int n)

{

double s=0.0,fac=1.0; int i;

for(i=1,i<=n;i++) { fac=fac【1】; s=s+fac; }

return s; }

20.下面pi函数的功能是,根据以下公式返回满足精度e要求的p的值。根据以下算法补

足所缺语句。

数组 ·37·

p?2*(1?11*21*2*31*2*3*?*n?????) 1*31*3*51*3*5*71*3*5*7*??2n?1? double pi(double eps)

{

double s=0.0,t=1.0; int n;

for(【1】 ;t>eps;n++) { s+=t;

t=n*t/(2*n+1); }

return(2.0* 【2】 ); }

21.读下面的程序,填空完善程序。

main() {

int a,b,c;

scanf(\【1】 ); c= 【2】(a,b);

printf(\}

int max(x,y) 【3】 ; {

int z;

if(x>y) z=x; else z=y; 【4】 ; }

22.下面程序根据对x的输入,求1到x的累加和。

float fun(int n) {

int i; float c; 【1】 ;

for(i=1;i<=n;i++) c+=i; 【2】 ; }

main()

数组 ·38·

{

int x;

scanf(\【3】 ); printf(\}

23.分别计算并输出1!,2!,3!,4!和5!。

main() {

int i;

for(i=1;i<=5;i++) printf(\【1】 ); }

int fac(int n) { 【2】 f=1; f*=n;

return(f); }

24.求出数组中的最大、最小元素值以及所有元素的均值。

【1】 ;

float average(int n,float array[]) {

int i; float sum;

max=min=sum= 【2】 ; for(i=1;i

if(maxarray[i]) min=array[i]; }

return(sum/n); }

main() {

int i;

float aver,score[10];

printf(\

for(i=0;i<10;i++) scanf(\【3】 ); aver=average(10,score);

printf(\}

数组 ·39·

25.下面程序的功能是找出三个字符串中最大串,填空完善程序。

【1】

#include main() {

int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets( 【2】 );

if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]);

if(strcmp(str[2],string)> 【3】 ) strcpy(string,str[2]); printf(\}

26.本程序的函数ver是使输入的字符串按反序存放,在主函数中输入和输出字符串。

main() {

char str[100]; scanf(\ver(str);

printf(\}

ver( 【1】 ) {

char t; int i,j;

for(i=0,j=strlen(str);i

27.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10 char str[N]; main() {

int i,flag;

for(flag=1;flag==1;) { scanf(\

flag=0; printf(\}

sort( 【1】 );

for(i=0;i

数组 ·40·

}

sort(char str[N]) {

int i,j; char t;

for(j=1;j

for(i=0;(istr[i+1])

{t=str[i]; 【2】 ; 【3】 ;} }

28.用选择法对数组进行由小到大排序。

void sort(n,array) 【1】 ; {

int i,j,k,t;

for(i=0;i

for( 【2】 ;j

if(array[k]>array[j]) k=j; t=array[i];

array[i]=array[k]; array[k]=t; } }

main() {

int i,a[10];

printf(\

for(i=0;i<10;i++) scanf(\ 【3】 ;

printf(\

for(i=0;i<10;i++) printf(\}

29.用递归方法求n!。

float fac(int n) {

float f;

if(n<0) printf(\else if( 【1】 ) f=1;

本文来源:https://www.bwwdw.com/article/wc77.html

Top