C语言习题1.docx

上传人:b****8 文档编号:9948328 上传时间:2023-02-07 格式:DOCX 页数:16 大小:20.73KB
下载 相关 举报
C语言习题1.docx_第1页
第1页 / 共16页
C语言习题1.docx_第2页
第2页 / 共16页
C语言习题1.docx_第3页
第3页 / 共16页
C语言习题1.docx_第4页
第4页 / 共16页
C语言习题1.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言习题1.docx

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

C语言习题1.docx

C语言习题1

一、选择题

(1)用C语言编写的代码程序()//考点:

程序

A)可立即执行  B)是一个源程序

C)经过编译即可执行  D)经过编译解释才能执行

(2)结构化程序由三种基本结构组成,三种基本结构组成的算法()//考点:

三种结构

A)可以完成任何复杂的任务B)只能完成部分复杂的任务

C)只能完成符合结构化的任务  D)只能完成一些简单的任务

(3)以下定义语句中正确的是()//赋值、指针

A)chara='A'b='B';  B)floata=b=10.0;

C)inta=10,*b=&a;  D)float*a,b=&a;

(4)下列选项中,不能用作标识符的是()//标识符

A)_1234_B)_1_2C)int_2_D)2_int_

(5)有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中不正确的表达式是()

A)a=a+b=b++B)w%(int)(a+b)

C)(c+w)%(int)aD)w=a==b;

(6)有以下程序//运算符的优先级、结合性

main()

{intm=3,n=4,x;

  x=-m++;

  x=x+8/++n;

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

}

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

A)3B)5C)-1D)-2

(7)有以下程序//++运算

main()

{chara='a',b;

  printf(“%c,”,++a);

  printf(“%c\n”,b=a++);

}

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

A)b,bB)b,cC)a,bD)a,c

(8)有以下程序//各数整数的表示与输出

main()

{intm=0256,n=256;

  printf(“%o%o\n”,m,n);

}

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

A)02560400B)0256256C)256400D)400400

(9)有以下程序//输出控制符少的情况

main()

{inta=666,b=888;

  printf(“%d\n”,a,b);}

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

A)错误信息B)666C)888D)666,888

(10)有以下程序//循环、switch

main()

{inti;

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

    switch(i)

    {

      case0:

printf(“%d”,i);

      case2:

printf(“%d”,i);

      default:

printf(“%d”,i);

    }

}

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

A)022111B)021021C)000122D)012

(11)若x和y为整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()//表达式

A)abs(x-y)<10  B)x-y>-10&&x-y<10

C)(x-y)<-10||!

(y-x)>10  D)(x-y)*(x-y)<100

(12)有以下程序//if语句的嵌套配对

main()

{inta=3,b=4,c=5,d=2;

  if(a>b)

  if(b>c)

    printf(“%d”,d+++1);

  else

    printf(“%d”,++d+1);

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

}

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

A)2B)3C)43D)44

(13)下列条件语句中,功能与其他语句不同的是()//if语句的条件

A)if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);

B)if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);

C)if(a!

=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

D)if(a==0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

(14)有以下程序//循环、continue、break

main()

{inti=0,s=0;

  for(;;)

  { if(i==3||i==5)continue;

    if(i==6)break;

    i++;

    s+=i;

  };

  printf(“%d\n”,s);

}

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

A)10B)13C)21D)程序进入死循环

(15)若变量已正确定义,要求程序段完成求5!

的计算,不能完成此操作的程序段是()//循环赋初位置问题

A)for(i=1,p=1;i<=5;i++)p*=i;

B)for(i=1;i<=5;i++){p=1;p*=i;}

C)i=1;p=1;while(i<=5){p*=i;i++;}

D)i=1;p=1;do{p*=i;i++;}while(i<=5);

(16)有以下程序//输入与输出

main()

{chara,b,c,d;

  scanf(“%c,%c,%d,%d”,&a,&b,&c,&d);

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

}

若运行时从键盘上输入:

6,5,65,66<回车>。

则输出结果是()

A)6,5,A,BB)6,5,65,66C)6,5,6,5D)6,5,6,6

(17)以下能正确定义二维数组的是()//二维数组的定义

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

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

(18)有以下程序//循环的结束条件、函数的调用

intf(inta)

{returna%2;}

main()

{ints[8]={1,3,5,2,4,6},i,d=0;

  for(i=0;f(s[i]);i++)d+=s[i];

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

}

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

A)9B)11C)19D)21

