首页 c语言基础知识复习题

c语言基础知识复习题

举报
开通vip

c语言基础知识复习题 第一章C语言概述一、选择题:1、一个C程序的执行是从(A)。A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束 2、在C语言中,每个语句必须以(D)结束。A. 回车符   B. 冒号   C. 逗号   D. ...

c语言基础知识复习题
第一章C语言概述一、选择题:1、一个C程序的执行是从(A)。A本程序的main 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束 2、在C语言中,每个语句必须以(D)结束。A. 回车符   B. 冒号   C. 逗号   D. 分号 3、C语言规定:在一个源程序中,main函数的位置(C)。A.必须在最开始        B.必须在系统调用的库函数的后面C.可以任意           D. 必须在最后 4、一个C语言程序是由(B)。A.一个主程序和若干子程序组成  B.函数组成C.若干过程组成            D.若干子程序组成 5、下列说法中错误的是( D )。A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行 6、用C语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。A. 生成可执行目标文件   B. 生成目标文件C. 输出运行结果       D. 自动保存源文件   二、填空题:1、C语言只有32 个关键字和 9  种控制语句。2、每个源程序有且只有一个 main  函数,系统总是从该函数开始执行C语言程序。3、C语言程序的注释可以出现在程序中的任何地方,它总是以 \*   符号作为开始标记,以  */   符号作为结束标记。4、C语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函   数  printf   完成的。5、系统默认的C语言源程序文件的扩展名是.c  ,经过编译后生成的目标文件的扩展名是.obj ,经过连接后生成的可执行文件的扩展名是.exe   。6、C语言的标识符只能由字母、数字和 下划线  三种字符组成。 第三章数据类型、运算符和 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式一、选择题:1、以下选项中,不正确的C语言浮点型常量是(C)。A.160.   B.0.12   C.2e4.2    D. 0.02、以下选项中,(D)是不正确的C语言字符型常量。A.'a'     B.'\x41'    C.'\101'    D."a"3、在C语言中,字符型数据在计算机内存中,以字符的(C)形式存储。A. 原码    B. 反码   C.ASCII码   D.BCD码4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C )。x=(i=4,j=16,k=32)A.4      B.16     C.32     D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。A. 算术运算、赋值运算、关系运算   B. 算术运算、关系运算、赋值运算C. 关系运算、赋值运算、算术运算   D. 关系运算、算术运算、赋值运算6、若有代数式,则不正确的C语言表达式是(C)。A.a/b/c*e*3  B.3*a*e/b/c   C.3*a*e/b*c   D.a*e/c/b*37、表达式!x||a==b等效于( D)。A.!((x||a)==b)   B.!(x||y)==b   C.!(x||(a==b))   D.(!x)||(a==b)8、设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是(A)。A.0,0   B.0,1   C.1,0   D.1,19、设有语句inta=3;,则执行了语句a+=a-=a*=a;后,变量a的值是(B)。A.3   B.0   C.9   D.-1210、在以下一组运算符中,优先级最低的运算符是( D)。A.*   B.!=   C.+   D.= 11、设整型变量i值为2,表达式(++i)+(++i)+(++i)的结果是( B)。A.6   B.12   C.15   D. 表达式出错12、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(C)。A.1   B.2   C.2.0   D.2.513、sizeof(double)的结果值是( A )。A.8   B.4   C.2   D. 出错14、设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为(D)。A.4   B.3   C.2   D.115、设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是(A)。A.10<a<15              B.a==11||a==12||a==13||a==14C.a>10&&a<15           D.!(a<=10)&&!(a>=15)16、设f是实型变量,下列表达式中不是逗号表达式的是( D)。A.f=3.2,1.0   B.f>0,f<10   C.f=2.0,f>0   D.f=(3.2,1.0)  17、表达式18/4*sqrt(4.0)/8值的数据类型是(C )。A.int   B.float   C.double   D.不确定18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句C2=’A’+’6’-‘3’;后c2中的值是(A)。A.D   B.68   C.不确定的值   D.C19、以下用户标识符中,合法的是(B)。A.int     B.nit     C.123    D.a+b20、C语言中,要求运算对象只能为整数的运算符是(A )。A.%     B./      C.>      D.*21、若有说明语句:charc='\72';则变量c在内存占用的字节数是(A)。A.1   B.2   C.3   D.422、字符串"ABC"在内存占用的字节数是( B)。A.3   B.4   C.6   D.823、要为字符型变量a赋初值,下列语句中哪一个是正确的(B)。A.chara="3";  B.chara=’3’;   C.chara=%;   D.chara=*;24、下列不正确的转义字符是(C)。A.\\   B.\'   C.074   D.\0 二、填空题:1、C语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。3、设c='w',a=1,b=2,d=-5, 则表达式'x'+1>c,'y'!=c+2,-a-5*b<=d+1,b==a=2的值分别为   1   、   0   、   1   、  1   。4、设floatx=2.5,y=4.7;inta=7;,表达式x+a%3*(int)(x+y)%2/4的值为 2.5 。5、判断变量a、b的值均不为0的逻辑表达式为a!=0&&b!=0  。6、求解赋值表达式a=(b=10)%(c=6),表达式值、a、b、c的值依次为  4,4,10,6 。7、求解逗号表达式x=a=3,6*a后,表达式值、x、a的值依次为18,3,3  。8、数学式a/(b*c)的C语言表达式  a/b/c  。 三、编程题:1、设长方形的高为1.5,宽为2.3,编程求该长方形的周长和面积。2、编写一个程序,将大写字母A转换为小写字母a。1.main(){floatx=1.5,y=2.3;printf(“areais%6.2f\n”,x*y);}2.main(){charc=’A’;printf(“%d”,c+32);} 顺序结构答案一、单项选择题AADABCCBBD 二、程序改错题1.正确的程序为#include"stdio.h"main(){   char c;  getchar(c);  putchar('\007'); /*鸣笛*/  putchar();}2.正确的程序为main(){inta,b,s,l; scanf("%d,%d",&a,&b); s=a*b;l=2*(a+b); printf("l=%d,s=%d\n",l,s); } 三、写出程序运行结果1.682.x=4y=11 四、编程题1.main(){inta,b,c,sum;floatave;scanf(“%d%d%d”,&a,&b,&c);sum=a+b+c;  ave=sum/3.0;printf(“sum=%d,ave=%.2f\n”,sum,ave);} 五、选做题1.voidmain() { floata,b,temp;  printf("inputaandb:");  scanf("%d,%d",&a,&b);  temp=a;a=b;b=temp;  printf("a=%d,b=%d\n",a,b); }选择结构答案一、单项选择题1.B 2.A 3.D 4.C 5.D 6.B 7.C 二、填空题1.   5 5 4  5 5 4  3 3 42.   4 03.   VeryGood     Good   VeryGood   Fail   Pass   Pass 三、阅读程序,写出运行结果1.  10,4,3; -1 3 6 1四、程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 题1.main(){inta,b,x,y; scanf(“%d%d”,&a,&b); x=a*a+b*b; if(x>100) {y=x/100;printf(“%d”,y);} elseprintf(“%d”,a+b);} 2.if结构main(){floatt;charc;printf(“inputscore,maxas100:\n”);scanf(“%f”,&t);if(t>=90)ch=’A’;elseif(t>=80)ch=’B’;elseif(t>=70)ch=’C’;elseif(t>=60)ch=’D’;elsech=’E’;printf(“Grade=%d\n”,ch);}switch结构main(){floatt;charc;printf(“inputscore,maxas100:\n”);scanf(“%f”,&t);switch(t/10){case10:case9:ch=’A’;break;case8:ch=’B’;break;case7:ch=’C’;break;case6:ch=’D’;break;case5:ch=’E’;}printf(“Grade=%d\n”,ch);} 五、选做题1.main(){inta,b,c,t;scanf(“%d%d%d”,&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf(“%d,%d,%d\n”,a,b,c);} 2.switch((s>0)&&(s<=10)) {case1:switch((s>=3)&&(s<=6)) {case1:x=2;break;         case0:switch(s>1)||(s>8)) {case1:x=3;break;        case0:x=1;break;       }}break;case0:x=0;break;} 循环结构答案一、选择题1.B 2.A 3.A 4.C 5.A 6.B 7.A 8.C9.D 10.D 二、填空题1.x1  x1/2-22.ch=getchar() ch>=’A’&&ch<=’Z’3.s=s+t*i  t=-t 三、阅读下列程序,写出程序运行的输出结果1.8522. 89213. 54. SUM=2468 四、程序改错1.main(){inti=200,n=0;/*n用来记录每行已打印数的个数*/ while(i<=300) {if(i%7==0)  {//break;   printf("%5d",i);   n=n+1;    if(n==5)  /*满5个换行*/     {printf("\n"); n=0; } } i++; }} 2).main(){inti,s=0,t=1;  for(i=1;i<=7;i++)  {   t=t*i;   s=s+t;  } printf("sum=%d\n",s); } 五、程序设计题1.main(){intx,g,s,b;for(x=100;x<1000;x++){b=x/100;s=x%100/10;g=x%10;if((g*g*g+s*s*s+b*b*b)==x)printf(“%d\n”,x);}} 2.main(){inti,s=0,f=1;for(i=2;i<80;i++){s=s+f*(i-1)/i;f=-f;}printf(s=%f\n”,s);} 六、选做题1.main(){floats=0,m=2.0,n=1.0,p; inti;for(i=1;i<=20;i++){s=s+m/n;p=m;m=m+n;n=p;}printf(s=%f\n”,s);} 2.#include<stdio.h> main() {inti,j,k,s=1;for(i=1;i<=20;i++) for(j=1;j<=50;j++)  {k=100-i*5-j*2;   if(k>=0)     {printf(“%2d%2d%2d”,i,j,k);      s=s+1;       if(s%5==0) printf(“\n”);      }  }} 第7章 数组习题A卷1.单项选择题(1)inta[4]={5,3,8,9};其中a[3]的值为(   )。DA.5      B.3      C.8      D.9(2)以下4个字符串函数中,(   )所在的头文件与其他3个不同。AA.gets    B.strcpy    C.strlen    D.strcmp(3)以下4个数组定义中,(   )是错误的。DA.inta[7];     B.#defineN5 longb[N];   C.charc[5];   D. intn,d[n];(4)对字符数组进行初始化,(   )形式是错误。BA.charc1[]={'1','2','3'};   B.charc2[]=123;   C.charc3[]={'1','2','3','\0'};   D.charc4[]="123";(5)在数组中,数组名表示(   )。AA.数组第1个元素的首地址    B.数组第2个元素的首地址C.数组所有元素的首地址       D.数组最后1个元素的首地址(6)若有以下数组说明,则数值最小的和最大的元素下标分别是(   )。Binta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A.1,12   B.0,11   C.1,11   D.0,12(7)若有以下说明,则数值为4的表达式是(   )。 Dinta[12]={1,2,3,4,5,6,7,8,9,10,11,12};  charc=’a’,d,g; A.a[g-c]   B.a[4]   C.a['d'-'c']   D.a['d'-c]  (8)设有定义:chars[12]="string"; 则printf("%d\n",strlen(s)); 的输出是(   )。AA.6   B.7   C.11   D.12(9)设有定义:chars[12]="string"; 则printf("%d\n",sizeof(s));的输出是(   )。DA.6   B.7   C.11   D.12(10)合法的数组定义是(   )。AA.chara[]="string";  B.inta[5]={0,1,2,3,4,5};   C.chara="string";   D.chara[]={0,1,2,3,4,5}(11)合法的数组定义是(   )。DA.inta[3][]={0,1,2,3,4,5};   B.inta[][3]={0,1,2,3,4};C.inta[2][3]={0,1,2,3,4,5,6};  D.inta[2][3]={0,1,2,3,4,5,};(12)下列语句中,正确的是(   )。DA.chara[3][]={'abc','1'};  B.chara[][3]={'abc','1'};C.chara[3][]={'a',"1"};   D.chara[][3]={"a","1"};(13)下列定义的字符数组中,输出printf("%s\n",str[2]);的输出是(   )。Cstaticstr[3][20]={"basic","foxpro", "windows"}; A.basic   B.foxpro   C.windows  D. 输出语句出错(14)下列各语句定义了数组,其中哪一个是不正确的(   )。CA.chara[3][10]={"China","American","Asia"};  B.intx[2][2]={1,2,3,4};C.floatx[2][]={1,2,4,6,8,10};        D.intm[][3]={1,2,3,4,5,6};(15) 数组定义为inta[3][2]={1,2,3,4,5,6},值为6的数组元素是(   )。BA.a[3][2]      B.a[2][1]  C.a[1][2]      D.a[2][3](16)下面的程序中哪一行有错误(   )。D#include<stdio.h>main(){ floatarray[5]={0.0};      //第A行 inti; for(i=0;i<5;i++)  scanf("%f",&array[i]); for(i=1;i<5;i++)  array[0]=array[0]+array[i];//第B行 printf("%f\n",array[0]);   //第C行}  A.第A行  B.第B行  C.第C行  D.没有(17)下面哪一项是不正确的字符串赋值或赋初值的方式(   )。C  A.char*str;str="string";  B.charstr[7]={'s','t','r','i','n','g'};  C.charstr1[10];str1="string";  D.charstr1[]="string",str2[]="12345678";(18)若有以下说明和语句,则输出结果是哪一项(   )。C  (strlen(s)为求字符串s的长度的函数)  chars[12]="abook!";  printf("%d",strlen(s));  A.12  B.8  C.7  D.11(19)若有以下说明和语句,则输出结果是(   )。B (strlen(s)为求字符串s的长度的函数)  charsp[]="\t\v\\\0will\n";     printf("%d",strlen(sp));  A.14   B.3   C.9   D.字符串中有非法字符(20)若有以下说明和语句,则输出结果是(   )。C  charstr[]="\"c:\\abc.dat\"";  printf("%s",str);A.字符串中有非法字符   B.\"c:\\abc.dat\"    C."c:\abc.dat"    D."c:\\abc.dat" 2.填空题(1)C语言中,数组的各元素必须具有相同的      ,元素的下标下限为       ,下标必须是正整数、0、或者      。但在程序执行过程中,不检查元素下标是否      。数据类型,0,符号常量,越界(2)C语言中,数组在内存中占一片      的存储区,由       代表它的首地址。数组名是一个      常量,不能对它进行赋值运算。连续,数组名,地址(3)执行staticintb[5],a[][3]={1,2,3,4,5,6};后,b[4]=    ,a[1][2]=    。0,6(4)设有定义语句staticinta[3][4]={{1},{2},{3}};则a[1][0]值为     ,a[1][1]值为     ,a[2][1]的值为       。2,0,0(5)如定义语句为chara[]="windows",b[]="95";,语句printf("%s",strcat(a,b));的输出结果为      。Windows95(6)根据以下说明,写出正确的说明语句:men是一个有10个整型元素的数组。                 step是一个有4个实型元素的数组,元素值分别为1.9,-2.33,0,20.6。                         grid是一个二维数组,共有4行,10列整型元素。                          intmesh[10];  floatstep[4]={1.9,-2.33,0,20.6};  intgrid[4][10];(7)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,正确的说明语句为:                 。该数组下标的取值范围是从___到___(从小到大)。用scanf函数输入数组的第二个元素表示为:                。用赋值语句把39存入第一个元素表示为:              。把第六个和第四个元素之和存入第一个元素表示为:                       。intarray[10]={9,4,7,49,32,-5}; 0 9 scanf("%d",&array[1]); array[0]=39; array[0]=array[5]+array[3];(8)写出以下初始化数组的长度:①intchn[3];数组chn的长度为___。②floatisa[]={1.0,2.0,3.0,4.0,5.0};数组isa的长度为___。③intdoom[8];数组doom的长度为___。④floatpci[4][2];数组pci的长度为___。⑤intast[3][3];数组ast的长度为___。⑥intatt[3][4];数组att的长度为___。⑦floatdell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell的长度为___。  6 20 16 32 18 24 36(9)若有以下整型的a数组,数组元素和它们得值如下所示: 数组元素: a[0]a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素的值: 9   4   12  8   2   10   7   5   1   3  ①请写出对该数组的说明,并赋以上初值。                           ②该数组的最小下标值为___,最大下标值为___。③写出下面各式的值:a[a[9]]的值为___;a[a[4]+a[8]]的值为___。inta[10]={9,4,12,8,2,10,7,5,1,3};   0  9   8  8(10)字符串"ab\n\\012/\\\""的长度为___。10 3.判断题(×)(1)C允许对数组的大小作动态定义,即可用变量定义数组的大小。(×)(2)字符数组不要求它的最后一个字符为‘\0’,甚至可以不包含‘\0’。(×)(3)数组定义inta[10];也可以写成inta(10);。(√)(4)在对全部数组元素赋初值时,可以不指定数组长度。(×)(5)定义s为5×6(5行6列)的数组可写成floata[5,6];(√)(6)数组定义inta[10];表示数组名为a,此数组有10个元素。(×)(7)数组定义inta[10];表示数组名为a,此数组有10个元素,第10个元素为a[10]。(√)(8)staticcharc[]={“abook”};与staticcharc[]=“abook”;等价。(×)(9)staticcharc[]={'a','','b','o','o','k','\0'};与staticcharc[]={'a','','b','o','o','k'};等价。(×)(10)设已有说明:staticcharc1[10],c2[10];下面程序片段是合法的。c1={“book”};c2=c1; 4.程序填空题(1)输入20个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。#include<stdio.h>voidmain(){ floata[20],pjz=0,s,t;inti,k;                        for(i=0;i<20;i++)pjz+=a[i];           s=fabs(a[0]-pjz); for(i=1;i<20;i++)   if(fabs(a[i]-pjz)<s)  {     s=fabs(a[i]-pjz);t=a[i];  }                       }--------------------------------------------------------------------------------for(i=0;i<20;i++)scanf(“%f”,&a[i]);pjz/=20;printf(“%f,%f\n”,piz,t); (2)以下程序以每行10个数据的形式输出a数组,请填空。 voidmain(){ inta[50],i; printf("输入50个整数:"); for(i=0;i<50;i++) scanf("%d",         ); for(i=1;i<=50;i++)   {if(         )    printf("%3d\n",       );    printf("%3d",a[i-1]); }}&a[i]i%10==0 a[i-1] (3) 下面程序的功能是输出数组s中最大元素的下标,请填空。voidmain(){ intk,p; ints[]={1,-9,7,2,-10,3}; for(p=0,k=p;p<6;p++)      if(s[p]>s[k])       ; printf("%d\n",k);} k=p (4) 这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数的和及它们的平均值。请填空。  voidmain()  {    chararray   ;    intmax,min,average,sum;    inti;    for(i=0;i<   ;i++)    {      printf("请输入第%d个数:",i+1);      scanf("%d",            );    }    max=array[0];    min=array[0];    for(i=0;i<=   ;i++)    {      if(max<array[i])                                  if(min>array[i])                                  sum=               ;    }    average=               ;    printf("20个数中最大值是%d,",max);    printf("最小值是%d,",min);    printf("和是%d,",sum);    printf("平均值是%d.\n",average);}[20]  20  &array[i]  19  max=array[i];  min=array[i];  sum+array[i]  sum/20 B卷5.阅读程序,分析程序的功能。(1)#include<stdio.h>#include<string.h>voidmain() { chars[80];  inti; for(i=0;i<80;i++)  {       s[i]=getchar();      if(s[i]=='\n')break;  }  s[i]='\0'; i=0;  while(s[i]) putchar(s[i++]);  putchar(‘\n’);}从键盘输入一个字符串,并逐一输出 (2)#include<stdio.h>#include<string.h>voidmain(){ char str[10][80],c[80]; int i; for(i=0;i<10;i++) gets(str[i]); strcpy(c,str[0]); for(i=1;i<10;i++) if(strlen(c)<strlen(str[i]))strcpy(c,str[i]); printf("%s\n",c); printf("%d\n",strlen(c));}从键盘输入若干字符串,找到其中最长的一个输出及它的长度 (3)#include<stdio.h>#include<string.h>voidmain(){ chara[10][80],c[80]; int i,j,k; for(i=0;i<10;i++) gets(a[i]); for(i=0;i<9;i++)  {  k=i;  for(j=i+1;j<10;j++)      if(strcmp(a[j],a[k])<0) k=j;  if(k!=i)       {strcpy(c,a[i]);strcpy(a[i],a[k]);strcpy(a[k],c);}             //字符串交换   } for(i=0;i<10;i++) puts(a[i]);}从键盘输入若干字符串,并将它们按大到小顺序排好再输出 (4)阅读程序,写出运行结果#include<stdio.h>voidmain(){  inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;  for(i=0;i<6;i++)  {    for(j=0;j<6;j++)if(a[i]==b[j])break;    if(j<6)printf("%d",a[i]);  }  printf("\n");}4252716 (5)阅读程序,写出运行结果。#include<stdio.h>voidmain(){  chara[8],temp;intj,k;                     for(j=0;j<7;j++)a[j]='a'+j; a[7]='\0';     for(j=0;j<3;j++)  {    temp=a[6];        for(k=6;k>0;k--)a[k]=a[k-1];          a[0]=temp;    printf("%s\n",a);  }}gabcdeffgabcdeefgabcd (6) 阅读下列程序,写出程序运行的输出结果。#include<stdio.h>#include<string.h>voidmain(){  charstr1[]="*******";                  for(inti=0;i<4;i++)  {   printf("%s\n",str1);                     str1[i]='';   str1[strlen(str1)-1]='\0';  }} **************** (7)该程序的运行结果是:min=     ,m=       ,n=         。  voidmain()  {  floatarray[4][3]={      {3.4,-5.6,56.7},      {56.8,999.,-.0123},      {0.45,-5.77,123.5},      {43.4,0,111.2}    };    inti,j;    intmin;    intm,n;    min=array[0][0];    m=0;n=0;    for(i=0;i<3;i++)    for(j=0;j<4;j++)      if(min>array[i][j])      {       min=array[i][j];       m=i;n=j;      }    printf("min=%d,m=%d,n=%d\n",min,m,n);  }-5.77 2 1 (8)写出下面这个程序的输出结果:voidmain(){ charstr[]="ABCDEFGHIJKL"; printf("%s\n",str);    屏幕上显示                      printf("%s\n",&str[4]);  屏幕上显示                      str[2]=str[5]; printf("%s\n",str);    屏幕上显示                      str[9]='\0'; printf("%s\n",str);    屏幕上显示                     }ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI (9)读懂下面的程序并填空。voidmain(){ charstr[80]; inti=0; gets(str); while(str[i]!=0) {  if(str[i]>='a'&&str<='z')    str[i]-=32;  i++; } puts(str);} 程序运行时如果输入upcase,屏幕显示                          程序运行时如果输入Aa1Bb2Cc3,屏幕显示                      UPCASEAA1BB2CC第8章 函数习题A卷1.单项选择题(1)C语言总是从   函数开始执行。 AA.main      B. 处于最前的  C.处于最后的   D. 随机选一个(2)函数在定义时,省略函数类型说明符,则该函数值的类型为   。AA.int     B.float    C.long    D.double(2)以下   函数,真正地没有返回值。 BA.inta(){inta=2;return(a);}      B.voidb(){printf("c");}C.inta(){inta=2;returna;}         D. 以上都是(3)在C语言中,有关函数的说法,以下正确的是   。AA. 函数可嵌套定义,也可嵌套调用    B. 函数可嵌套定义,但不可嵌套调用C. 函数不可嵌套定义,但可嵌套调用   D. 函数不可嵌套定义,也不可嵌套调用(4)以下函数调用语句中,含有实参的个数为   。Cfun((2,3),(4,5+6,7));A.1      B.2      C.5      D.6(5)函数调用可以在   。DA. 函数表达式中      B. 函数语句中   C. 函数参数中    D. 以上都是(6)被调函数返回给主调函数的值称为    。CA. 形参    B. 实参    C. 返回值   D. 参数(7)     ,可以不进行函数类型说明。DA. 被调函数的返回值是整型或字符型时    B. 被调函数的定义在主调函数定义之前时C. 在所有函数定义前,已在函数外预先说明了被调函数类型  D. 以上都是 (8)被调函数通过   语句,将值返回给主调函数。DA.if     B.for     C.while    D.return(9)被调函数调用结束后,返回到   。DA.主调函数中该被调函数调用语句处      B.主函数中该被调函数调用语句处   C.主调函数中该被调函数调用语句的前一语句D.主调函数中该被调函数调用语句的后一语句(10)以下对C语言函数的有关描述中,正确的是   。AA.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中(11)C语言中函数的隐含存储类型是   。 CA.auto   B.static   C.extern  D. 无存储类型(12)能把函数处理结果的两个数据返回给主调函数,在下面的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 中不正确的是   。AA. return这两个数         B.形参用两个元素的数组C. 形参用两个这种数据类型的指针    D. 用两个全局变量(13)C语言可执行程序从什么地方开始执行(   )。CA.程序中第一条可执行语句   B.程序中第一个函数C.程序中的main函数       D.包含文件中的第一个函数(14)有一个函数原型如下所示,则该函数的返回类型为(   )。C  abc(floatx,floaty);A.void  B.double  C.int  D.float 2.填空题(1) 变量的作用域主要取决于变量     ,变量的生存期既取决于变量      ,又取决于变量      。所处的位置,所处的位置,存储类型(2) 说明变量时,若省略存储类型符,系统默认其为      存储类别,该存储类别的类型符为:      。动态,auto(3) 静态型局部变量的作用域是      ,生存期是       。它所在的局部,整个程序(4) 函数中的形参和调用时的实参都是数组名时,传递方式为      ,都是变量时,传递方式为      。址传递,值传递(5) 函数的形式参数的作用域为      ,全局的外部变量和函数体内定义的局部变量重名时,      _________变量优先。该函数中,局部(6) 若自定义函数要求返回一个值,则应在该函数体中有一条      语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符   。 return,void(7) 若函数的形式参数是指针类型,则实参可以是       或       。指针,数组名(8) 函数的参数为char*类型时,形参与实参结合的传递方式为      。址传递(9) 函数的实参为常量时,形参与实参结合的传递方式为      。值传递(10)下面这个函数的功能是求两个整数的积,并通过形参传回结果,请填空。int  int  int*  *resultvoidmul(___x,___y,___result){ ___=x*y;} 3.判断题(×)(1)函数说明指的是在程序中设定一个函数模块。(√)(2)形参只有在被调用时才分配存储空间。(×)(3) 在C的函数中,最好使用全局变量。(×)(4)在调用函数时,实参传值给形参,调用结束时,形参值传给实参。(√)(5)所有函数定义都是并行的,相互独立的。(×)(6) 函数的隐含存储类型是extern。(×)(7) 形参可以是常量、变量或表达式。(×)(8) 函数调用可以作为一个函数的形参。(√)(9) C语言规定,实参应与其对应的形参类型一致。(×)(10) 定义函数时,形参的类型说明可以放在函数体内。 4.程序填空题(1) 对数组按值从大到小的顺序排序后输出,请填空。#include<stdio.h>voidmain(){ floata[7]={2,6,3,8,3,12,9};  inti; voidsort(float*,int);           ;  for(i=0;i<7;i++)printf("%f",a[i]);  printf("\n");}voidsort(           ){ inti,j,k;floatt; for(i=0;i<n-1;i++) {  k=i;  for(j=i+1;j<n;j++)       if(             ) k=j;                 {t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;} }}sort(a,7) float*p,intn *(p+k)<*(p+j) if(k!=i) (2) 下列函数在n个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。#include<stdio.h>voidfind(float*p,intmax,intmin,intn){  intk;                 *max=*p;              for(k=1;k<n;k++)  {   t=*(p+k);    if(           )*max=t;    if(t<*min)*min=t;  }}floatt; *min=*p; *max<t B卷5.写出下列程序运行结果(1)main(){ inti=1,p; p=fun(i,i+1); printf("%d\n",p);}intfun(inta,intb){ intf; if(a>b) f=1; elseif(a==b) f=0; else  f=-1; returnf;}-1 (2)键盘输入abcdef<CR>#include<stdio.h>voidfun(){ charc; if((c=getchar())!='\n')      fun(); putchar(c);}voidmain(){   fun();  }fedcba (3)#include<stdio.h>#defineC5intx=1,y=C;voidmain(){ intx; x=y++; printf("%d%d\n",x,y); if(x>4){intx;x=++y;printf("%d%d\n",x,y); } x+=y--; printf("%d%d\n",x,y);}5 67 712 6 (4)#include<stdio.h>intc,a=4;func(inta,intb){ c=a*b;a=b-1;b++;return(a+b+1);}voidmain(){ intb=2,p=0;c=1; p=func(b,a); printf("%d,%d,%d,%d\n",a,b,c,p);}4,2,8,9 (5) unsignedfun6(unsignednum){ unsignedk=1; do{k*=num%10;num/=10;} while(num); returnk;} voidmain(){ unsignedn=26; printf("%d\n",fun6(n));}12 (6)#include<stdio.h>intmax(inta,intb);main(){ intx,y,z,t,m; scanf("%d,%d,%d",&x,&y,&z); t=max(x,y); m=max(t,z); printf("%d",m);}intmax(inta,intb){ if(a>b)  return(a); else  return(b);}运行时若输入:10,15,9 则输出:___ 15运行时若输入:300,129,300 则输出:___ 300 (7)#include<stdio.h>longsum(inta,intb);longfactorial(intn);main(){ intn1,n2; longa; scanf("%d,%d",&n1,&n2); a=sum(n1,n2); printf("a=%1d",a);}longsum(inta,intb){ longc1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2);}longfactorial(intn){ longrtn=1; inti; for(i=1;i<=n;i++)  rtn*=i; return(rtn);}运行时若输入:2,3 则输出:___ 8运行时若输入:0,5 则输出:___ 121 (8)#include<stdio.h>ints();intx,y;main(){intn;x=1;y=2;n=s();printf("x=%d,y=%d,n=%d",x,y,n);}ints(){intz;x=3;y=4;z=x+y;return(z);}程序运行后输出:___   3,4,7 (9)以下程序的输出结果是a=___,b=___,c=___。#include<stdio.h>intfunc(inta,int*p);voidmain(){ inta=1,b=2,c; c=func(a,&b); b=func(c,&a); a=func(b,&c); printf("a=%d,b=%d,c=%d",a,b,c);   }intfunc(inta,int*p){  a++;  *p=a+2;  return(*p+a);}36  16  19第九章   预处理A部分(本、专科必做)一、选择题以下不正确的叙述是(D)A、宏替换不占用运行时间。 B、宏名无类型。C、宏替换只是字符替换。  D、宏名必须用大写字母表示。C语言的编译系统对宏命令的处理(D)A、在程序运行时进行的。 B、在程序连接时进行。C、和C程序中的其它语句同时进行编译的。D、在对源程序中其它语句正式编译之前进行的。3、以下程序的输出结果是(C)。 A、15 B、100 C、10 D、150 #defineMIN(x,y)(x)<(y)?(x):(y) voidmain() { intI,j,k; i=10;j=15;k=10*MIN(i,j); printf(“%d\n”,k);}4、以下叙述中正确的是(D)用#include包含的文件的后缀必须是“.h”。若一些源程序中包含某个头文件;当该文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译。宏命令行可以看作是一行C语句。预处理是在编译之前进行的。5、以下叙述中正确的是(C) A、源程序中所有的行都参加编译。 B、宏定义常量与const定义常量是一样的。 C、宏定义可以嵌套定义,即在宏定义中的字符串可以引用另一个宏定义的标识符。 D、以上都不正确。二、填空题以下程序中for循环执行的次数是  6   。#defineN2#defineMN+1#defineNUM(M+1)*M/2voidmain(){ inti; for(i=1;i<=NUM;i++); printf(“%d\n”,i);}2、以下程序的输出结果是  x=93   。 #defineA 3 #defineB(a)    ((A+1)*a) voidmain() { intx; x=3*(A+B(7)); printf(“x=%d\n”,x);} B部分(本科必做)编程:请写出一个宏定义MYALPHA(c),用以判断c是否是字母字符,若是,得1,否则,得0。解:#defineMYALPHA(c)((c>=’A’&&c<=’Z’)||(c>=’a’&&c<=’z’)?1:0)   第十章   指针A部分(本、专科必做)一、选择题1、若有定义:intx,*pb;则以下正确的表达式是(A) A、pb=&x B、pb=x  C、*pb=&x  D、*pb=*x2、以下程序的输出结果是(B) A、因变量无定义输出不定值B、0C、-1 D、1 #include<stdio.h> voidmain(){printf(“%d\n”,NULL);}3、以下程序的输出结果是(B) A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-7#include<stdio.h>voidsub(intx,inty,int*z){*z=y-x;}voidmain(){ inta,b,c; sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf(“%d,%d,%d\n”,a,b,c);}4、以下程序的输出结果是(C) A、4B、6C、8D、10#include<stdio.h>voidmain(){ intk=2,m=4,n=6; int*pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%d\n”,n);}5、已知指针p的指向(图一)的a[1],则执行语句*p++;后,*p的值是(B)。 A、20B、30C、21D、31    a[0]   a[1]  a[2]   a[3]   a[4]10 20 30 40 50 (图一)6、已知指针p的指向(图一)的a[1],则表达式*++p的值是(B)。 A、20B、30C、21D、317、已知指针p的指向(图一)的a[1],则表达式++*p的值是(C)。 A、20B、30C、21D、318、以下程序的输出结果是(D)。 A、23B、24C、25D、26#include<stdio.h>voidprtv(int*x){printf(“%d\n”,++*x);}voidmain(){ inta=25;prtv(&a);}9、以下程序的输出结果是(B)。 A、运行出错 B、100 C、a的地址 D、b的地址#include<stdio.h>voidmain(){int**k,*a,b=100; a=&b;k=&a; printf(“%d\n”,**k);}10、以下程序运行后,输出结果是(D)。A)8         B)7          C)6          D)5   #include<stdio,h>   ss(char *s)  {  char   *p=s;      while(*p) p++;      return(p-s);  }  main()  {  char  *a="abded";      int  i;      i=ss(a);      printf("%d\n",i);  } 二、填空题1、若有定义:charch; (1)使指针p指向变量ch的定义语句是char*p=&ch;。 (2)若已定义char*p;,使指针p指向变量ch的赋值语句是p=&ch;。 (3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是scanf(“%c”,p);。 (4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是*p=’a’;。 (5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是printf(“%c”,*p);。2、以下程序输出的是 C。  voidmain( )  { int i=3,j=2;    char  *a="DCBA";    printf("%c%c\n",a[i],a[j]);  }3、以下函数的功能是,把两个整数指针所指的存储单元中的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 进行交换。请填空。  voidexchange(int *x, int *y)  { intt;    t=*y;  *y= *x   ;   *x= t  ;  } B部分(本科必做)程序填空:1、下面程序的输出结果是 ABCDBCDCDD 。  char  b[]="ABCD";  voidmain()  { char  *chp;      for(chp=b; *chp: chp+=2)  printf("%s",chp);      printf("\n");}下面是一个字符串连接函数,请补充完整。voidmystrcat(char*s1,char*s2){ char*p,*q; for(p=s1; *p ; p++ ); for( q=s2 ;*q;q++)  *p++=*q; *p=’\0’ ;}   第十一章   结构体与共用体A部分(本、专科必做)一、选择题1、设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是(B)。A)(*p).data.a   B)(*p).a     C)p->data.a     D)p.data.a 2、根据以下定义,能输出字母M的语句是(D)。 A、printf(“%c\n”,class[3].name); B、printf(“%c\n”,class[3].name[1]);C、printf(“%c\n”,class[2].name[1]);D、printf(“%c\n”,class[2].name[0]);structperson{charname[9];intage;};structpersonclass[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,};3、以下程序的输出结果是(D)。 A、0B、1C、3D、6 #include<stdio.h> voidmain() { structemplx{intx;inty;}enum[2]={1,3,2,7}; printf(“%d\n”,enum[0].y/enum[0].x*enum[1].x);}4、若有以下说明及语句,则值为6的表达式是(D)。 A、p++->nB、p->n++C、(*p).n++D、++p->n structst{intn;structst*next;}; structsta[3],*p; a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2]; a[2].n=9;a[2].next=’\0’;p=&a[0];5、已知字符0的ASCII码的十进制的值是48,且数组的第0个元素在低位,以下程序的输出结果是(B)。 A、39B、9C、38D、8 voidmain() { union{inti[2];longk;charc[4];}r,*s=&r; s->i[0]=0x39;s->i[1]=0x38; printf(“%x\n”,s->c[0]);}6、以下程序输出的结果是(C)。 A、32B、16C、8D、24typedefunion{longx[2];inty[4];charz[8];}MYTYPE;MYTYPEthem; voidmain() { printf(“%d\n”,sizeof(them));}7、设有以下语句typedefstruct S{ intg; char h;}  T;则下面叙述中正确的是(B)。A)可用S定义结构体变量   B)可以用T定义结构体变量C)S是struct类型的变量   D)T是struct S类型的变量8、有以下说明和定义语句structstudent{intage;charnum[8];};structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};structstudent*p=stu;以下选项中引用结构体变量成员的表达式错误的是(D)。A)(p++)->num B)p->num  C)(*p).num D)stu[3].age 二、填空题1、为了建立结构体(含有两个成员,data是数据成员,next是指向自身结构体的指针成员),请填空: Structlink{ chardata; structlink *next;}2、把类型int另取一个类型名称INT,则以下应填: typedef int INT;3、以下程序的运行结果是2002Shangxian。#include<string.h>typedefstructstudent{              charname[10];              longsno;              floatscore;            }STU;main(){ STUa={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;  d=a;  if(strcmp(a.name,b.name)>0)  d=b;  if(strcmp(c.name,d.name)>0)  d=c;  printf(“%ld%s\n”,d.sno,p->name); } B部分(本科必做)程序填空:以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高学生的人数。请填空。 #include<stdio.h> #defineN16 typedefstruct{ charnum[10];ints;}STREC; intfun(STREC*a,STREC*b){ inti,j=0,max=a[0].s; for(i=0;i<N;i++) if(max<a[i].s)  max=a[i].s; for(i=0;i<N;i++) if(a[i].s==max ) b[j++]=a[i]; return j;} voidmain(){ STRECs[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,91},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA0015”,85},{“GA0013”,91},{“GA0012”,64},{“GA0014”,91},{“GA0011”,66},{“GA0017”,64},{“GA0018”,64},{“GA0016”,72},};STRECh[N];inti,n;n=fun(s,h);printf(“The%dhighestscore:\n”, n);for(i=0;i<n;i++)printf(“%s %4d\n”,h[i].num,h[i].s);printf(“\n”);}  
本文档为【c语言基础知识复习题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
金水文库
鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户
格式:doc
大小:197KB
软件:Word
页数:0
分类:
上传时间:2020-04-19
浏览量:1