C语言期末复习题

目录

一、选择题

二、填空题

三、读程序,写结果

四、改错题

五、编程题


一、选择题

1.以下不是C语言的特点的是(  C  )

A.C语言简洁、紧凑                  B.能够编制出功能复杂的程序

C. C语言可以直接对硬件进行操作     D.C语言移植性好

2.叙述不对的是:                                                 (     D   )

A. 一个C源程序可由一个或多个函数组成

B. 一个C源程序必须包含一个MAIN函数

C. C程序的基本组成单位是函数

D. C程序中,注释说明只能位于一条语句的后面

3.一个c程序的执行是从( A   ).

A.main(    )函数开始,直到main(    )函数结束

B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束

D.main(    )函数开始,直到最后一个函数结束

4.  已知各变量的类型说明如下:

int  k, a, b;

unsinged long w=5;

double x=1.42;

则以下不符合C语言语法的是                                    (       A )

A.  x%(-3)

B.  w+=-2;

C.  k=(a=2,b=3,a+b)

D.  a+=a-=(b=4)*(a=3)

5. 若以下变量均是整形,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为(   B )

A.7          B.8         C.9                D.10

6. 当输入数据的形式为:25,13,10 <回车>时,以下程序的输出结果为           (    D    )

main()

{int x,y,z;

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

      printf(“x+y+z=%d\n”,x+y+z);

}

A. x+y+z=48

B. x+y+z=35

C. x+z=35

D. 不确定值

7. sizeof(float)是(  B  )。

A.一个双精度型表达式               B. 一个整型表达式

C.一种函数调用                     D. 一个不合法的表达式

8. 能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是(   C   

A. (x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)

B. (x>=1)││(x<=10) ││(x.>=200) ││(x<=210)

C. (x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)

D. (x>=1)││(x<=10)&& (x.>=200) ││(x<=210)

解析:根据C语言运算符的优先级,&&要高于||,所以要先算“与”再算“或”,答案为:C

9. 设有说明: char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为(  D   )。

A.float               B.char               C.int                 D.double.

10. 请阅读以下程序:

#include <stdio.h>

main( )

 { int  a=5 , b=0 , c=0;

  if (a=b+c)  printf(“* * *\n”);

  else   printf(“$ $ $\n”);  }

以上程序                                                       (D )

A. 有语法错误不能通过编译

B. 可以通过编译但不能直接通过连接

C. 输出* * *

D. 输出$ $ $

11. 以下说法正确的是(   D ).

A. 输入项可以为一个实型常量(变量),如scanf(“%f”,3.5);

B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);缺变量

C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D. 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

12. C语言中while和do-while循环的主要区别是。                            (    A    )

A. do-while的循环体至少无条件执行一次

B. while 的循环控制条件比do-while的循环控制条件严格

C. do-while允许从外部转到循环体内

D. do-while允许从外部转到循环体内

13. 巳知字母A的ASCII码是65,以下程序的执行结果是(  D  )。

#include<stdio.h>

main()

{

 char c1='A',C2='Y';

 printf("%d,%d\n",c1,c2);

A.A,Y         B.65,65          C.65,90              D.65,89

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

A. 整型常量

B. 整型表达式

C. 整型常量或整型表达式

D. 任何类型的表达式

15. 逻辑运算符两侧运算对象的数据类型(    D).

 A.能是0或1

 B.只能是0或非0正数

 C.只能是整型或字符型数据

 D.可以是任何类型的数据

16. 以下正确的函数定义形式是。                                           ( A  )

A. double fun(int x,int y)

B. double fun(int x;int y)

C. double fun(int x,int y);

D. double fun(int x,y);

17. 以下不正确的if语句形式是                                             (  C  ).

A.if(x>y&&x!=y);

B.if(x==y)x十=y;

C.if(x ! =y)scanf(“%d”,&x) e1se scanf(”%d,&y);

D.if(x<y){x十十;y十十;}

18. 设有定义:int n=0,* p=&n, q; 下列选项中,正确的赋值语句是                ( D    )

A.  p=1 B.  *q=2 C.  *q=p D.  *p=5

19. 阅读以下程序

main()

{

int a=5,b=0,c=0;

if(a=b+c) printf(“***\n”);

else     printf(“$$$\n”);

}

以上程序 (   A).

A.语法有错不能通过编译                      B.可以通过编译但不能通过连接

C.输出***                                   D.输出$$$

20. 系统的标准输入文件是指                                               ( A  )

A. 键盘

B. 显示器

C. 软盘

D. 硬盘

二、填空题

  1. 在C语言中,单目运算符的结合方向(运算方向)是_____自右向左_______。
  2. 表达式8/4*(int)2.5/(int)(1.25*3.7+2.3)值的数据类型为(   int型(整型)         )。
  3. 循环语句for(;;) printf("OK \n");和do { printf("OK\n");} while(0);执行完毕循环,循环次数分别是______无限___________________1_____
  4. 4. 若x为int型变量,则执行以下语句后x的值是(    -14     )

x=7;

x+=x-=x+x;

  1. .结构化程序设计的三种基本结构是:选择结构、循环结构和____顺序结构____________
  2.  有int a=3,b=4,c=5;则表达式a||b+c&&b= =c的值为(   1     )。
  3. 设宏定义#define D (x) x/x, 则引用D(2+3)后的值是______6_________
  4.  在C语言中,二维数组元素在内存中的存放顺序是(   按行存放      )。
  5. 若有定义:double x[3][5];则x数组中行下标的下限为  0   ),列下标的上限为( 4     )。
  6. C语言规定,可执行程序的开始执行点是( 主函数(main函数)        )。

