《C语言程序》练习题.docx

上传人:b****6 文档编号:6517360 上传时间:2023-01-07 格式:DOCX 页数:20 大小:27.29KB
下载 相关 举报
《C语言程序》练习题.docx_第1页
第1页 / 共20页
《C语言程序》练习题.docx_第2页
第2页 / 共20页
《C语言程序》练习题.docx_第3页
第3页 / 共20页
《C语言程序》练习题.docx_第4页
第4页 / 共20页
《C语言程序》练习题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

《C语言程序》练习题.docx

《《C语言程序》练习题.docx》由会员分享,可在线阅读,更多相关《《C语言程序》练习题.docx(20页珍藏版)》请在冰豆网上搜索。

《C语言程序》练习题.docx

《C语言程序》练习题

《C语言程序》练习题

练习题一

一、选择(单项选择,每题2分,共20分)

1、C语言有各种基本数据类型,若对其进行sizeof运算,则下列正确是()

sizeof(char)<=sizeof(int)<=sizeof(long)<=sizeof(float)

sizeof(char)<=sizeof(long)<=sizeof(int)<=sizeof(float)

sizeof(float)<=sizeof(long)<=siezof(int)<=siezof(char)

sizeof(long)<=siezof(char)<=sizeof(float)<=sizeof(int)

2、请读下面程序

#include

main()

{intx,y,z,w;

w=(x=5,y=-11,z=43,3);

printf("%d%d%d%d",x,y,z,w);}

程序执行结果()

A)5-1133B)5-1135C)5-11433D)5-11343

3、在C语言中逻辑值"真"的表示是用()

A)trueB)整型值0C)非零整型值D)T

4、有语句x=3;do{printf("%2d",x--);}while(!

x);执行结果是()

A)3B)321C)死循环D)不输出内容

5、请读下面程序

#include

main()

{staticcharstring[]="Iloveyou!

";printf("%s",string);}

输出结果()

A)Iloveyou!

B)IC)stringD)!

uoyevolI

6、C语言中,在main函数中书写自变量可获得来自命令行的自变量,而自变量的说明应为()

A)main(charargc,char*argv)B)main(charargc,int*argv[])

C)main(intargc,char*argv[])D)main(intargc,int*argv)

7、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:

int*p;p=____malloc(sizeof(int));则应填入()

A)intB)int*C)(*int)D)(int*)

8、若已知:

intx;inty[];则下面哪个表达式是有意义的()

A)&xB)&(x+y)C)&5D)&y

9、请读程序

#include

f(char*s1)

{char*s2=s1;while(*s2!

='\0')s2++;return(s2-s1);}

main()

{printf("%d\n",f("1234567"));}

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

A)4(B)7(C)9(D)0N_001

10、已知结构eisei类型的变量a,其初始化赋值如下:

staticstructeiseia={"20",5,1.7691};请写出结构eisei的类型定义()

A)eiseistruct{B}structeisei{

charname();charname[];

intkodo;intkodo;

floatshuki;}doubleshuki;}

C)structeisei{D)eiseistruct{

intname;intname;

intkodo;intkodo;

floatshuki;}floatshuki;}

二、填空(每空2分,共20分):

C源程序的基本单位是 

(1) 。

若a=1,b=4,c=3,则表达式!

(a

c&&1的值是 

(2) 。

若有定义intm=5,y=2;,执行表达式y+=y-=m*=y后y的值是 (3) 。

a=3,b=2,c=1时,表达式f=a>b>c的值是 (4) 。

C语言中,二维数组的定义方式为:

类型说明符 数组名[(5)][(6)];

设有以下宏定义:

#defineWIDTH80

#defineLENGTHWIDTH+40

则执行赋值语句:

v=LENGTH*20;(v为int型变量)后,v的值是 (7) 。

建立上图所示存储结构所需的说明语句是 (8) 。

建立上图所示给a输入数据的输入语句是 (9) 。

建立上图所示存储结构所需的赋值语句是 (10) 。

三、分析运行结果(每小题4分,共16分)

1、下面程序的运行结果是:

main()

{inti,j,a[2][3]={{2,4,6},{8,10,12}};

printf(“Theoriginalarrayis:

\n”);

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

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

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

printf(“\n”);}

printf(“\ntheresultis:

\n”);

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

{for(j=0;j<2;j++)

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

printf(“\n”);}

}

