C语言第四章练习题.docx

上传人:b****0 文档编号:9847567 上传时间:2023-05-21 格式:DOCX 页数:16 大小:29.25KB
下载 相关 举报
C语言第四章练习题.docx_第1页
第1页 / 共16页
C语言第四章练习题.docx_第2页
第2页 / 共16页
C语言第四章练习题.docx_第3页
第3页 / 共16页
C语言第四章练习题.docx_第4页
第4页 / 共16页
C语言第四章练习题.docx_第5页
第5页 / 共16页
C语言第四章练习题.docx_第6页
第6页 / 共16页
C语言第四章练习题.docx_第7页
第7页 / 共16页
C语言第四章练习题.docx_第8页
第8页 / 共16页
C语言第四章练习题.docx_第9页
第9页 / 共16页
C语言第四章练习题.docx_第10页
第10页 / 共16页
C语言第四章练习题.docx_第11页
第11页 / 共16页
C语言第四章练习题.docx_第12页
第12页 / 共16页
C语言第四章练习题.docx_第13页
第13页 / 共16页
C语言第四章练习题.docx_第14页
第14页 / 共16页
C语言第四章练习题.docx_第15页
第15页 / 共16页
C语言第四章练习题.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言第四章练习题.docx

《C语言第四章练习题.docx》由会员分享,可在线阅读,更多相关《C语言第四章练习题.docx(16页珍藏版)》请在冰点文库上搜索。

C语言第四章练习题.docx

C语言第四章练习题

注意,本套题目中有些涉汲到函数的调用和指针的使用,大家自已先去看下,不懂就问,培养自己的自学能力。

一,选择题

1.若有以下定义

intx[10],*pt=x;

则对x数组元素的正确引用是

  A)pt+3

  B)*&x[10]

  C)*(pt+10)

D)*(x+3)

2.有以下程序

#include

main()

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

printf("%d\n",s);

}

程序执行后的输出结果是

  A)20

  B)25

  C)45

  D)36

3.#include

main()

{intc[6]={10,20,30,40,50,60},*p,*s;

p=c;s=&c[5];

printf("%d\n",s-p);

}

程序运行后的输出结果是

  A)5

  B)50

  C)6

  D)60

4.#include

main()

{inta[3]={0},i,j,k=2;

for(i=0;i

for(j=0;j

printf("%d\n",a[1]);

}

程序运行后的输出结果是

  A)0

  B)2

  C)1

  D)3

5..有以下程序

#include

main()

{inta[5]={2,4,6,8,10},*p,**k;

p=a;k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

程序运行后的输出结果是

  A)46

  B)44

  C)22

  D)24

6.以下叙述中正确的是

  A)一条语句只能定义一个数组

  B)每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

  C)数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

  D)在引用数组元素时,下标表达式可以使用浮点数

7.以下叙述中正确的是

  A)数组下标的下限是1

  B)数组下标的下限由数组中第一个非零元素的位置决定

  C)数组下标的下限由数组中第一个被赋值元素的位置决定

  D)charc1,c2,*c3,c4[40];是合法的变量定义语句

8.以下叙述中正确的是

  A)语句inta[8]={0};是合法的

  B)语句inta[]={0};是不合法的,遗漏了数组的大小

  C)语句chara[2]={"A","B"};是合法的,定义了一个包含两个字符的数组

  D)语句chara[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符

9.有以下程序

#include

main()

{inta[]={2,4,6,8,10},x,*p,y=1;

p=&a[1];

for(x=0;x<3;x++)y+=*(p+x);

printf("%d\n",y);

}

程序的输出结果是

  A)13

  B)19

  C)11

  D)15

10.有以下程序

#include

main()

{

inta[]={2,4,6,8},*p=a,i;

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

a[i]=*p++;

printf("%d\n",a[2]);

}

程序的输出结果是

  A)2

  B)8

  C)4

D)6

11.以下叙述正确的是

  A)不能在数组说明符的一对方括号中使用表达式

  B)charc1,*c2,**c3,c4[2];是C语言的合法语句

  C)数组下标的最小值可以是负值

D)若有数组定义intarray[5];则语句printf("%d",array[1.23]);是合法的

12.设有如下程序段

inta[1]={0};

intb[]={9};

charc[3]={"A","B"};

chard="12";

以下叙述正确的是

  A)a,b的定义合法,c,d的定义不合法

  B)a,b,c,d的定义都是合法的

C)a,b,c的定义是合法的,d的定义不合法

 D)只有a的定义是合法的

12.对于函数声明

voidfun(floatarray[],int*ptr);

下叙述正确的是

  A)调用函数时,array数组的元素和ptr都是按值传送

  B)函数声明有语法错误,参数array缺少数组大小定义

  C)调用函数时,array数组中将存储从实参中复制来的元素值

