一、填空题
1、设x是一个整数(16bit),若要通过xly使x低8位置1,高8位不变,则y的八进制数是_______。
2、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
3、在C语言源程序中,一个变量代表【 】。
4、已知字母a的ASCIl码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-3'的值为_______。
5、若有定义语句:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_______
6、请填空:
建立如图所示存储结构所需的说明语句是_______。
建立如图所示为变量a输入数据的输入语句是_______。
建立如图所示存储结构所需的赋值语句是_______。
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。
for(x=0;x<=30;x++)
{y=30一x;
if(_______)printf("%d,%d\\n",x,y);
}
8、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。
#include int main() {int a,b; float x,y; char cl,c2; scanf("a=%d b=%d",&.a,&.b); scanf("x=%f y=%",8.x,8.y); scanf("c1=%cc2=%c”,8.cl,8.c2); printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,cl,c2); return0; } 9、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。 10、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。 二、选择题 11、下面4个选项中,是正确的八进制数或十六进制数的选项是( )。 12、表达式18/4*sqrt(4.0)/8值的数据类型为( ) A.int B.float C.double D.不确定 13、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是( )。 A.int a=b=c=5; B.int a,b,c=5;C.a=5,b=5,c=5;D.a=b=c=5; 14、已知ch是字符型变量,下面不正确的赋值语句是( ) A.ch='a+b'; B.ch='\\o'; C.ch='7'+'9'; D.ch=5+9; 15、若有以下程序段: int a[]={4,0,2,3,1},i,j,t; for(i=l;i<5;i++) {t=a[i];j=i-1; while(j>=0&&t>a[j] {a[j+1]=a[j];j--;} a[j+1]=t; 则该程序段的功能是( )。 A.对数组a进行插入排序(升序)B.对数组a进行插入排序(降序) C.对数组a进行选择排序(升序)D.对数组a进行选择排序(降序) 16、以下叙述不正确的是( ) A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数 D.在C程序中,注释说明只能位于一条语句的后面 17、以下描述中正确的是( ) A.while、do-while、for循环中的循环体语句都至少被执行一次 B.do-while循环中,while(表达式)后面的分号可以省略 C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作 D.do-while 循环中,根据情况可以省略 while 18、以下程序有语法性错误,有关错误原因的正确说法是( )。 #include int main() {int G=5,k; void prt_char(); ----- k=prt_char(G); --- } A.语句void prt_char();有错,它是函数调用语句,不能用void说明 B.变量名不能使用大写字母 C.函数说明和函数调用语句之间有矛盾 D.函数名不能使用下划线 19、设有以下定义: char*cc[2]={"1234","5678");则正确的叙述是( )。 A.cc数组的两个元素中各自存放了字符串”1234”和"5678”的首地址 B.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C.cc是指针变量,它指向含有两个数组元素的字符型一维数组 D.cc数组元素的值分别是1234和5678 20、若有说明:char*language[]={"FORTRAN","BASIC","PASCAL",JAVA","C");则language[2]的值是( )。 A.一个字符 B.一个地址 C.一个字符串 D.一个不定值 21、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include float f(float,float); int main() {floatx,y,z,sum; scanf("%f%1%f",8.x,&y,8.z); sum=f(【】)+f(z+y,z-y); printf("sum=%fNn",sum); return(0); } float f(float a,float B. {float value; value=a/b; return(value); } A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y 22、下面程序段的运行结果是( )。 int a[6],i; for(i=1;i<6;i++) {a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]) ; } A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0 23、下面程序的运行结果是( )。 #include int main() {chara[]="morming",t;int i,j=0; for(i=1;i<7;i++) if(a[j]t=a[j];a[j]=a[7]; a[7]=a[j]; puts(a); return 0; } A)mogninr B)mo C)morning D)mornin 24、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是( )。 if(a if(a else x=6; else x=7; A.1 B.2 C.3 D.6 25、下面程序的功能是计算正整数2345的各位数字的平方和,请选择填空( )。 #include int main() {int n=2345,sum=0; do {sum=sum+【1】; n= n/10; }while(n); printf("sum=%d",sum); return 0; } A.n%10 B.(n%10)*(n%10) C.n/10 D.(n/10)*(n/10) 三、读程序填空 26、以下程序的输出结果是_______。 #include int main() {int a=325; double x=3.1415926; printf("a=%+06dx=%+e\\n",a,x); return 0; } 27、已知字母A的ASCII码值为65。以下程序的输出结果是_______。 #include int main() {char a,b; a='A'+'4'-'3'; b='A'+'6'-2'; printf("a=%d,b=%c\\n",a,b); return0; } 28、以下程序的运行结果是_______。 # include { intx,y,z; x=3; y=3; z=x==y; printf("z=%d\\n",z); return 0; } 29、以下程序的功能是:某邮局对邮寄包裹有如下规定,若包裹的长、宽、高任一尺寸超过1m或重量超过30kg,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再加上根据表4-5按不同重量weigh计算的邮资。请填空。 重量与邮资 int main() { float len, weigh, hei, wid, mon,r; scanf("%f %f %f %f",&len,&wid,&hei,&weigh); if(len>1|| wid>1|| hei>1 || weigh>30)___________; else if (weigh<10) r=0.8; else if (weigh<=20) r=0.75; else if (weigh<=30) ___________; if (r==-1) printf("error\\n"); else {___________;printf("%f",mon);} return 0; } 30、下面程序的运行结果是_______。 #include int main() {int i,t,sum=0; for(t=i=1;i<=10;) {sum+=t;++i; if(i%3==0)t=-i; else t=i; } printf("sum=%d,sum); return 0; } 31、以下程序的运行结果是_______。 #include void sub(int x,int y); int x1=30,x2=40; int main() {int x3=10,x4=20;s ub(×3,×4); sub(x2,x1); printf("%d,%d,%d,%d\\n",x3,x4,x1,x2); return(0); void sub(int x,int y) {x1=x; x=y; y=x1; } 32、运行程序时若输入“52<回车>”,则下面程序的运行结果是_______。 #include int main() {int a[8]={6,12,18,42,44,52,67,94}; int low=0,mid,high=7,found=0,x; scanf("%d",&.x); while((low<=high)&&(found==0)) {mid=(low+high)/2; if(x>a[mid])low=mid+1; else if(xelse{found=1;break;} } if(found==1) printf("Search Successful!The index is:%d\\n",mid); else printf("can't search!\\n"); return0; } 33、以下程序通过指针数组p和一维数组a构成如下所示的二维数组的左下半三角结构,然后输出。请填空。 #include #define M 5 #define NUM(M+1)x(M)/2 int main() int a[NUM],*p[M],i,j,index,n; for(i=0;i p[i]=_______; } for(i=0;i for(j=0;j<=i;j++) {p[i][j]=_______; n++; } printf("The Output:\\n"); for(i=0;i printf("%4d",p[i][j]); printf("\\n"); } return(0); } 四、编程题 34、编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。 35、从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]= "ab")。试编程。 参 一、填空题 1、0377 2、【1】scanf【2】printf 3、内存中的一个存储单元 4、f 5、5.500000 6、【1】char a,*p;【2】scanf("%c",8.a);【3】p=8.a; 7、2*x+4*y==90 8、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车> (注:答案中的囗代表空格) 9、【1】scanf("%d%f%f%c%c”,&a,&.b,8.c1,8.c2); 【2】3囗6.5囗12.6aA<回车> (注:答案中的囗代表空格) 10、double a[M][M]={0}; 二、选择题 11、C 12、C 13、A 14、A 15、B 16、D 17、C 18、C 19、A 20、B 21、B 22、C 23、B 24、B 25、B 三、读程序填空 26、a=+00325囗囗囗x=+3.14159e+00 (注:答案中的囗代表空格) 27、a=66,b=E 28、z=1 29、【1】r=-1【2】r=0.7【3】mon=wei*r+0.2 30、sum=19 31、10,20,40,40 32、Search Successful!The index is:5 33、【1】8.a[index]【2】i*M+n【3】j<=i 四、编程题 34、#include int main() {static char x[]="computer"; char*p; for(p=x;p printf("\\n"); return 0; } 35、#include #include int main() {char a[80],b[]="ab",max; int i=1,j; printf("Input a string\\n"); gets(a); puts(a); max=a[0];while(a[i]!='\\o') {if(a[i]>max) {max=a[];j=i;} i++; } for(i=strlen(a)+2;i>j;i--) a[i]=a[i-2]; a[i+1]='a'; a[i+2]='b'; puts(a); return 0; }下载本文
# include重量/kg 邮资/元 0.80 0.75 0.70