(19)若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是()//二维数组的指针表示法//指向一维数组的指针

A)p+1     B)*(p+3)  C)*(p+1)+3 D)*(p[0]+2)

(20)有以下程序  //指针的赋值操作

main()

{inta=7,b=8,*p,*q,*r;

  p=&a;q=&b;

  r=p;p=q;q=r;

  printf(“%d,%d,%d,%d\n”,*p,*q,a,b);

}

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

A)8,7,8,7B)7,8,7,8C)8,7,7,8D)7,8,8,7

(21)s1和s2已正确定义并分别指向两个字符串。

若要求:

当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()//字符串大小的比较函数

A)if(s1>s2)S;  B)if(strcmp(s1,s2))S;

C)if(strcmp(s2,s1)>0)S;  D)if(strcmp(s1,s2)>0)S;

(22)设有定义语句//一维数组的指针表示法、指针运算

intx[6]={2,4,6,8,5,7},*p=x,i;

要求依次输出x数组6个元素中的值,不能完成此操作的语句是()

A)for(i=0;i<6;i++)printf(“%2d”,*(p++));

B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));

C)for(i=0;i<6;i++)printf(“%2d”,*p++);

D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);

(23)有以下程序//指针的赋值

#include

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

  *q=*(p+5);

  printf(“%d%d\n”,*p,*q);

}

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

A)运行后报错B)66  C)611D)510

(24)有以下定义和语句//一维数组的指针表示法、指针数组

inta[3][2]={1,2,3,4,5,6,},*p[3];

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是()

A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]

(25)有以下程序//二维字符串数组

main()

{charstr[][10]={“China”,”Beijing”},*p=str[0];

  printf(“%s\n”,p+10);

}

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

A)China  B)BejingC)ngD)ing

(26)有以下程序//字符指针、字符串的输出

main()

{chars[]=“ABCD”,*p;

  for(p=s+1;p

}

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

A)ABCD    B)A  C)B  D)BCD

   BCD        B      C      CD

   CD         C      D      D

   D          D

(27)在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()//间接递归概念

A)称为函数的直接递归调用B)称为函数的间接递归调用

C)称为函数的循环调用  D)C语言中不允许这样的递归调用

(28)已有定义:

inti,a[10],*p;,则合法的赋值语句是()//数组与指针

A)p=100;  B)p=a[5];  C)p=a[2]+2;D)p=a+2;

(29)以下叙述中正确的是()//局部变量、全局变量、生命期

A)局部变量说明为static存储类,其生存期将得到延长

B)全局变量说明为static存储类,其作用域将被扩大

C)任何存储类的变量在未赋初值时,其值都是不确定的

D)形参可以使用的存储类说明符与局部变量完全相同//形参不能用static

(30)设有定义语句:

charc1=92,c2=92;,则以下表达式中值为零的是()//位运算

A)c1^c2  B)c1&c2  C)~c2  D)c1|c2

(31)程序中对fun函数有如下说明  //各类指针、指向函数的指针等

void*fun();此说明的含义是()

A)fun函数无返回值

B)fun函数的返回值可以是任意的数据类型

C)fun函数的返回值是无值型的指针类型

D)指针fun指向一个函数,该函数无返回值

(32)有以下程序//字符指针、字符串的结束

main()

{chars[]=“Yes\n/No”,*ps=s;

  puts(ps+4);

  *(ps+4)=0;

  puts(s);

}

程序运行后的输出结果是(选项D中的第一行是空行)()

A)n/No  B)/No  C)n/NO  D)

  Yes        Yes    Yes          /No

  /No         /NoYes

(33)有以下程序//负数的补码表示

main()

{unsignedinta;

  intb=-1;

  a=b;

  printf(“%u”,a);

}

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

A)-1  B)65535  C)32767  D)-32768

(34)有以下程序//指针为形式参数、数组名为实际参数

voidfun(int*a,inti,intj)

{intt;

  if(i

  {t=a[i];a[i]=a[j];a[j]=t;

    i++;j--;

    fun(a,i,j);

  }

}

main()

{intx[]={2,6,1,8},i;

  fun(x,0,3);

  for(i=0;i<4;i++)printf(“%2d”,x[i]);

  printf(“\n”);

}

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

A)1268  B)8621C)8162D)8612

(35)有以下说明和定义语句//结构体成员的各种引用方法

structstudent

{intage;charnum[8];};

structstudentstu[3]={{20,”200401”},{21,”200402”},{10\9,”200403”}};