2、若输入的值是-125,以下程序的运行结果是:

#include”math.h”

main()

{intn;

scanf(“%d”,&n);

printf(“%d=”,n);

if(n<0)printf(“-“);

n=fabs(n);

fun(n);}

fun(intn)

{intk,r;

for(k=2;k<=sqrt(n);k++)

{r=n%k;

while(r==0)

{printf(“%d”,k);

n=n/k;

if(n>1)printf(“*”);

r=n%k;}}

if(n!

=1)printf(“%d\n”,n);

}

3、下面程序的运行结果是:

main()

{intva[10],vb[10],*pa,*pb,i;

pa=va;pb=vb;

for(i=0;i<3;i++,pa++,pb++)

{*pa=i;*pb=2*i;

printf(“%d\t%d\n”,*pa,*pb);}

pa=&va[0];pb=&vb[0];

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

{*pa=*pa+i;*pb=*pb*i;

printf(“%d\t%d\n”,*pa++,*pb++);}

}

4、以下程序的运行结果是:

main()

{structEXAMPLE{

struct{intx;inty;}in;

inta;

intb;}e;

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf(“%d,%d”,e.in.x,e.in.y);

}

四、程序填空(每空2分,共20分)

以下程序输出x,y,z三个数中的最大者。

请在____内填入正确的内容。

main()

{intx=4,y=6,z=7;

int 

(1) ;

if( 

(2) )u=x;

elseu=y;

if( (3) )v=u;

elsev=z;

printf(“v=%d”,v);}

2.下面程序的功能是在任意的字符串a中将与字符’c’相等的所有元素的下标值分别存放在整型数组b中。

请填空。

#include

main()

{chara[80];

inti,b[80],k=0;

gets(a);

for(i=0;a[i]!

=‘\0’;i++)

if( (4) ){b[k]=i; (5) ;}

for(i=0;i

}

3.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。

请在____内填入正确内容。

staticstructman

{charname[20];

intage;

}person[]={“li-ming”,18,“wang-hua”,19,“zhang-ping”,20};

main()

{structman*p,*q;

intold=0;

p=person;

for(;p (6);p++)

if(oldage)

{q=p; (7) ;}

printf(“%s%d”, (8) );

}

4.以下程序能找出数组中的最大值和该值所在的元素下标,数组元素值从键盘输入。

请选择填空。

main()

{intx[10],*p1,*p2,k;

for(k=0;k<10;k++)scanf(“%d”,x+k);

for(p1=x,p2=x;p1-x<10;p1++)

if(*p1>*p2)p2= (9) ;

printf(“MAX=%d,INDEX=%d\n”,*p2, (10) );

}

(9)A)p1B)p2[p1]C)x[p2]D)x-p1

(10)A)p1-xB)p1C)p2-xD)x-p2

五、编程(共24分)

1、编制程序:

输入一个整数,判断它能否被3、5、7整除,并输出以下信息之一:

能同时被3、5、7整除。

能被其中两数(要指出哪两个)整除。

能被其中一个数(要指出哪一个)整除。

不能被3、5、7任一个整除。

2、试利用结构体类型编制一程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。

 

练习题二

一、单选题(共30分,每小题2分)

1、与代数式(x*y)/(u*v)不等价的C语言表达式是()。

A.x*y/u*vB.x*y/u/vC.x*y/(u*v)D.x/(u*v)*y

2、对于charcx=’\039’;语句,正确的是()。

A.不合法         B.cx的ASCII值是33

C.cx的值为四个字符    D.cx的值为三个字符

3、假定x和y为double型,则表达式x=2,y=x+3/2的值是()。

