习题一
一.填空题
1.C程序是由( )构成的,一个C程序中至少包含( )。因此,( ) 是C程序的基本单位。 2. 函数体是有符号____开始,符号____结束。函数体当中,前面是变量的____部分,后面变量的____部分。 3.一个C源程序中至少应包括一个_______。
4.在一个C源程序中,注释部分两侧的分界符分别为_____和________。在C语言的每条语句后面都要有____结束
二.判断题
1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。 【 】 2.main函数必须写在一个C程序的最前面。 【 】 3.一个C程序可以包含若干的函数。【 】
4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【 】
5.C程序的注释只能是一行。【 】 6.C程序的注释不能是中文文字信息。【 】 三、选择题
1 一个C程序的执行是从________。
(A)本程序的main函数开始,到main函数结束。
(B)本程序的第一个函数开始,到本程序文件的最后一个函数结束。 (C) 本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序的第一个函数开始,到本程序main函数结束。 2 以下叙述不正确的是_________。
(A)一个C源程序可由一个或多个函数组成。 (B)一个C源程序必须包含一个main函数。 (C) 程序的基本组成单位是函数。
(D)在C程序中,/**/类的注释说明只能位于一条语句的后面 3 C语言规定:在一个源程序中,main函数的位置___。 (A)必须在最开始 (B)必须在所有函数的后面 (C)可以任意 (D)必须在最后 四.程序阅读
1、找出该程序中的错误并改正。 #include float r,s;/*/*r is radius*/*/ r=5.0  s=3.14*r*r; printf(“%f\\n”,s) 五.编程题 1. 利用keil c 集成开发环境建立一个c语言的工程,旋转的MCU型号是STCC52,并在工程内添加一个名为main的c文件,并在c文件中建立一个空的主函数。 习题二(第2、3节知识) 一.选择题 1、合法的用户标识符是 (  ) A) abc   B) !a   C) int    D)sfr 2、 合法的字符常量是 (  ) A) „\\084‟   B) “a”   C) „ab‟     D)96 3、是C语言提供的合法的数据类型关键字(  ) A) Float   B) unsigned int  C) integer   D)Char 4、在以下各组标识符中,合法的标识符是(  ) (1)A)B01    B)table_1     C) 0_t     D) k% (2)A)Fast_   B) void      C)pbl      D) 6、unsigned char a=32,char b=‘A’ 那么表达式 a+b 的数值是 ( ) A) 'A'  B)0   C)-1     D)'a' 7、判断unsigned char  x = 300;x的结果是 ( ) A)赋值非法  B)溢出   C)为300   D)为44 8、为了计算s=10!(即10的阶乘),则s变量应定义为 ( ) A)int    B)unsigned   C)long    D)以上三种类型均可 9、与代数式(x*y)/(u*v) 不等价的C语言表达式是(  ) A)x*y/u*v   B)x*y/u/v    C)x*y/(u*v)    D)x/(u*v)*y 10、在C语言中,数字029是一个(  ) A)八进制数 B)十六进制数 C)十进制数 D)非法数 11、在C语言中,要求参加运算的数必须时整数的运算符是 ( ) A)/     B)*     C)%      D) = 12、假定x和y为float型,则表达式x=2,y=x+3/2的值是 (  ) A)3.500000    B)3    C)2.000000    D)3.000000 13、以下合法的赋值语句是 (  ) A)x=y=100    B)x+y=a+b     C)x+y     D)c=int(a+b) 14、int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为 (  ) A)1   B)2   C)3    D)4 15、若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是(  )   A)①和②    B)②和③    C)①和③     D)③和④ 16、逻辑运算符两侧运算对象的数据类型( ) A)只能是0或1                 B)只能是0或非0正数 C)只能是整型或字符型数据      D)可以是任何类型的数据 二.填空题 1、在C51中,一个unsigned char数据在内存中所占字节数为     ,其数值范围为      ;一个unsigned int数据在内存中所占字节数为     ,其数值范围为     ; 2、C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符不能为                          。 3、有int x=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为              。 4、在C语言中,不同运算符之间运算次序存在      的区别 5、设x=2.5,a=7,y=4.7, 则x+a%3*(int)(x+y)%2/4为        。 6、数学表达式 1<=a<=3      的C语言表达式为             。 7、已知:char a=‟a‟,b=‟b‟,c=‟c‟,unsigned int i;则表达式i=a+b+c的数值为           。 8、已知int a=12,n=5;则:表达式运算后a的值各为             。 a+=a  a-=2  a*=2+3  a/=a+a n%=(n%=2)  a+=a-=a*=a 9、设int a;  float f;   则表达式10+‟a‟+9*f值的数据类型是    。 10、已知a,b,c是一个整数的百位,十位,个位,则该数的表达式是     。 11、若a是int变量,则执行表达式a=25/3%3后,a的值是        。 12、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。   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) 13、C语言提供6种关系运算符,按优先级高低它们分别是      ,      ,      ,      ,        ,      等。 14、C语言提供三种逻辑运算符,按优先级高低它们分别是        ,        ,        。 15、设a=3,b=4,c=5,写出下面各逻辑表达式的值。 表达式                  表达式运算后的值 a+b>c && b==c  !(a>b) && !c || 1 !(a+b) + c –1 && b + c/2 16、将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式                     。 17、已知A=7.5,B=2,C=3.6,表达式A>B && C>A || AB的值是           。 三.程序阅读题 1.写出以下程序的输出结果。         main ( ) { int y=3,x=3,z=1; printf(“%d %d\\n”,(++x,y++),z+2);         } 四.程序填空题 1.下列程序的输出结果是16.00,请填(1)空使程序完整。 main ( ) { int a=9,b=2; float x=[   1   ]  ,  y=1.1 , z;    z=a/2+b*x/y+1/2;    printf(“%5.2f\\n”,z); } 五.编程题 1.已知a,b均是无符号整型变量,写出将a,b两个变量中的值互换的程序来。 习题三(第4、5节知识) 一.选择题 1、C语言对嵌套if语句的规定是:else总是与 (  )   A)其之前最近的if配对      B)第一个if配对 C)缩进位置相同的if配对    D)其之前最近的且尚未配对的if配对 2.下面      是错误的if语句(设int x,a,b;)   A)if (a=b) x++;        B)if (a={ int x=0,y=0,z=0; if (x=y+z) printf(“***”); else printf(“###”);         } A)有语法错误,不能通过编译      B)输出:*** C)可以编译,但不能通过连接,所以不能运行    D)输出:### 4.对下述程序, 是正确的判断。         main ( )         { int x,y; scanf(“%d,%d”,&x,&y); if (x>y)           x=y;y=x; else x++;y++; printf(“%d,%d”,x,y);         } A)有语法错误,不能通过编译    B)若输入3和4,则输出4和5   C)若输入4和3,则输出3和4   D)若输入4和3,则输出4和5 5.下述程序的输出结果是。 main ( ) { int a=0,b=0,c=0;    if (++a>0 | | ++b>0)      ++c; printf(“%d,%d,%d”,a,b,c); } A)0,0,0    B)1,1,1    C)1,0,1     D)0,1,1 6.以下程序输出结果是       。 main ( ) { int x=1,y=0,a=0,b=0;    switch(x) { case 1:switch (y) { case 0 : a++ ; break ;               case 1 : b++ ; break ; } case 2:a++; b++; break;       case 3:a++; b++; } printf(“a=%d,b=%d”,a,b); } A)a=1,b=0    B)a=2,b=1    C)a=1,b=1    D)a=2,b=2 7.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 。 if (aif (c 8.若int i=0;执行下列程序后,变量i的正确结果是 。 switch (i) {     case 9: i+=1 ;     case 10: i+=1 ;     case 11: i+=1 ;     default : i+=1 ; } A)10    B)11     C)12     D)13 二.填空题 1.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:                         。 2.C语句可以分为       ,    ,    ,               和     等5种类型。 3.C语句的基本结构有   种,分别是_______ __________ __________ 4.一个表达式要构成一个C语句,必须           。 5.复合语句是用一对           界定的语句块。 三.判断题 1.if语句中的表达式不限于逻辑表达式,可以是任意的数值类型。【 】 2.switch语句的case表达式必须是常量表达式。【 】 3.if语句,switch语句可以嵌套,而且嵌套的层数没有。【 】 4.switch语句的各个case和default的出现次序不影响执行结果。【 】 5.多个case可以执行相同的程序段。【 】 6.内层break语句可以终止嵌套的switch,使最外层的switch结束。【 】 7.switch语句的case分支可以使用{ }复合语句,多个语句序列。【 】 8.switch语句的表达式与case表达式的类型必须一致。【 】 四.简答题 1.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 2.请将以下语句改成switch语句。 if ((s>0) && (s<=10)) if ((s>=3) && (s<=6)) x=2;   else if ((s>1) && (s>8)) x=3; else x=1; else x=0; 五.程序阅读题 1.写出以下程序的运行结果。 main ( ) { int a=2,b=7,c=5;     switch (a>0) { case 1: switch (b<0) { case 1: printf(“@”); break ;               case 2: printf(“!”); break ;              } case 0: switch (c==5) { case 1: pritnf(“*”) ; break ;               case 2: printf(“#”) ; break ;               default : printf(“#”) ; break ;              } default : printf(“&”);     } printf(“\\n”); } 六.程序判断题 1.下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的值,例如输入3+5↙得到结果8;请判断下面程序的正误,如果错误请改正过来。     main ( )     { float x,y,r;          char op ; scanf(“%f%c%f”,&x,&op,&y);          switch (op) { case „+‟ : r=x+y ;             case „-‟ : r=x+y ;             case „*‟ : r=x+y ;             case „/‟ : r=x+y ;         } printf(“%f”,r); } 七.编程题 1.有三个整数a,b,c,由键盘输入,输出其中最大的数。 2.给出一百分制成绩,要求输出成绩等级‟A‟,‟B‟,‟C‟,‟D‟,‟E‟。90分以上为‟A‟,80-分为‟B‟,70-79分为‟C‟,60-69分为‟D‟,60分以下为‟E‟。 3.给一个不多于5位的正整数,要求分别输出每一位数字. 习题五 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是        。 A)while循环执行10次         B)循环是无限循环 C)循环题语句一次也不执行     D)循环体语句执行一次 2.以下程序段的循环次数是           。   for (i=2; i==0; ) printf(“%d” ,  i--) ; A)无限次        B)0次     C)1次       D)2次 3.以下不是死循环的程序段是 。 A) int i=100;                       B)for ( ; ; ) ;          while (1) { i=i%100+1 ; if (i>100) break ; } C) int k=0;                       D)int s=36; do { ++k; } while (k>=0);             while (s) ; --s ; 4.下述语句执行后,变量k的值是 。 int k=1; while (k++<10); A)10        B)11       C)9           D)无限循环,值不定 5.下面程序的输出结果是 ( )  main ( ) { int k=0,m=0,i,j;  for (i=0; i<2; i++) {     for (j=0; j<3; j++)         k++ ;        k-=j ;  } m = i+j ; printf(“k=%d,m=%d”,k,m) ; } A)k=0,m=3   B)k=0,m=5   C)k=1,m=3   D)k=1,m=5 6.语句while (!E); 括号中的表达式!E等价于           。   A)E==0    B)E!=1    C)E!=0    D)E==1 7.下述程序段的运行结果是         。 int a=1,b=2, c=3, t; while (aA)1,2,0        B)2,1,0        C)1,2,1        D)2,1,1 8.以下for循环的执行次数是         。 for (x=0,y=0; (y=123) && (x<4) ; x++) ; A)无限循环  B)循环次数不定   C)4次   D)3次 9.下面for循环语句 。         int i,k; for (i=0, k=-1; k=1; i++, k++)            printf(“***”); A)判断循环结束的条件非法    B)是无限循环   C)只循环一次                D)一次也不循环 10.执行语句for (i=1;i++<4;) ; 后变量i的值是       。   A)3     B)4        C)5          D)不定 二.填空题 1.C语言三个循环语句分别是     语句,    语句和     语句。 2.至少执行一次循环体的循环语句是       。 三.判断题 1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。【 】 2.在实际编程中,do-while循环完全可以用for循环替换。【 】 3.continue语句只能用于三个循环语句中。【 】 4.do-while循环的while后的分号可以省略。【 】 四.程序阅读题 1.写出下面程序运行的结果。 main ( ) { int x,i ; for (i=1 ; i<=100 ; i++) {       x=i; if (++x%2==0)          if (++x%3==0)             if(++x%7==0)                printf(“%d ”,x) ;    } 2.写出下面程序运行的结果。 main ( ) { int k=1,n=263 ; do { k*= n%10 ; n/=10 ; } while (n) ;    printf(“%d\\n”,k); } 3.写出下面程序运行的结果。 main ( ) { int y=2,a=1;    while (y--!=-1)       do {          a*=y ;          a++ ; } while (y--) ; printf(“%d,%d\\n”,a,y); } 六.程序填空题 1.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。 main ( ) { int n,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(“%dd”,n);   } } 2.下面程序按公式 求和并输出结果,请填(3)空使程序完整。 main ( ) { 【1 】;      int k ; for (k=1 ; k<=100 ; k++)         s+=k ; for (k=1 ; k<=50 ; k++)         s+=k*k ; for (k=1 ; k<=10 ; k++)         s+=【2 】; printf(“sum=【3 】”,s); } 七.编程题 1. 求 (即求1!+2!+3!+…+19!+20!)。 习题七 一.选择题 1.以下正确的说法是。 A)用户若需要调用标准库函数,调用前必须重新定义 B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C)系统不允许用户重新定义标准库函数 D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。 2.以下正确的函数定义是。 A)double fun(int x, int y)      B)double fun(int x,y)    { z=x+y ; return z ; }             { int z ; return z ;} C)fun (x,y)                D)double fun (int x, int y)    { int x, y ; double z ;            { double z ; z=x+y ; return z ; }              return z ; } 3.以下正确的说法是。 A)实参和与其对应的形参各占用的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用相同的存储单元 D)形参时虚拟的,不占用存储单元 4.以下正确的函数定义是 。 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) 5.若调用一个有返回值的函数,且此函数中没有return语句,则正确的说法是 。 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的整数值 6.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是。 A)地址传递 B)值传递 C)有实参传给形参,再由形参传给实参 D)由用户指定传递方式 7.C语言规定,函数返回值的类型是由 决定的。 A)return语句中的表达式类型   B)调用该函数时的主调函数类型 C)调用该函数时由系统临时   D)在定义函数时所指定的函数类型 8.如果在一个函数中定义了一个变量,则该变量。 A)只在本文件中有定义    B)在该函数中有定义 C)在本程序范围内有定义      D)为非法变量 9.以下不正确的说法是。 A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有定义 D)在函数内的复合语句中定义的变量在本函数范围内有定义 10.下面程序的输出是。     int i=2 ; printf(“%d%d%d”,i*=2,++i,i++) ; A) 8,4,2     B)8,4,3      C)4,4,5      D)4,5,6 三.程序阅读题 1.写出下面程序的功能。 func (int n) { int i,j,k; i=n/100; j=n/10-i*10 ; k=n%10 ; if (i*100+j*10+k) == i*i*i+j*j*j+k*k*k) return n ;    return 0; } main ( ) { int n,k ; for (n=100; n<1000 ; n++) if (k=func(n)) printf(“%d”,k) ; } 四.程序判断题 1.下面add函数求两个参数的和;判断下面程序的正误,如果错误请改正过来。 void add(int a,int b) { int c ;    c = a + b;    return (c) ;  } 2.下面函数fun的功能是:将长整型数中偶数位置上的数依次取出,构成一个新数返回,例如,当s中的数为:87653142时,则返回的数为:82;判断下面程序的正误,如果错误请改正过来。 long fun(long s) { long t , sl=1;    int d ;    t = 0 ; while ( s > 0 ) {       d = s%10;       if (d%2=0) {         t=d* sl+ t;         sl *= 10;       } s \\= 10;          } return (t); } 习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是     。 A)整型常量    B)整型表达式 C)整形常量或整形表达式     C)任何类型的表达式 3.若有定义:int a[10],则对数组a元素的正确引用是       。 A)a[10]    B)a[3.5]    C)a(5)     D)a[10-10] 4.以下能对一维数组a进行正确初始化的语句是       。 A)int a[10]={0,0,0,0,0};      B)int a[10]={} ; C)int a[ ] = {0} ;            D)int a[10]={10*1} ; 12.以下不正确的定义语句是 。 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9} ; C)char c1[ ]={„1‟,‟2‟,‟3‟,‟4‟,‟5‟} ; D)char c2[ ]={„\\x10‟,‟\\xa‟,‟\\x8‟} ;              
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务
