一、选择正确的答案填写在空白处1.C语言规定C程序中的标识符是C组成的。A)由任意顺序的字符B)仅由字母和数字C)由字母、数字和下划线D)由字母、数字作为首字符的任意字符串2.下列数据中D是C语言规定的合法数据常量。A)01010011BB)0X37GFC)07182D)0X87AF3.C语言包括C种基本的程序结构。A)1B)2C)3D)44.C语言中,printf(“%-8.2f\n”,a)要求输出的变量类型及格式要求为B。A)整型数,右对齐B)浮点数,左对齐C)整型数,左对齐D)浮点数,右对齐5.在C语言中,C为字符串的结束标志。A)\tB)\nC)\0D)\b6.B全为双目运算符。A)||&&?B)+=||C)++=!D)+&&&7.执行复合语句{i=10;j=i--;}后,变量i和j的值为B。A)10,10B)9,10C)10,9D)9,98.执行语句x=(a=3,b=a--)后,x、a、b的值分别为C。A)3,3,2B)3,2,2C)3,2,3D)2,3,29.若定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则下列选项错误的是C。A)*pB)*(a+i)C)a=p+2D)p[i]10.当调用函数时,实参和形参都是数组名,则向被调用函数传送的是B。A)数组的长度B)数组的首地址C)数组的类型D)数组首元素的值11.在循环语句的循环体中执行continue语句,其作用是C。A)跳出该循环体,提前结束循环B)继续执行该语句之后的循环体语句C)结束本次循环D)终止程序运行12.若定义:inta,*p=&a;则a与下列表达式B等价。A)pB)*&aC)*&pD)&*a13.与表达式x*=(y+x)+3等价的表达式是C。A)x=x*y+x+3B)x=x*(y+x)+3C)x=x*(y+x+3)D)x=(y+x)*314.设有以下说明语句structstudent{intx;floaty;charz;}p,*example=&p;则下面正确的是B。A)struct.xB)example-zC)student-xD)example.z15.设有以下说明语句structstudent{intnum;charname[10];}s[10];则下面正确的是D。A)scanf(“%d,%c”,s[1].num,s[1].name)B)scanf(“%d,%s”,s.num[1],s.name[1])C)scanf(“%d,%s”,&s.num,&s.name)D)scanf(“%d,%s”,&s[1].num,s[1].name)二、按照各小题的要求写出结果1.写出判断字符变量n是否为字母的逻辑表达式。(n=’a’&&n=’z’)||(n=’A’&&n=’Z’)2.写出函数的输出结果:voidmain(){inta=102,b=012;printf(“a=%2d,b=%2d\n”,a,b);}输出结果:a=102,b=103.写出函数的输出结果:voidmain(){inti,ch[]={1,2,3,4,5,6,7,8};for(i=0;i6;i++)if(i%2==0)printf(%d,,ch[i]);}输出结果:1,3,54.写出下列语句的输出结果:grade='C';switch(grade){case'A':printf(“90-100\n);case'B':printf(“80-89\n);break;case'C':printf(“70-79\n);case'D':printf(“60-69\n);break;default:printf(“60\n);}输出结果:70-7960-695.写出下列语句的输出结果:chararr[]=“abcdef”,*ptr;for(ptr=arr;ptrarr+2;ptr++)printf(“%c--%s\n”,*ptr,ptr);输出结果:a--abcdefb--bcdef三、读程序,严格按照程序写出输出结果1.#includestdio.hvoidmain(){inti,j,s=0;inta[][3]={{1,2,3},{4,5,6},{7,8,9}};for(i=0;i3;i++)for(j=0;j3;j++)if(i=j)s=s+a[i][j];printf(s=%d\n,s);}程序输出结果:s=262.#includestdio.hvoidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(arraya:\n);for(i=0;i=1;i++){for(j=0;j=2;j++){printf(%5d,a[i][j]);b[j][i]=a[i][j];}printf(\n);}printf(arrayb:\n);for(i=0;i=2;i++){for(j=0;j=1;j++)printf(%5d,b[i][j]);printf(\n);}}程序输出结果:arraya:123456arrayb:1425363.#includestdio.hvoidmain(){inta[5]={1,3,5,7,9},*p;p=&a[0];printf(*p=%d\n,*p++);(*p)++;printf(*p=%d\n,*(++p));}程序输出结果:*p=1*p=5四、根据题意填空1.从键盘输入一个字符串,将该字符串中的大写字母,小写字母,数字字符和其他字符分别存入一个字符数组中,并分别输出这四个字符串。#includestdio.hmain(){charstr[256],dig[256],upper[256],lower[256],other[256];inti,j,k,m,n;i=j=k=m=n=0;printf(Pleaseenterstring:);gets(str);while(str[n]!='\0'){if(str[n]='A'&&str[n]='Z')upper[i++]=str[n];elseif(str[n]='a'&&str[n]='z')lower[j++]=str[n];elseif(str[n]='0'&&str[n]='9')dig[k++]=str[n];elseother[m++]=str[n];n++;}upper[i]='\0';lower[j]='\0';dig[k]='\0';other[m]='\0';printf(%s%s\n%s%s%s\n,str,upper,lower,dig,other);}3.定义一个整型数组,在主函数中完成数组的输入,然后通过函数调用将该数组传递给被调函数,由被调函数计算该数组各数组元素的平均值并返回给主函数。#includestdio.hintaverage(int*p,intn){intaver,i;intsum=0;for(i=0;in;i++,p++)sum=sum+*p;//sum=sum+p[i]aver=sum/n;return(aver);}voidmain(){inta[10],i,aver;printf(inputanintegerarray!);for(i=0;i10;i++)scanf(%d,&a[i]);aver=average(a,10);//(&a[0],10)printf(arrayaverage=%d,aver);}4.在主函数中定义一个结构体数组并输入数据,其中包括学号、姓名和三门课程的成绩,然后求出每个同学的平均成绩并输出。voidmain(){structstudent{intnum;charname[10];floatscore[3];}s[10];inti,aver;for(i=0;i10;i++)scanf(%d%s%f%f%f,&s[i].num,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);for(i=0;i10;i++){aver=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;printf(num=%d,average=%d,i,aver);}}五、编程题1.从键盘上输入浮点数limit,计算sum=1+1/3+1/5+…+1/(2n+1)直到sumlimit成立,输出对应的n和sum(要求采用do---while型循环)。voidmain(){floatsum=0,limit;intn=0;scanf(“%f”,&limit);do{sum=sum+1.0/(2*n+1);n++;}while(sum=limit);printf(“n=%d,sum=%f\n”,n-1,sum);}2.计算m=111+222+333+…+nnn,直到n等于15为止,输出每个n和对应的m。voidmain(){longm=0;intn;for(n=1;n=15;n++){if(n10)m=m+n+n*10+n*100;elsem=m+n+n*100+n*10000;printf(“n=%d,m=%ld\n”,n,m);}}3.输入一个无符号整数,求出位数以及各位数字的和并输出。voidmain(){unsignedintm,n,count=0,sum=0;scanf(“%d”,&m);if(m!=0)while(m/10!=0){count++;n=m%10;sum=sum+n;m=m/10;}printf(“%d,%d\n”,count,sum);}