structstudent*p=stu;

以下选项中引用结构体变量成员的表达式错误的是()

A)(p++)->num  B)p->numC)(*p).numD)stu[3].age

(36)有以下程序//一维数组、冒泡排序

main()

{intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

  for(j=2;j>=i;j--)

    if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    for(j=4;j<7-i;j++)

    if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    for(j=4;j<7-i;j++)

    if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}

  for(i=0;i<8;i++)printf(“%d”,x[i]);

  printf(“\n”);

}

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

()

A)75310246  B)01234567  C)76310462  D)13570246

(37)有如下程序//文件

#include

main()

{FILE  *fp1;

  fp1=fopen(“f1.txt”,”w”);

  fprintf(fp1,”abc”);

  fclose(fp1);

}

若文本文件f1.txt中原有内容为:

good,则运行以上程序后文件f1.txt中的内容为()

A)goodabc  B)abcd  C)abc  D)abcgood

48~50.以下程序的功能是:

建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。

#include//链表

structnode

{chardata;structnode*next;};

 (38)  CreatList(char*s)

{structnode*h,*p,*q);

  h=(structnode*)malloc(sizeof(structnode));

  p=q=h;

  while(*s!

='\0')

  {  p=(structnode*)malloc(sizeof(structnode));

    p->data=  (39)  ;

    q->next=p;

    q=  (40)  ;

    s++;

  }

  p->next='\0';

  returnh;

}

main()

{charstr[]=“linklist”;

  structnode*head;

  head=CreatList(str);

  ...

}

(38)A)char*  B)structnode  C)structnode*  D)char

(39)A)*s  B)s  C)*s++  D)(*s)++

(40)A)p->next  B)p  C)sD)s->next

二、填空题

(1)以下程序段的输出结果是 11  。

inti=9;

printf(“%o\n”,i);

(2)以下程序运行后的输出结果是 252137  。

main()

{inta,b,c;

  a=25;

  b=025;

  c=0x25;

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

}

(3)以下程序运行后的输出结果是 24  。

main()

{intp[7]={11,13,14,15,16,17,18};

  inti=0,j=0;

  while(i<7&&p[i]%2==1)j+=p[i++];

  printf(“%d\n”,j);

}

(4)以下程序运行后的输出结果是 21  。

main()

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

  switch(x)

  {case1:

switch(y)

  {case0:

a++;break;

               case1:

b++;break;}

   case2:

a++;b++;break;

  }

  printf(“%d  %d\n”,a,b);

}

(5)以下程序运行后的输出结果是 92  。

main()

{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

  inti=0,j=0,s=0;

  while(i++<4)

  {

    if(i==2||i==4)continue;

    j=0;

    do{s+=a[i][j];j++;}while(j<4);

  }

  printf(“%d\n”,s);

}

(6)以下程序运行后的输出结果是 gae  。

main()

{chara[]=“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));

}

(7)以下程序运行后的输出结果是 *2*4*6*8*  。

main()

{chara[]=“123456789”,*p;inti=0;

  p=a;

  while(*p)

  {if(i%2==0)*p='*';

    p++;i++;

  }

  puts(a);

}

(8)以下程序中,for循环体执行的次数是 4  。

#define  N2

#define  MN+1

#define  KM+1*M/2

main()

{inti;

  for(i=1;i

  {...}

  ...

}

(9)通过函数求f(x)的累加和,其中f(x)=x2+1

main()

{

  printf(“Thesum=%d\n”,SunFun(10));

}

SunFun(intn)

{

  intx,s=0;

  for(x=0;x<=n;x++)  s+=F( x );

  returns;

}

F(intx)

{  return x*x+1 );}

(10)以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。

请填空。

main()

{inti,a[20],sum,count;

  sum=count=0;

  for(i=0;i<20;i++)  scanf(“%d”, &a[i]   );

  fro(i=0;i<20;i++)

  {if(a>0)

    {count++;

      sum+=  a[i]  ;

    }

  }

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

}

(11)以下程序中,函数sumColumM的功能是:

求出M行N列二维数组每列元素中的最小值,并计算它们的和值。

和值通过形参传回主函数输出。

请填空。

#define  M2

#define  N4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

  for(i=0;i

  {k=0;

    for(j=1;j

      if(a[k][i]>a[j][i])k=j;

    s+= a[k][i]  ;

  }

 *sum    =s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

  SumColumMin( x,&s );

  printf(“%d\n”,s);

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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