D)函数参数array,ptr都是指针变量

13.要求定义一个具有6个元素的int型一维数组,以下选项中错误的是

  A)inta[2*3]={0};

  B)intN=6,a[N];

  C)#defineN3

inta[N+N];

D)inta[]={1,2,3,4,5,6};

14.设有定义:

inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引用错误的是

  A)*(&a[i])

  B)a[10]

C)p[i]

 D)a[p-a]

15.有以下程序

#include

intfun(intx[],intn)

{

staticintsum=0,i;

for(i=0;i

returnsum;

}

main()

{

inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;

s=fun(a,5)+fun(b,4);

printf("%d\n",s);

}

程序执行后的输出结果是

  A)55

  B)50

  C)45

D)60

二,填空题

1.#include

voidfun(int*s,intn1,intn2)

{

inti,j,t;

i=n1;j=n2;

while(i

{

t=s[i];s[i]=s[j];s[j]=t;i++;j--;

}

}

main()

{

inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

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

printf("%d",a[k]);

printf("\n");

}

则输出结果是。

2.有以下程序

#include

main()

{

Ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

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

c[s[i]]++;

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

printf("%d",c[i]);

printf("\n");

}

程序的运行结果是.

3.#include

voidfun(inta[],intn)

{intt,i,j;

for(i=1;i

for(j=i+2;j

if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={10,9,8,7,6,5,4,3,2,1},i;

fun(c,10);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

则程序的输出结果是。

4.有如下程序

#include

intsum_mod(inta,intb)

{

returna+b%2;

}

main()

{

inti;

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

printf("%d",sum_mod(i,4));

printf("\n");

}

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

5.有以下程序

#include

voidfun(inta[],intn)

{inti=0;

for(i=0;i

{if(i%2==0)

a[i]+=n;

else

a[i]-=n;

}

}

main()

{intc[5]={5,4,3,2,1},i;

fun(c,5);

for(i=0;i<5;i++)printf("%d,",c[i]);

printf("\n");

}

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

6.有以下程序

#include

voidfun(inta[],intn)

{

inti;

for(i=0;i

{

if(i%3==0)

a[i]-=n;

else

a[i]+=n;

}

}

main()

{intc[5]={6,7,8,9,10},i;

fun(c,5);

for(i=0;i<5;i++)printf("%d,",c[i]);

printf("\n");

}

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

7.#include

voidchange(int*array,intlen)

{

for(;len>=0;len--)

array[len]-=1;

}

main()

{

inti,array[5]={2,2};

change(array,4);

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

printf("%d,",array[i]);

printf("\n");

}

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

8.有以下程序

#include

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i

for(j=i+1;j

if(a[i]

}

main()

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

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

}

程序的运行结果是。

9.以下程序调用fun函数求数组中最大值所在元素的下标。

#include

voidfun(int*s,intn,int*k)

{inti;

for(i=0,*k=i;i

if(s[i]>s[*k])__________;

}

main()

{inta[5]={1,6,2,8,0},k;

fun(a,5,&k);

printf("%d%d\n",k,a[k]);

}

在横线处应填入的内容是。

10.以下fun函数返回数组中最大值的下标

#include

intfun(int*s,intn)

{inti,k;

for(i=0,k=i;i

if(s[i]>s[k])__________;

return(k);

}

在横线处应填入的内容是。

三,编程题

1,打印如图所示的扬挥三角形

#include

#include

#definen10

intmain()

{

inti,j,k;

inta[n][n];

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=1;i

for(j=1;j

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

for(i=0;i

{for(k=n;k>i;k--)

printf("");

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

printf("%4d",a[i][j]);

printf("\n");

}

return0;

}

2.请编写函数fun,该函数的功能是:

将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为

33333333

44444444

55555555

则一维数组中的内容应是:

334455334455334455334455

#include

voidfun(ints1[],ints2[][4],intm,intn)

{inti,j,k=0;

for(i=0;i

for(j=0;j

s1[k]=s2[j][i];

}

voidmain()

{

inti;

inta[3][4]={33,33,33,33,44,44,44,44,55,55,55,55};

intb[12];

fun(b,a,4,3);

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

printf("%d",b[i]);

}

2.编写函数fun,其功能是:

实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中。

计算结果在main函数中输出。

例如,输入下面的矩阵:

其转置矩阵为:

    

程序输出:

#include

#include

intmain()

{

inti,j;

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

intq[3][3];

fun(s,q);

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

{

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

printf("%d",q[i][j]);

printf("\n");

}

return0;

}

intfun(inta[][3],ints[][3])

{

inti,j;

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

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

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

return(s);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2