三、读程序,写结果

1. #define   PRICE   30

#include <stdio.h>

void main()

{

     int num,total;

     num=10;

     total=num*PRICE;

     printf("total=%d\n",total);

}

以上程序的输出结果为  total= 300   .

2. #include "stdio.h"

void main( )

{ int a,m=0,n=0,k=0;

 scanf("%d",&a);

switch(a)

{ case 1: m++; break;

case 2:

case 3: n++; break;

case 4:

case 5: k++;

}

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

}

从键盘上输入1,写出程序运行的结果为 m=1,n=0,k=0                                          

3. 以下程序的运行结果是:AB

#include <stdio.h>

void main()

{  char a;

    a='B';

    putchar('\101'); putchar(a);

}

4. 下面程序运行时从键盘上输入15,20,运行结果为__a=15,b=20_____________

#include "stdio.h"

void main( )

{ int a,b,t;

  t = 0;

scanf("%d,%d",&a,&b);

if (a>b)

{ t = a ;a = b ;b = t ;}

printf("a=%d,b=%d\n",a,b) ;

}

5.#include "stdio.h"

void main( )

{ int i,m,p,a[10]={9,8,7,6,1,3,5,18,2,4};

    m=a[0];

    p=0;

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

     if (a[i]<m)

{ m=a[i]; p=i;}

      printf("%d,%d\n",m,p);  

   }

以上程序的输出结果为       m=1,p= 4       

四、改错题

1. #include <stdio.h>

void  main( )

{ int x , y ;

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

   if (x>y;)

   printf(“%d”,x);

   else

   printf(“%d”,y);

}

改为: #include <stdio.h>

void  main( )

