一、填空题
1、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;
scanf(\"%4c%4c\",&cl,8&c2);
2、一个C语言源程序由若干函数组成,其中至少应含有一个________ 3、C语言的源程序必须通过【 】和【 】后,才能被计算机执行。
4、若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为_______
5、把以下多项式写成只含7次乘法运算,其余皆为加、减运算的C语言表达式为_______。
5x7+3x6-4x5+2x1+x3-6x2+x+10
6、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。 7、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素交换。在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是_______。
a[0]=1;a[1]=2;swap(a,2); 8、设有宏定义如下:
#define MIN(x,y)(x)>(y)?(x):(y)
#define T(x,y,r)x*r*y/4则执行以下语句后,s1的值为_______,s2的值为_______。
int a=1,b=3,c=5,s1,s2; s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c); 9、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);
10、以下程序段通过移动指针变量m,将如图9-5所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。请填空。(假设程序段中的所有变量均已正确说明。)
for(m=q;m-q<10;m++)printf(\"%d,\",_______);printf(\"\\n\");
二、选择题
11、已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2='A'+'6'-'3';后,c2中的值为( )。 A.D B.68 C.不确定的值 D.C
12、下面4个选项中,是正确的八进制数或十六进制数的选项是( )。
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 14、一个C语言程序由( )。
A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成
15、若有定义float x[4]={1.3,2.4,5.6},y=6;,则错误的语句是( )。 A.y=x[3]; B.y=x+1; C.y=x[2]+1; D.x[0]=y; 16、以下针对scanf函数的叙述中,正确的是( )。 A.输入项可以为一实型常量,如scanf(\"%f\",3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(\"a=%d,b=%d\"); C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(\"%4.2f\",&f);
D.当输入数据时,必须指明变量的地址,如scanf(\"%f\",&f);
17、若有说明:char*language[]={\"FORTRAN\",\"BASIC\",\"PASCAL\",JAVA\",\"C\;则以下不正确的叙述是( )
A.language+2表示字符串”PASCAL”的首地址 B.*language[2]的值是字母P
C.language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
D.language是一个字符型指针数组,它包含5个元素,其初值分别是:\"FORTRAN\",\"BASIC\",\"PASCAL\",\"JAVA\",\"C\"
18、以下程序有语法性错误,有关错误原因的正确说法是( )。
#include k=prt_char(G); --- } A.语句void prt_char();有错,它是函数调用语句,不能用void说明 B.变量名不能使用大写字母 C.函数说明和函数调用语句之间有矛盾 D.函数名不能使用下划线 19、对for(表达式1;;表达式3)可理解为( )。 A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) 20、以下程序段( )。 x=-1; do {x=x*x;}while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 21、以下程序( )。 #include {int a=5,b=0,c=0; if(a=b+C.printf(\"***\\n\"); else printf(\"$$$\\n\"); return 0; } A.有语法错不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$ 22、下面程序的运行结果是( )。 #include {char str[]=\"SSSWLIA\",c;int k; for(k=2;(c=str[k])!=\\o';k++) {switch(C. {case'I':++k;break; case'L':continue; default:putchar(C.;continue; putchar('*’); } return 0; } A.SSW* B.SW* C.SW*A D.SW 23、当运行以下程序时,从键盘输入: ab<回车> C<回车> def<回车> 则下面程序的运行结果是( )。 #include for(;i A.abcdef B.a C.b D.ab b c c c d d e f 24、以下程序的运行结果是( )。#include {int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z);printf(\"%d\\n\",r); return(0); } A.-16 B.-17 C.17 D.1625、下面程序的运行结果是( )。#include {int num=0; while(num<=2) { num++; printf(\"%d\\n\",num); return 0; } A)1 B) 1,2 C) 1,2,3 D)1,2, 3, 4 三、读程序填空 26、以下printf语句中的负号的作用是_______,该程序的输出结果是_______。 #include double a=3.1415926; printf(\"%6d##\\n\",x); printf(\"%一6d##\\n\",x); printf(\"%14.101f##\\n\",a); printf(\"%-14.101f##\\n\ return 0; } 27、以下程序的输出结果是_______。 #include printf(\"a=%oa=%#o\\n\",a,a); printf(\"a=%xa=%#x\\n\",a,a); return 0; } 28、函数del的作用是删除已按升序排列的数组a中的指定元素x。已有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请填空。 int del(int a[],int n,int x) {int p,i;p=0; while(x>=a[p]& &p #include c=a>b?a:b; return(c); } int main() {int a=8; printf(\"%d\ return(0); } 30、以下程序的功能是根据公式e=1+1!+2!+3!…,求e的近似值,精度要求为10-6。请填空。 #include {int i;double e,new; _________;new=1.0; for(i=1;_______;i++) {new/=(double)i;e+=new;} printf(\"e=%f\\n\",e); return 0; } 31、下面程序的运行结果是_______。 #include 1 1 1 #define SIZE 30 int main() {float a[SIZE],b[SIZE/5],sum;int i,k; for(k=2,i=0;i for(i=0;i int yend,mend,dend,yman,mman,dman,age; age=yend-yman; if(mend_______mman)age--; else if(mend_______mman &&dend_______dman) age-- 33、以下程序的运行结果是_______。 #include void fun(int*b,int n,int*s) {int i; *s=0; for(i=1;i<=n;i++) *s=*s+*(b+i); int main() {int x=1,a[]={2,3,4,5,6}; fun(a,3,&x); printf(\"\\n%d\",x); return(0); } 四、编程题 34、试编程序,找出1~99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。 35、以下程序的功能是应用弦截法求方程x3-5x2+16x-80=0的根,其中f函数可根据指定的x的值求出方程的值;函数xpoint可根据x1和x2求出f(x1)和f(x2)的连线与x轴的交点;函数root用来求区间(x1,x2)的实根。请编写root函数。 #include float root(float xl,float ×2) { }float f(float x)/*略*/ { } float xpoint(float x1,floatx2)/*路*/ { } int main() {float xl,x2,fl,f2,x; do {printf(“input xl,x2:\\n\"); scanf(\"%f%,8&x1,8.x2); printf(\"xl=%5.2f,x2=%5.2f\\n\",xl,x2); f1=f(x1); f2=f(×2); }while(fl*f2>=0); x=root(x1,x2); printf(\"A root of equation is%8.4f\",x); return(0); } 参 一、填空题 1、A囗囗囗B囗囗囗<回车> 2、主函数(或main函数) 3、【1】编译【2】连接 4、-60 5、X*(X*(X*(X*(X*(X*(5*X+3)一4)+2)+1)-6)+1)+10 6、a &040或a&0×20或a&32 7、【1】a[0]=2a[1]=1 【2】因实参是地址,已对指定地址中的内容进行了交换。 8、【1】3【2】28 9、aabcd 10、*m 二、选择题 11、A 12、C 13、C 14、B 15、B 16、D 17、D 18、C 19、B 20、C 21、D 22、B 23、D 24、B 25、C 三、读程序填空 26、【1】输出数据左对齐 【2】囗囗囗012## 12口囗囗囗## 囗囗3.141592600## 3.141592600囗囗## (注:答案中的囗代表空格) 27、a=374囗囗a=0374 a=fc囗囗a=0xfc (注:答案中的囗代表空格) 28、【1】p=p+1【2】a[i]=a[i+1] 29、8 30、【1】e=1.0【2】new>=1e-6 31、The result is: 6.00 16.00 26.00 36.00 46.00 56.00 32、【1】<【2】==【3】< 33、12 四、编程题 34、#include for(i=1;i<100;i++) if(i*i%10==ill i*i%100==i)printf(\"%3d\",i); return 0; } 35、float root(float x1,float x2) {int i;floatx,y,y1; y1=f(x1); do {x=xpoint(x1,x2); y=f(x); if(y*y1>0){y1=y;x1=x;} Else x2=x; } while(fabs(y)>=0.0001); return(x); } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务