A.3.500000B.3     C.2.000000D.3.000000

4、执行下列程序片段时输出结果是()。

        intx=5,y;

        y=2+(x+=x++,x+8,++x);

        printf(“%d”,y);

A.13B.14C.15D.16

5、有输入语句:

scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是()。

A.132↙    B.a=1,b=3,c=2↙

C.a=1b=3c=2↙     D.1,3,2↙

6、对下述程序,是正确的判断()。

        main()

        {intx,y;

scanf(“%d,%d”,&x,&y);

if(x>y)

   x=y;y=x;

else

   x++;y++;

printf(“%d,%d”,x,y);

        }

A.若输入4和3,则输出3和4  B.若输入3和4,则输出4和5

C.有语法错误,不能通过编译    D.若输入4和3,则输出4和5

7、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()。

if(a

if(c

else

   if(a

     if(b

     elsex=3;

   elsex=6;

elsex=7;

A.1B.2C.3D.4

8、下述程序段的运行结果是()。

inta=1,b=2,c=3,t;

while(a

printf(“%d,%d,%d”,a,b,c);

  A.1,2,0B.2,1,0C.1,2,1D.2,1,1

9、以下程序段()。

x=-1;

do

    {x=x*x;}

while(!

x);

A.是死循环B.循环执行2次C.循环执行1次D.有语法错误

10、以下能对二维数组a进行正确初始化的语句是()。

A.inta[2][]={{1,0,1},{5,2,3}};;B.inta[][3]={{1,2,3},{4,5,6}};

C.inta[2][4]={{1,2,3},{4,5},{6}};D.inta[][3]={{1,0,1},{},{1,1}};

11、若有说明:

inta[3][4]={0};则下面正确的叙述是()。

A.只有元素a[0][0]可得到初值0

B.此说明语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

12、如果在一个函数中的复合语句中定义了一个变量,则正确的说法是()。

A.该变量只在该复合语句中有效B.该变量在该函数中有效

C.该变量在本程序范围内均有效D.该变量为非法变量

13、对下面程序段:

#defineA3

#defineB(a)((A+1)*a)

x=3*(A+B(7));

正确的判断是()。

A.程序错误,不许嵌套宏定义B.x=93

C.程序错误,宏定义不许有参数D.x=21

14、下面程序段的运行结果是()。

charp[]="abcdefghijklmn";

char*p1=p;

p1+=3;

printf("%d\n",strlen(strcpy(p1,"ABCD123")));

A.8B.12C.11D.7

15、设有如下定义:

structsk

{intn;

floatx;

}data,*p;

若要使p指向data中的n域,正确的赋值语句是()。

A.p=&data.n;B.*p=data.n;C.p=(structsk*)&data.n;D.p=(structsk*)data.n;

二、判断题(共10分,每小题1分)

1、C语言并不是一种严格的算法语言,大写字母与小写字母的意义相同()。

2、C语言是一种函数式语言,函数体是由若干说明语句和执行语句组成的。

( )

3、算法的特征的是有效性、确定性、有穷性、特殊性。

(   )

4、表达式a=3*5,a+a,a+3的值为18。

(   )

5、'a'和"a"没有区别,表示的都是字符常量a。

(   )

6、设有说明语句“intx;”,则执行语句“x=7;x+=x-=x+x;”后x值为-7。

(   )

7、条件“2<x<3或x<-10”的C表达式是x>2&&x<3||x<-10。

(   )

8、do-while语句与while语句的区别仅是关键字“while”出现的地方不同。

(   )

9、执行语句for(i=1;i++<4;);后i的值为5。

(   )

10、对for(表达式1;;表达式3)可理解为for(表达式1;表达式3;表达式3)。

(   )

三、程序阅读题(共44分)

1、写出以下程序运行的结果。

(5分)

           main()

        {intx=9;

           for(;x>0;x--){

if(x%3==0){

   printf(“%d”,--x);

   continue;

}

           }

        }

2、写出下面程序运行的结果。

(5分)

main()

{inta=10,y=0;

   do{

      a+=2;y+=a;

      if(y>50)break;

   }while(a=14);

   printf(“a=%dy=%d\n”,a,y);

}

3、下面程序段的功能是计算1000!

的末尾有多少个零,请填

(1)空使程序完整。

(5分)

main()

{

     inti,k,m;

     for(k=0,i=5;i<=1000;i+=5)

     {m=i;

        while

(1){k++;m=m/5;}

}

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

}        

4、下面程序的功能是:

先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

例如,当s中的字符串为:

“ABCDE”时则t中的字符串应为:

“EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。

(5分)

#include

#include     

 main()

      {chars[80],t[200];inti,sl;

         gets(s);sl=strlen(s);

         for(i=0;i

         for(i=0;i

         puts(t);

}

5、写出以下程序运行的结果。

(5分)

#include

voidmain()

{

staticchara[]="Language",b[]="programe";

char*p1,*p2;intk;

p1=a;p2=b;

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

if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

  

6、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。

(5分)

main()

班级:

姓名:

学号:

.

O…………O…………O…………O…………O装………O订………O线…………O…………O…………O…………O……………O

{intn,k=1,s=0,m;

  for(n=1;n<=100;n++){

      k=1;s=0;

      1;

      while

(2){

          k*=m%10;

          s+=m%10;

         3;

      }

      if(k>s)printf(“%d”,n);

  }

}

7、写出以下程序运行的结果。

(4分)

main()

{intx=1,y=0,a=0,b=0;

   switch(x){

      case1:

switch(y){

              case0:

a++;break;

              case1:

b++;break;

              }

      case2:

a++;b++;break;

      case3:

a++;b++;

}

  printf(“a=%d,b=%d”,a,b);

}

 

8、写出下面程序的运行结果。

(5分)

structn{intx;charc;};

func(structnb)

{b.x=20;b.c='y';}

main()

{structna={10,'x'};

func(a);

printf("%d,%c",a.x,a.c);

}

9、以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填(3)空使程序完整。

(5分)

#include

main()

{inta[3][2]={2,10,9,4,5,119},b[2][2]={-1,-2,-3,-4};

inti,j,k,s,c[3][2];

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

for(j=0;j<2;j++){

        1

          for(k=0;k<2;k++)s+=2

          c[i][j]=s;

      }

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

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

         printf(“%6d”,c[i][j]);

       3;

      }

}

四、编程题(共16分,每题8分)

1、编程实现查找一个字符串在另一个字符串中出现的次数。

2、如果整数A的全部因子(包括1,但不包括A本身)之和等于B;且整数B的全部因子(包括1,但不包括B本身)之和等于A,则将整数A和B称为亲密数。

求3000以内(包括3000)的全部亲密数。

练习题三

一、选择(单项选择,每题2分,共20分)

以下叙述正确的是()

A)在C程序中,main函数必须位于程序的最前面

B)C程序的每行只能写一条语句

C)C程序的本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

2、设x,y和z都是int型变量,且x=2,y=3,z=4,则下面的表达式中值为0的表达式是()

A)x&&zB)(!

y==1)&&(!

z==0)

C)(x

z||1D)x||y+y&&z-y

3、请读下面程序

main()

{inti=8,j=10;

printf("%d,%d,%d,%d",i,j,++i,j++);}

运算结果为()

A)9,11,9,10B)8,10,9,10C)8,10,8,11D)8,10,9,11

4、当输入流为"12345067891a36"时,执行下面的程序段:

inti,j;

floatx,y;

charc;

scanf("%2d%f%f%c%d",&i,&x,&y,&c,&j);

则变量i,j,x,y,c中的内容分别为()

A)12,345.000000,67891.000000,a,36

B)12345,无值,67891.000000,a,36

C)12345,67891.000000,97,3,6

D)输入格式有错,不能正确对这些变量赋值。

5、为了避免嵌套的条件语句if---

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

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1