{ int x , y ;

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

   if (x>y)

   printf(“%d”,x);

   else

   printf(“%d”,y);

                          If后面分号去了                                 

2 . #include <stdio.h>

void main()

{   char  c;

    c=gets( );

    putchar(c);

}

改为:

#include <stdio.h>

void main()

{ char  c;

    c=getchar( );

    putchar(c);

}      gets改为getchar

解析:gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中,而getchar函数是读取一个字符,包括回车键也会被读成一个字符

3. #include <stdio.h>

void main()

{ int max(int x,int y);

   int a,b,c;

   scanf("%d,%d",&a,&b);

   c=max(a,b);

   printf("Max is %d",c);

}

max(int x, int y)

{ int z;

   z=x>y?x:y;

   return(x);

}

改为:

 #include <stdio.h>

void main()

{ int max(int x,int y);

   int a,b,c;

   scanf("%d,%d",&a,&b);

   c=max(a,b);

   printf("Max is %d",c);

}

max(int x, int y)

{ int z;

   z=x>y?x:y;

   return(z);

}

                x改为z                                           

五、编程题

1.有一函数

 

编一程序,输入一个x值,输出y值。(7分)

#include<stdio.h>
int main()
{
	int x,y;
	printf("请输入x:");
	scanf("%d",&x);
	if(x<0)
		y=-1;
	else if(x==0)
		y=0;
	else
		y=1;
	printf("y=%d",y);
}

2.求一维数组中下标为偶数的元素之和,补全程序                         

   #include "stdio.h"

void main( )

{ int  i,  sum=0   ;            /*请初始化sum为0 */

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

for(i=0; i<8; i=i+2  )         /* 请补充完整循环语句 */

sum+=a[i];                  /* 请用sum保存该数组中下标为偶数的元素之和 */

printf("sum=%d\n",sum);

}

3.从键盘上输入20名学生的C语言成绩,计算出平均成绩,并输出。

#include<stdio.h>
int main()
{   
 int i; 
 double a[20],sum=0.0,ave;
 printf("请输入20个学生成绩:\n");               
    for(i=0;i<20;i++)
    { 
  scanf("%lf",&a[i]);
     sum+=a[i];
 }
 ave=sum/20.0;
 printf("平均成绩为:%.2lf",ave);
 return 0;
}

5. 编程打印出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。如153=13+33+53。

编程提示:定义一个变量作为循环变量,再定义3个变量分别存放三位数的每位数字,在循环体中将一个三位数拆分成个位、十位、百位后判断循环变量的值是否为水仙花数,如果是则输出,否则不输出。程序的基本结构为:

 #include "stdio.h"

  void main( )

{   

int   a,b,c ,j             ;                  /*定义4个整型变量*/

    for( j=100; j<=999; j++ )

{  

a= j%10             ;             /*分离出百位数*/

       b=  j/10%10            ;              /*分离出十位数*/

       c=___j/100_____ _  __ ;               /*分离出个位数*/

      if(j==a*a*a+b*b*b+c*c*c)

      printf(“j=%d”,j) ;

    }

    printf("\n");

  }

6.求二维数组中元素的最大值与最小值    

  4 ,4,34

37,3,12,

5, 6,  5

#include<stdio.h>
int main()
{
   int a[3][3]={{4,4,34},{37,3,12},{5,6,5}};
   int max=a[0][0],min=a[0][0],i,j,t;
   for(i=0;i<=2;i++)
   for(j=0;j<=2;j++)
   {
    if(a[i][j]<min)
    {
     t=a[i][j];
     a[i][j]=min;
     min=t;
 }
 if(a[i][j]>max)
    {
     t=a[i][j];
     a[i][j]=max;
     max=t;
 }
   }
   printf("min=%d\nmax=%d",min,max);
}

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大一c语言期末考试试题及答案汇总 一、选择题(共10题,每题2分,共20分) 1. 下列哪个不是C语言中的数据类型? A)int B)float C)string D)char 答案:C)string 2. 下列哪个不是C语言中的控制语句? A)if B)while C)repeat D)for 答案:C)repeat 3. 下列哪个不是C语言中的逻辑运算符? A)&& B)|| C)! D)** 答案:D)** 4. 下列哪个不是C语言中的关系运算符? A)> B)< C)= D)>= 答案:C)= 5. 在C语言中,如何声明一个整型变量? A)integer x; B)int x; C)x : integer; D)x = int; 答案:B)int x; 6. 在C语言中,如何实现条件语句的多分支选择? A)if...else B)switch...case C)while D)for 答案:B)switch...case 7. 在C语言中,如何实现循环结构? A)if B)switch C)for D)else 答案:C)for 8. 下列哪个不是C语言中的赋值运算符? A)= B)+= C)== D)-= 答案:C)== 9. 在C语言中,如何定义一个字符串变量? A)string s; B)s : string; C)char s[]; D)char[] s; 答案:C)char s[]; 10. C语言程序的入口函数是? A)Main B)main C)start D)begin 答案:B)main 二、填空题(共5题,每题4分,共20分) 1. 在C语言中,用于输入数据的函数是__________。 答案:scanf 2. 在C语言中,用于输出数据的函数是__________。 答案:printf 3. 在C语言中,用于进行整数除法的运算符是__________。 答案:/ 4. 下面关系运算符中表示“大于等于”的是__________。 答案:>= 5. 在C语言中,用于声明一个字符型变量的关键字是__________。 答案:char 三、编程题(共2题,每题30分,共60分) 1. 编写一个C语言程序,实现输入两个整数,然后输出它们的和。 答案:代码略 2. 编写一个C语言程序,实现输出1到100之间所有能被3整除的数字。 答案:代码略 以上就是大一C语言期末考试的试题及答案汇总。希望同学们能够认真复习,顺利通过考试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值