2024年4月1日发(作者:江淑娜)
第1章 C语言概述
(一)选择题
1. 一个C程序的执行是从 A 。 答案A
A) 本程序的main函数开始,到main函数结束
B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C) 本程序文件的第一个函数开始,到本程序main函数结束
D) 本程序的main函数开始,到本程序文件的最后一个函数结束
2. 以下叙述不正确的是 D 。
A) 一个C源程序必须包含一个main函数
B) 一个C源程序可由一个或多个函数组成
C) C程序的基本组成单位是函数
D) 在C程序中,注释说明只能位于一条语句的后面
3. 以下叙述正确的是 C 。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B) 在C程序中,main函数必须位于程序的最前面
C) C语言本身没有输入输出语句
D) C程序的每行中只能写一条语句
4. 一个C语言程序是由 B 。
A)一个主程序和若干个子程序组成
B) 函数组成
C) 若干过程组成
D) 若干子程序组成
5. C语言程序编译时,程序中的注释部分 ______D______.
A) 参加编译,并会出现在目标程序中
B) 参加编译,但不会出现在目标程序中
C) 不参加编译,但会出现在目标程序中
D) 不参加编译,也不会出现在目标程序中
(二)填空题
1、C语句结束符为____;_____________.
2、C语句注释符号为:_/* */______________.
3、一个C程序总是从____main函数______________开始执行的。
第3章 数据类型、运算符与表达式
(一)选择题
1. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( C )。
x=(i=4,j=16,k=32)
A) 4 B) 16 C) 32 D) 52
2.下列四组选项中,均不是C语言关键字的选项是( A )。
A) define IF type
B) getc char printf
C) include ca scanf
D) while go pow
3. 下列四组选项中,均是不合法的用户标识符的选项是( B )。
A) W P_0 do
B) b-a goto int
C) float la0 _A
D) -123 abc TEMP
4. 下列四组选项中,均是合法转义字符的选项是( A )。
A) ‘”’ ‘’ ‘n’
B) ‘’ ‘017’ ‘”’
C) ‘018’ ‘f’ ‘xab’
D) ‘0’ ‘101’ ‘xlf’
5 . 下面正确的字符常量是( D )。
A) “c” B) ‘’’ C) a D) ‘K’
6 .以下叙述不正确的是( D )。
A) 在C程序中,逗号运算符的优先级最低
B) 在C程序中,MAX和max是两个不同的变量
C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,b中的值不变
D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
7. 以下叙述正确的是( C )。
A) 在C程序中,每行只能写一条语句
B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C) 在C程序中,%是只能用于整数运算的运算符
D) 在C程序中,无论是整数还是实数,都能被准确无误地表示
8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为( A )。
A) D B) 68 C) 不确定的值 D) C
9 . sizeof(float)是( B ) 。
A) 一个双精度型表达式 B) 一个整型表达式
C) 一种函数表达式 D) 一个不合法的表达式
10 .设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为( C )。
A) 0 ~255 B) 0~32767 C) 0~65535 D) 0~2147483647
11 .设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为( D )。
A) float B) char C) int D) double
12 .设以下变量均为int类型,则值不等于7的表达式是( C )。
A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)
C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)
13.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( A)。
A) 0 B) 1 C) 2 D) 3
14.设n=3;则n++的结果是( B )。
A)2 B) 3 C) 4 D) 5
15.以下不正确的C语言标识符是( D )。
A) ABC B) abc C) a_bc D)ab.c
16.C程序是由( B )构成的。
A)主程序与子程序 B) 主函数与若干子函数
C) 一个主函数与一个其它函数 D) 主函数与子函数
17.在C语言中,不正确的int类型的常数是:( A )
A) 32768 B)0 C) 037 D) 0xaf
18.下面关于运算符优先顺序的描述中正确的是:( C )
A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符
C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
19.设x为一数字字符,则其所对应的十进制数值为 B 。
A)x B)x-‘0’ C)*x D)&x
20.说明语句char s=‘t’,使s包含了几个字符? A 。
A)1 B)2 C)3 D)说明有错
21.设a=6,b=4,则表达式b*=a+3的值为 D 。
A)3 B)18 C)27 D)36
22.正确的C语言自定义标识符是 A 。
A)file_bak B)abc(10) C)continue D)class+3
23.设int x=8,y,z; 执行y=z=x++;x=y==z后,变量x的值是 B 。
A)0 B)1 C)8 D)9
24.下列数据类型中不属于构造类型的是 D 。
A)数组型 B)结构型 C)共用型 D)枚举型
25. 表达式7/3的值是_D___。
A. 2.33 B. 2.333 C. 2.3333 D. 2
26. Char型数据在内存中以_A__形式存放。
A. ASCII码形式 B. 字符形式 C. 字符串形式 D. BCD码形式
27. C语言的字符串以_A___结束。
A. NULL B. 整数 C. ASCII码 D. 长度
28. 假设i的初值为2,赋值语句j=i++执行后,j,i的值分别是_B___。
A. 3 , 3 B. 2 , 3 C. 3 , 2 D. 2 , 2
29. 下列表达式的值为0的是 (C )
A. 3﹪5 B. 3/5.0 C. 3/5 D. 3<5
30. 正确的C语言用户自定义标识符是 ( A )
A. print B. float C. when? D. random﹪2
31.设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是 ( B )
A. 0和2 B. 0和3 C. 1和2 D. 1和3
32.下列运算符中优先级别最高的是____B__________。
A)< B)+ C)&& D)!=
33、已知字母A的ASCII码为十进制数65,且c2为字符型,
则执行语句c2=‘A’+‘6’-‘3’后c2的值为______A_______。
A)D B)68 C)不确定的值 D)C
34.以下非法的赋值语句是_C___。
A. n=(i=2,++i); B.j++; C.(a+b)++; D.x=j>0;
35.如果关系表达式a>b的值为0,关系表达式c A. 0 B. 1 C. –1 D. 2 36.设有定义:long x=123456L;,则以下能够正确输出变量x值的语句是__B__。 A.printf(“x=%dn”,x); B.printf(“x=%ldn”,x); C.printf(“x=%8dLn”,x); D.printf(“x=%LDn”,x); (二)填空题 1 . 若有以下定义,则计算表达式y+=y-=m*=y后的y值是______-1_________。 int m=5,y=2; 2. 在C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为_-32768~32767或-215~215-1_________。 3 . 若s是int型变量,且s=6,则下面表达式的值为____1___________。 s%2+(s+1)%2 4. 若a是int型变量,则下面表达式的值为_____26__________。 (a=4*5,a*2),a+6 5 . 若x和a均是int型变量,则计算表达式(1)后的x值为____12___________,计算表达式(2)后的x 值为______4_________。 (1) x=(a=4,6*2) (2) x=a=4,6*2 6. 若a是int型变量,则计算下面表达式后a的值为_______2________。 A=25/3%3 7 . 若x和n均是int型变量,且x和n的初值均为5,则计算表达式:x+=n++ ; 后x的值为____10___________,n的值为_______6________。 8. 若有定义:char c=‘010’;则变量c中包含的字符个数为_________1______。 9 . 若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为_______1________. (x+y)%2+(int)a/(int)b 10. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式 ch=’a’+’8’-‘3’的值为____’f’___________。 11. 初始化值是0.618的双精度(double)变量a的定义形式为___double a=0.618_____。 12. 若有定义 int m=5,y=2,则执行表达式 y+=y-=m*=y 后,y 的值为 ____-16_______。 13. 执行语句“a=4+(c=5);”后,变量a的值为___9__、c的值为____5____。 14.C语句“x*=y+2;”还可以写作___x=x*(y+2)_____ 15.计算x、y之和的立方根,C 语言表达式应写作______。 16.执行语句“a=5+(c=6);”后,变量a、c的值依次为______。 17.判断变量a、b的值均不为0的C语言表达式为______。 (三)阅读下列程序,写出运行结果(共18分,每题3分) 1. #include void main( ) { int a=1,b=4,c=2; 运行结果: a=(a+b)/c; printf(“%d n”,--a); } 2.以下程序的输出结果是___________。 #include “stdio.h” main() { int i,j,k,a=3,b=2; i=(--a = = b+ + )? --a:+ +b; j=a+ +;k=b; printf(“i=%d,j=%d,k=%dn”,i,j,k); } A)i=2,j=1,k=3 B)i=1,j=1,k=2 C)i=4,j=2,k=4 D)i=1,j=1,k=3 3、若输入12345、abc,下列程序的输出结果为___________。 main() { int a; char ch; scanf(“%3d,%3d”,&a,&b); printf(“%d,%c”,a,ch); } A)123,abc B)123,4 C)123,a D)12345,abc 4、以下程序的输出结果是____________。 main() { int a=12,b=12; printf(“%d %d n”,--a,+ +b); } A)10 10 B)12 12 C)11 10 D)11 13 第4章 最简单的C程序设计——顺序程序设计 (一)选择题 1. putchar函数可以向终端输出一个 _______________。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 2. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式_________;如果字符串长度小于5,则输出按方式____________。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 3. 阅读以下程序,当输入数据的形式为:25,13,10 main() { int x,y,z; scanf(“%d%d%d”,&x,&y,&z); printf(“x+y+z=%dn”,x+y+z); } A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值 4. 根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为________。 main() { char ch1,ch2,ch3; 输入语句 printf(“%c%c%c”,ch1,ch2,ch3); } 输入形式:A B C 输出形式:A BC A) scanf(“%c%c%c”,&ch1,&ch2,&ch3); B) scanf(“%c,%c,%c”,&ch1,&ch2,&ch3); C) scanf(“%c %c %c”,&ch1,&ch2,&ch3); D) scanf(“%c%c”,&ch1,&ch2,&ch3); 5. 已知ch是字符型变量,下面不符合C语法的赋值语句是______________。 A) ch=‘a+b’; B) ch=‘0’; C) ch=‘7’+‘9’; D) ch=5+9; 6.有下列程序段落: int i,a[5]; for(i=0;i<5;i++) scanf(“%d”,&a[i]); 若要使数组元素的值分别为1,2,3,4,5,应从键盘输入( )。 A)1,2,3,4,5↙ B) 1 2 3 4 5↙ C)12345↙ D) 1;2;3;4;5↙ (二)填空题 1. 以下的输出结果是【1】。 main() { short i; i=-4; printf(“ni:dec=%d,oct=%o,hex=%x,unsigned=%un”,i,i,i,i); } 2. 以下的输出结果是【2】。 main() { char c=‘x’; printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%cn”,c,c,c,c); } 3. 以下的输出结果是【3】。 main() { int x=1,y=2; printf(“x=%d y=%d * sum * =%dn”,x,y,x+y); printf(“10 Squared is : %dn”,10*10); } 4. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。 a+=【4】; b=a-【5】; a-=【6】; 5. 若x为int型变量,则执行以下语句后的x 值为【7】。 x=7; x+=x-=x+x; z=m=0xFFFF 6. 有一输入语句scanf(“%d”,k);则不能使float类型变量k得到正确数值的原因是【8】和【9】。 第5章 选择结构程序设计 (一)选择题 1. 逻辑运算符两侧运算对象三数据类型_________。 A) 只能是0和1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型的数据 2. 判断char型变量ch是否为大写字母的正确表达式是_________。 A) 'A'<=ch<='Z' B) (ch>='A')&(ch<='Z') C) (ch>='A')&&(ch<='Z') D) ('A'<= ch)AND('Z'>= ch) 3. 若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假"。则以下不能满足要求的表达式是_________。 A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2 4. 设有: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 5. 以下程序的运行结果是 。 main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d",a,b); } A) 6,1 B) 2,1 C) 6,0 D) 2,0 6. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是_________。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 7. 以下程序的运行结果是_________ 。 main() { int m=5; if(m++>5) printf("%dn",m); el; printf("%dn",m--); } A) 4 B) 5 C) 6 D) 7 8. 若运行时给变量x输入12,则以下程序的运行结果是_________。 main() { int x,y; scanf("%d",&x); y=x>12 ? x+10 : x-12; printf("%dn",y); } A) 4 B) 3 C) 2 D) 1 (二)编程题 1. 编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。 2. 编程判断输入的正整数是是否既是5又是7的整倍数。若是,则输出yes;否则输出no。 3. 用if--el if 编程实现: -1 (x<0) y = 0 (x=0) 1 (X>0) 4. 用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E' 第6章 循环控制 (一)选择题 1.设有程序段 int k=10; while(k=0)k=k-1; 这下面描述中正确的是_________. a)while循环执行10次 b)循环是无限循环 c)循环体语句以此也不执行 d)循环体语句执行一次 2.语句while(!E);中的表达式!E等价于________. a)E==0 b)E!=1 c)E!=0 d)E==1 3.下面程序段的运行结果是__________. int n=0; while(n++<=2);printf("%d",n); a)2 b)3 c)4 d)有语法错 4.下面程序的运行结果是____. #include main() { int num=0; while(num<=2) { num++; printf("%dn",num); } } a)1 b)1 c)1 d)1 2 2 2 3 3 4 5.以下程序段________. x=-1; do{ x=x*x; } while(!x); a)是死循环 b)循环执行二次 c)循环执行一次 d)有语法错误 6.若有如下语句 int x=3; do{printf(""%dn",x-=2);}while(!(--x)); 则上面程序段______. a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环 7.下面程序的运行结果是______. #include
main()
{
int y=10;
do
{y--;}
while(--y);
printf("%dn",y--);
}
a)-1 b)1 c)8 d)0
8.若i为整型变量,则以下循环执行次数是_____.
for(i=2;i==0;)printf("%d",i--);
a)无限次 b)0次 c)1次 d)2次
9.执行语句for(i=1;i++<4; );后变量i的值是______.
a)3 b)4 c)5 d)不定
10.以下正确的描述是_______.
a)continue语句的作用是结束整个循环的执行
b)只能在循环体内和switch语句体内使用break语句
c)在循环体内使用break语句或continue语句的作用相同
d)从多层循环嵌套中退出时,只能使用goto语句
(二)填空题
1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束
循环。请填空。
int n=0,c;
c=getchar();
while(____)
{
if(_____)n++;
c=getchar();
}
2.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。请填空。
#include
main()
{int r,m,n;
scanf("%d%d",&m,&n);
if(m r=m%n; while(r){m=n;n=r;r=______;} printf("%dn",n); } 3.下面程序的运行结果是_________. #include main() { int a,s,n,count; a=2;s=0;n=1;count=1; while(count<=7){n=n*a;s=s+n;++count;} printf("s=%d",s); } 4.下面程序段的运行结果是_________. i=1;a=0;s=1; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("a=%d",a); 5.下面程序段的运行结果是_______. i=1;s=3; do{s+=i++; if(s%7==0)continue; el ++i; }while(s<15); printf("%d",i); 第7章 数组 1.以下为一维整型数组a的正确说明是_________. a)int a(10); b)int n=10,a[n]; c)int n; d)#define SIZE 10; scanf("%d",&n); int a[SIZE]; int a[n]; 2.以下对二维数组a的正确说明是________. a)int a[3][]; b)float a(3,4); c)double a[1][4] d)float a(3)(4); 3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______. (假设a[0][0]位于数组的第一个位置上。) a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+1 4.若二维数组a有m列,则在a[i][j]前的元素个数为________. a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+1 5.若有以下程序段: int a[]={4,0,2,3,1},i,j,t; for(i=1;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进行选择排序(降序) 6.有两个字符数组a、b,则以下正确的输入语句是_______. a)gets(a,b); b)scanf("%s%s",a,b); c)scanf("%s%s",&a,&b); d)gets("a"),gets("b"); 7.下面程序段的运行结果是_________. char a[7]="abcdef";
char b[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
a)空格 b)0 c)e d)f
8.判断字符串s1是否大于字符串s2,应当使用_______.
a)if(s1>s2) b)if(strcmp(s1,s2))
c)if(strcmp(s2,s1)>0) d)if(strcmp(s1,s2)>0)
9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用
空格分隔,请选择填空。
#include
main()
{
char s[80],c1,c2='';
int i=0,num=0;
gets(s);
while(s[i]!='0')
{c1=s[i];
if(i==0)c2=' ';
el c2=s[i-1];
if(___)num++
i++;
}
printf("There are %d words.n",num);
}
a)c1==' '&&c2==' ' b)c1!=' '&&c2==' '
c)c1==' '&&c2!=' ' d)c1!=' '&&c2!=' '
10.下面程序的运行结果是________.
#include
main()
{char str[]="SSSWLIA",c;
int k;
for(k=2;(c=str[k])!='0';k++)
{switch(c)
{ca 'I':++k;break;
ca 'L':continue;
default:putchar(c);continue;
}
putchar('*');
}
}
a)SSW* b)SW* c)SW*A d)SW
二、填空题
1. 若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的上限为_________.
2.下面程序以每行4个数据的形式输出a数组,请填空。
#define N 20
main()
{int a[N],i;
for(i=0;i for(i=0i {if (_____________) _____________ printf("%3d",a[i]); } printf("n"); } 3. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。 main() { int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(_____) sum=sum+_______; printf("sum=%dn",sum); } 4. 当从键盘输入18并回车后,下面程序的运行结果是________. main() {int x,y,i,a[8],j,u,v; scanf("%d",&x); y=x;i=0; do {u=y/2; a[i]=y%2; i++;y=u; }while(y>=1) for(j=i-1;j>=0;j--) printf("%d",a[j]); } 5. 下面程序用插入法对数组a进行降序排序。请填空。 main() {int a[5]={4,7,2,5,1}; int i,j,m; for(i=1;i<5;i++) {m=a[i]; j=____; while(j>=0&&m>a[j]) {_______; j--; } _______=m; } for(i=0;i<5;i++) printf("%d",a[i]); printf("n"); } 6. 下面程序的功能是在三个字符串中找出最小的,请填空。 #include #include main() { char s[20],str[3][20]; int i; for(i=0;i<3;i++)gets(str[i]); strcpy(s,_______); if(strcmp(str[2],s)<0)strcpy(s,str[2]); printf("%sn",_______); } 7. 下面程序的运行结果是________. #include main() {char s[]="ABCCDA"; int k;char c; for(k=1;(c=s[k])!='0';k++) {switch(c) {ca 'A':putchar('%');continue; ca 'B':++k;break; default:putchar('*');
ca 'C':putchar('&');continue;
}
putchar('#');
}
}
8.用冒泡法对10个数按从大到小的顺序排序。(思路:将相邻的两个数比较,将大的调到前头)
#include
void main(void)
{
int i, j, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for(i=0; i<9 ;i++)
for( j=0;__ (8)____;j++)
if(___(9)____)
{
iTemp=a[ j];
a[ j ]=a[ j+1];
____(10)______;
}
for(i=0;i<10; i++)
printf(”%4d”,a[i]);
}
第8章 函数
一、选择题
1.以下正确的说法是_________.
建立函数的目的之一是 a)提高程序的执行效率
b)提高程序的可读性
c)减少程序的篇幅
d)减少程序文件所占内存
2.以下正确的函数定义形式是________.
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);
3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.
a)float
b)int
c)long
d)double
5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array
的错误定义方式为________.
int a[3][4];
f(a);
a)f(int array[][6])
b)f(int array[3][])
c)f(int array[][4])
d)f(int array[2][5])
6.以下程序的正确运行结果是_________.
#include
void num()
{
extern int x,y;int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%dn",x,y);
}
a)12,2 b)不确定 c)5,25 d)1,12
二、填空题
1.以下程序的运行结果是_____.
#include
main()
{int a=1,b=2,c;
c=max(a,b);
printf("max is %dn",c);
}
max(int x,int y)
{int x;
z=(x>y)?x:y;
return(z);
}
2.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。
gongyu(int num1,int num2)
{int temp,a,b;
if(num1(_____) num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(____)
{temp=a%b;a=b;b=temp;}
return(a);
}
3.以下程序的运行结果是________.
int a=5;int b=7;
main()
{ int a=4,b=5,c;
c=plus(a,b);
printf("A+B=%dn",c);
}
plus(int x,int y)
{int z;
z=x+y;
return(x);
}
4.以下程序的运行结果是_______.
main()
{incx();
incy();
incx();
incy();
incx();
incy();
}
incx()
{
int x=0;
printf("x=%dt",++x);
}
incy()
{static int y=0;
printf("ny=%dn",++y);
}
5. 调用函数,求a,b两个数中的最大值。
#include
void main(void )
{
int a,b,c;
_________________;
scanf ( “%d,%d” , &a, &b) ;
___________;
printf (“%d” ,c) ;
}
int max(int x ,int y)
{ int z ;
z=______________;
return ( z) ;
}
6. 有5只猴子摘桃子,已知第5只比第4只多摘2个,第4只比第3只多摘2个,第3只比第2只多摘2个,第2只比第1只多摘2个,第1只猴子摘了5个,问第5只猴子摘了多少个(用递归实现)
int pea(int n)
{int c;
if(______________)
c=5;
el
c=_______________________;
return( c );
}
/*用主函数调用pea函数,求得第5只猴子摘的数量。*/
main()
{printf(“%dn”,pea(5));}
7. 对两个整数按从小到大顺序输出
void swap(int *x,int *y)
{int temp;
____________;__________;________________;
}
void main()
{int a=3,b=5;
if(a>b)swap(&a,&b);
printf(“%d %dn”,a,b);
}
三、编程题
1. 已有变量定义和函数调用语句:int x=57 ; isprime(x); 函数isprime( ) 用来判断一个整形数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。
isprime(int a)
{ }
2. a是一个2X4的整型数组,且各元素均已赋值。函数max_value可求出其中的最大的元素值max,并将此值返回主调函数。今有函数调用语句max=max_value(a),请编写max_value函数。
max_value(int arr[ ][4])
{ }
第9章 编译预处理
一、选择题
1.以下叙述中正确的是________.
a)在程序的一行上可以出现多个有效的预处理命令行
b)使用带参的宏时,参数的类型应与宏定义时的一致
c)宏替换不占用运行时间,只占用编译时间
d)在以下定义中C R是称为"宏名"的标识符
#define C R 045
2.以下程序的运行结果是________.
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{int i=10,j=15,k;
k=10*MIN(i,j);
printf("%dn",k);
}
a)10 b)15 c)100 d)150
3.若有宏定义如下:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是_______.
int a;a=Y;
printf("%dn",Z);
printf("%dn",--a);
a)7 b)12 c)12 d)7
6 6 5 5
4.请读程序:
#include #define MUL(x,y) (x)*y main() { int a=3,b=4,c; c=MUL(a++,b++); printf("%dn",c); } 上面程序的输出结果是__________. a)12 b)15 c)20 d) 16 5.对下面程序段: #define A 3 #define B(a) ((A+1)*a) ... x=3*(A+B(7)); 正确的判断是_________. a)程序错误,不许嵌套宏定义 b)x=93 c)x=21 d)程序错误,宏定义不许有参数 6.以下正确的描述是____________. a)C语言的预处理功能是指完成宏替换和包含文件的调用 b)预处理指令只能位于C源程序文件的首部 c)凡是C源程序中行首以"#"标识的控制行都是预处理指令 d)C语言的编译预处理就是对源程序进行初步的语法检查 7.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______. a)仅仅搜索当前目录 b)仅仅搜索源程序所在目录 c)直接按系统设定的标准方式搜索目录 d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索 第10章 指针 一、选择题 1.变量的指针,其含义是指该变量的_________. a)值 b)地址 c)名 d)一个标志 2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 3.若有说明;int *p,m=5,n;以下正确的程序段的是________. a)p=&n; b)p=&n; scanf("%d",&p); scanf("%d",*p); c)scanf("%d",&n); d)p=&n; *p=n; *p=m; 4.下面程序段的运行结果是_________. char *s="abcde"; s+=2;printf("%d",s); a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果 5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确 执行的赋值语句是________. a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2); 6.以下正确的程序段是_________. a)char str[20]; b)char *p; scanf("%s",&str); scanf("%s",p); c)char str[20]; d)char str[20],*p=str; scanf("%s",&str[2]); scanf("%s",p[2]); 7.若有说明语句 char a[]="It is mine"; char *p="It is mine"; 则以下不正确的叙述是________. a)a+1表示的是字符t的地址 b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符 8.下面程序的运行结果是_______. #include #include main() { char *s1="AbDeG"; char *s2="AbdEg"; s1+=2;s2+=2; printf("%dn",strcmp(s1,s2)); } a)正数 b)负数 c)零 d)不确定的值 9.下面程序的运行结果是_______. #include #include fun(char *w,int n) {char t,*s1,*s2; s1=w;s2=w+n-1; while(s1 } main() {char *p; p="1234567"; fun(p,strlen(p)); puts(p); } a)7654321 b)1714171 c)1711717 d)7177171 10.若有以下定义,则对a数组元素的正确引用是_________. int a[5],*p=a; a)*&a[5] b)a+2 c)*(p+5) d)*(a+2) 11.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______. a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j 12.若有以下定义,则p+5表示_______. int a[10],*p=a; a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值 二、填空题 1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。 请填空。 #include "stdlib.h" main() {int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; printf("输入3个整数:"); scanf("%d%d%d",a,b,c); printf("%d,%d,%dn",*a,*b,*c); num=*a; if(*a>*b)______; if(num>*c)______; printf("输出最小整数:%dn",num); } 2.下面程序段的运行结果是________. char s[80],*sp="HELLO!"; sp=strcpy(s,sp); s[0]='h'; puts(sp); 3.下面程序段的运行结果是________. char str[]="abc0def0ghi",*p=str; printf("%s",p+5); 4.下面程序的功能是将两个字符串s1和s2连接起来。请填空。 #include main() {char s1[80],s2[80]; gets(s1); gets(s2); conj(s1,s2); puts(s1); } conj(char *p1,char *p2) {char *p=p1; while(*p1)______; while(*p2){*p1=______;p1++;p2++;} *p1='0'; __________; } 5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是_________. 6.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0))的值是________. 7.以下程序将数组a中的数据按逆序存放,请填空。 #define M 8 main() {int a[M],i,j,t; for(i=0;i i=0;j=M-1; while(i { t=*(a+i);________;*(_______)=t; i++;j--; } for(i=0;i } 8.若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用 五种形式引用。它们是: (1)a[i][j] (2)*(a[i]+j) (3)*(*______); (4)(*(a+i))[j] (5)*(____+5*i+j) 9.下面程序的运行结果是_________. main() {char *a[]={"Pascal","C language","dBa","Coble"}; char (**p)[]; int j; p=a+3; for(j=3;j>=0;j--)printf("%sn",*(p--)); } 10. 对两个整数按从小到大顺序输出 void swap(int *x,int *y) {int temp; ____________;__________;________________; } void main() {int a=3,b=5; if(a>b)swap(&a,&b); printf(“%d %dn”,a,b); } 第11章 结构体与共用体 一、选择题 1.C语言结构体类型变量在程序执行期间_________. a)所有成员一直驻留在内存中 b)只有一个成员驻留在内存中 c)部分成员驻留在内存中 d)没有成员驻留在内存中 2.下面程序的运行结果是___________. main() { struct cmplx{int x; int y; }cnum[2]={1,3,2,7}; printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x); } a)0 b)1 c)3 d)6 3.设有如下定义: struct sk {int n; float x; }data ,*p; 若要使p指向data中的n域,正确的赋值语句是_______. a)p=&data.n; b)*p=data.n; c)p=(struct sk *)&data.n; d)p=(struct sk *)data.n; 4.以下对结构体变量stu1中成员age的非法引用是________. struct student {int age; int num; }stu1,*p; p=&stu1; a) b) c)p->age d)(*p).age 5.下面对typedef的叙述中不正确的是______. a)用typedef可以定义各种类型名,但不能用来定义变量 b)用typedef可以增加新类型 c)用typedef只是将已存在的类型用一个新的标识符来代表 d)使用typedef有利于程序的通用和移植 6.以下scanf函数调用语句中对结构体变量成员的不正确引用是________. struct pupil {char name[20]; int age; int x; }pup[5],*p; p=pup; a)scanf("%s",pup[0].name); b)scanf("%d",&pup[0].age); c)scanf("%d",&(p->x)); d)scanf("%d",p->age); 一、填空题 1.以下程序的运行结果是________. struct n{ int x; char c; }; main() {struct n a={10,'x'}; func(a); printf("%d,%c",a.x,a.c); } func(struct n b) { b.x=20; b.c='y'; } 2.若有定义: struct num {int a; int b; float f; }n={1,3,5.0}; struct num *pn=&n; 则表达式pn->b/n.a*++pn->b的值是________,表达式(*pn).a+pn->f的值是________. 3. 以下程序的运行结果是________. struct ks {int a; int *b; }s[4],*p; main() { int n=1; printf("n"); for(i=0;i<4;i++) { s[i].a=n; s[i].b=&s[i].a; n=n+2; } p=&s[0]; p++; printf("%d,%dn",(++p)->a,(p++)->a); } 4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名 和年龄。请在_______内填入正确内容。 stati struct man{ char name[20]; int age; }person[]={"li=ming",18, "wang-hua",19, "zhang-ping",20 }; main() {struct man *p,*q; int old=0 p=person; for( ;p_____;p++) if(old {q=p;______;} printf("%s %d",______); } 5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点 的指针(链表不带头结点)。请在______内填入正确内容。 struct link {char data ; struct link *next; }; .... struct link *p,*first; int c=0; p=first; while(_____) {_______; p=_______; } 6. 设有以下说明,则变量qq在内存中所占的字节数是_______________。 union student { char name[10]; int nl; float ave; } qq; union改成struct后,则变量qq在内存中所占的字节数是_______________。 第13章 文件 一、 填空题 1.系统的标准数入文件是指_________. a)键盘 b)显示器 c)软盘 d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是_______. a)地址值 b)0 c)1 d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件 方式字符串应是______. a)"ab+" b)"wb+" c)"rb+" d)"ab" 4.fscanf函数的正确调用形式是_________. a)fscanf(fp,格式字符串,输出表列) b)fscanf(格式字符串,输出表列,fp); c)fscanf(格式字符串,文件指针,输出表列); d)fscanf(文件指针,格式字符串,输入表列); 函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____. a)只写 b)追加 c)读或读写 d)答案b和c都正确 6.函数调用语句:fek(fp,-20L,2);的含义是_______. a)将文件位置指针移到距离文件头20个字节处 b)将文件位置指针从当前位置向后移动20个字节 c)将文件位置指针从文件末尾处后退20个字节 d)将文件位置指针移到离当前位置20个字节处 7.利用fek函数可实现的操作_________. a)fek(文件类型指针,起始点,位移量); b)fek(fp,位移量,起始点); c)fek(位移量,起始点,fp); d)fek(起始点,位移量,文件类型指针); 8.在执行fopen函数时,ferror函数的初值是_______. a)TURE b)-1 c)1 d)0 第1章 C语言概述 (一)选择题 1 2 3 4 5 6 7 8 9 10 A D C B D (二)填空题 1、 ; 2、 /*……*/ 3、main函数 第3章 数据类型、运算符与表达式 (一)选择题 1 2 3 4 5 6 7 8 9 10 C A B A D D C A B C 11 12 13 14 15 16 17 18 19 20 D C A B D B A C B A 21 22 23 24 25 26 27 28 29 30 D A B D D A A B C A 31 32 33 34 35 36 B B A C A B (二)填空题 1 -1 2 -32768~32767或-215~215-1 3 1 4 26 5 12 、 4 6 2 7 10 、6 8 1 9 1 10 ‘f’ 11 double a=0.618 12 -16 13 9 、 5 14 x=x*(y+2) 15 pow((x+y),1/3.0) 16 a=11,c=6 17 a!=0 && b!=0 或 a*b!=0 (三)阅读程序写结果、 1 1 2 D 3 此题有错 4 D 第4章 顺序结构程序设计 (一)选择题 1 2 3 4 5 6 7 8 9 10 D B、C D C A B (二)填空题 1 i:dec=-4,oct=177774,hex=fffc,unsigned=65532 2 c:dec=120,oct=170,hex=78,ASCII=x 3 x=1 y=2*sum*=3 4 a+=b;b=a-b;a-=b 10 Squared is :100 5 -14 6 1)%d错,应为%f。2)k错,应改为&k 第5章选择结构程序设计 (一)选择题 1 2 3 4 5 6 7 8 9 10 C C C B B B C 第6章循环控制 (一)选择题 1 2 3 4 5 6 7 8 9 10 C A C C C B C C C B (二)填空题 1 c!=’n’ c>=’0’ && c<=’9’ 2 {m=m+n;n=m-n;m=m-n}m%n 即交换m,n使得m>n 3 254 4 -5 5 8 6 第7章数组 (一)选择题 1 2 3 4 5 6 7 8 9 10 D C D B B B D D B B (二)填空题 1 0 3 i==j 5 i-1 4 a[i][j] a[j+1]=a[j] 2 4 6 &a[i] i%4==0 printf(“n”) 10010(完成了十进制转二进制功能) str[0] s 在第一空的下一行加一条语句:if(strcmp(str[1],s)<0)strcpy(s,str[1] j<9-i a[j] a[j+1] 7 #&*&% 第8章函数 (一)选择题 1 2 B A (二)填空题 1 max is 2 3 A+B=9 8 3 B 4 B 5 C 2 4 6 C < x=1 y=1 x=1 y=2 x=1 y=3 n==1 7 a%b!=0 8 9 10 5 int max(int x,int y) c=max(a,b) x>y?x:y 6 pea(n-1)+2 7 temp=*x *x=*y *y=temp 第9章 1 2 3 4 C C D A 第10章指针 一、选择题 1 2 3 4 B D D C 11 12 D A 二、填空题 1 num=*b num=*c 3 ef 5 4 12 7 *(a+i)=*(a+j) (a+j) 9 Coble dBa C language Pascal 第11章结构体与共用体 一、选择题 1 2 3 4 A D C B 二、填空题 1 10,x 3 7,3 5 p!=NULL C=C+1 p->next 第13章 文件 一、选择题 1 2 A B 8 5 B 6 C 7 C 8 9 10 5 B 2 4 6 8 10 6 C hELLO !=’0’ 8 (a+i)+j temp=*x 7 D 8 B 9 C 10 D *p2 8 a *x=*y p1=p *y =temp 5 B 2 4 6 6 D 12 10 7 6.0 old=q->age 16 8 9 10 q->name,q->age 3 C 4 D 5 C 6 C 7 A 8 D 9 10 附部分等级考试题一 二、程序设计语言部分(25分) 1、以下叙述不正确的一项是( )。 A)一个C语言源程序可由一个或多个函数组成 B)一个C语言源程序必须包含一个main函数 C)C语言源程序的基本组成单位是函数 D)在C程序中,main函数必须位于程序的最前面 2、以下有4组用户标识符,其中合法的一组是( )。 A)for,-sub,Ca B)IF,f2_G3,abc C)WORD,void,define D)4d,DO,Size 3、请选出合法的C语言赋值语句( )。 A)m=1,n=1; B)i--; C)m=n=1 D)a=int(m-n); 4、下面正确的字符串常量是( )。 A)”c” B)’w’ C)’hello’ D)’x41’ 5、假设x、i、j和k均为int型变量,则计算下面表达式后,x的值为( )。 x=(i=3,j=6,k=9) A)3 B)6 C)9 D)18 6、下列表达式中,不属于逗号表达式的是( )。 A)m,(n-1) B)m=(m,n) C)m,n=1 D)m=1,n 7、假定int 类型变量占用两个字节,其有定义:int a[5]={0,1,2};,则数组a在内存中所占字节数是( )。 A)3 B)6 C)8 D)10 8、当n=1时,在下列选项中能正确将n的值赋给变量a、b的是( )。 A)(a=n)&&(b=n); B)(a=n)||(b=n); C)a=n=b; D)n=b=a; 9、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。 A)静态(static) B)外部(extern) C)寄存器(register) D)自动(auto) 10、用C语言编写的代码程序( )。 A)是一个源程序 B)可立即执行 C)经过编译即可执行 D)经过编译解释才能执行 11、设P1和P2是指向同一个int型一维数组的指针变量,M为int型变量,则不能正确执行的语句是( )。 A)P1=&M; B)*P1=M; C)P2=*M; D)M=*P2; 12、在以下关于函数调用的叙述中,错误的是( )。 A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以作为一个函数的形参 D)函数调用可以出现在表达式中 13、设有以下说明语句 struct stu { int a; float b; }Datatype; 则下面的叙述不正确的是( )。 A)a和b都是结构体成员名 B)struct stu是用户定义的结构体类型 C)struct是结构体类型的关键字 D)Datatype是用户定义的结构体类型名 14、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( )。 A)for(i=1,p=1;i<=5;i++)p*=i; B)for(i=1;i<=5;i++){p=1;p*=i;} C)i=1;p=1;while(i<=5){p*=i;i++;} D)i=1;p=1;do{p*=i;i++;}while(i<=5); 15、设有以下宏定义: #define A 2 #define B(n) ((A+1)*n) 则执行语句:C=2*(B(4+1));后,C的值为( )。 A)30 B)26 C)14 D)9 16、若程序中定义了以下函数 double add(double a,double b) {return(a+b);} 并将其放在调函数之后,则在调用之前应该对函数进行声明,以下选项中错误的声明是( )。 A)double add(double,double); B)double add(double a,b) C) double add(double b ,double a); D) double add(doduble x,double y); 17、执行语句 “char a[10]=”abcd”;*p=a;”后, *(p+4)的值是( )。 A)”bcd” B)’d’ C)’0’ D)不能确定 18、下面程序段的运行结果是( )。 char c[]=”tb0willn”; printf(“%d”,strlen(c)); A)14 B)3 C)9 D)1 19、已知定义 int x=10,y=20,z=30;,以下语句执行后x,y,z的值为( )。 if(x>y) z=x;x=y;y=z; A)x=10,y=20,z=30 B)x=20,y=30,z=30 C) x=20,y=30,z=10 D) x=20,y=30,z=20 20、下面程序段的运行结果是( )。 int n=0; while(n++<=2) { printf(“%d”,n); } A)1 B)12 C)123 D)1234 21、下列程序的运行结果是( )。 #include void main() { printf(“%f”,2.5+1*7%2/4); } A)2.500000 B)2.750000 C)3.375000 22、下面程序的运行结果是( ) #include void main() {static char a[]=”Language”,b[]=”programe”; char *p1,*p2; int k; p1=a; p2=b; for(k=1;k<=7;k++) { if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); } } A)gae B)ga C)Language D)有语法错 23、下面程序的运行结果是( )。 #include void main() { struct cmplx { int x; int y; }cnum[2]={1,3,2,7}; printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x); } A)0 B)1 C)3 D)6 24、下面程序运行结果是( )。 #include int fun(int x1,int x2) { int x; x1>x2?(x=3):(x=4); return(x+x1); } void main() { printf(“%dn”,fun(7,8)); } D)3.000000 A)9 B)10 C)11 D)12 25、下面程序的运行结果是( )。 #include void main() {i char str[]=”SSSWLIA”,c; for(k=2;(c=str[k])!=’0’;k++) { switch(c) { ca ‘I’:++k;break; ca ‘L’:continue; default:putchar(c);continue; } putchar(‘*’); } } A)SSW* B)SW* C)SW*A D)SW 三、程序阅读选择题(30分) 1、下面程序的功能是:求出存放在一维数组score中的10个学生成绩的平均值。请在________处选择正确的答案将程序补充完整。 #include void main() { float score[10]={98,88,75,94,86,80,92,91,84,77}; float aver,sum=______(1)_______________; int i; printf(“10 scores”); for(i=0;i<10,i++) printf(“%f”,score[i]); printf(“n”); for(i=1;_______(2)____________;i++) _______(3)___________=score[i]; aver=______(4)_____________; printf(“average score is %5.2f”,aver); } (1)A)score B)score[0] C)0 D)1 (2)A)i<10 B)i<=10 C)i<11 D)i<9 (3)A)score+ B)sum+= C)sum D)sum+ (4)A)sum B)sum+10 C)sum/10 D)sum%10 2、下面程序的功能是:选出能被3整除且数位上至少有一位是5的两位数,输出所有这样的数及其个数。请在____________处选择正确的答案将程序补充完整。 #include void main() { int k,num=0; int a1,a2; for(k=10;k<=99;k++) { a2=______(5)_________; a1=______(6)_________; if((k%3==0&&a2==5)____(7)___________(k%3==0&&a1==5)) { printf(“%3d”,k); num++; } } printf(“nnum=%d”,num); } (5)A)k*10 B)k%10 C)k/10 D)k*10%10 (6)A)k-a2*10 B)k-a2 C)k-a2/10 D)k-a2%10 (7)A)&& B)|| C)& D)| 3、下面程序的功能是:主函数调用了Max函数,实现在N行M列的二维数组中,找出所有元素中的最大值。请在_________处选择正确的答案将程序补充完整。 #include #define N 3 #define M 4 int Max(int x[N][M]) { int i,j,p; p=x[0][0]; for(i=0;i for(j=0;j if(x[i][j]>p) ___(8)____________; return( ____(9)____ ); } void main() { int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1}; printf(“%d”,_______(10)__________); } (8)A)x[i][j]=x[i][p] B)p=x[i][j] C)p=j D)j=p (9)A)x[i][j] B)x[i][p] C)x D)p (10)A)Max(x) B)Max(int x[N][M]) C)Max(x[N][M]) D)Max(&x) 4、下面程序的功能是:确定输入的日期是一年中的第几天(1~366)。其中sum_day函数用来计算输入日期的天数,leap函数返回是否闰年的信息。请在_______-处选正确答案将程序补充完整。程序运行效果如下: Input date(year,month,day):2000,10,1 2000/10/1 is the 275th day in 2000. #include void main() { int sum_day(int month,int day); int leap(int year); int year,month,day,days; printf(“nInput date(year,month,day):”); ___________(11)________________________; printf(“n%d/%d/%d” ,year,month,day); days=sum_day(month,day); if(____(12)_____________&&_____(13)________________) days=days+1; printf("is the %dth day in %d.n”,days,year); } int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sum_day(int month,int day) { int i; for(i=1;i ________(14)___________________; return(day); } int leap(int year) { int leap; leap=________(15)___________________; return (leap); } (11)A)scanf(“%d%d%d”,year,month,day) B) scanf(“%d,%d,%d”,year,month,day) C) scanf(“%d%d%d”,&year,&month,&day) D) scanf(“%d,%d,%d”,&year,&month,&day) (12)A)year B)!leap(year) C)leap(year) D)year=leap(year) (13)A)month>=2 B)month>=3 C)month==2 D)month!=2 (14)A)day+=day_tab[i] B) day+=day_tab[i-1] C) day+=day_tab[i+1] D) day=day_tab[i] (15)A)year%4==0||year%100!=0||year%400==0 B) (year%4==0&&year%100==0)||year%400!=0 C)(year%4==0&&year%100!=0)||year%400!=0 D)(year%4==0&&year%100!=0)||year%400==0 试题四、综合应用题(15) 编程实现输入一行字符,统计该行字符中字母、数字、空格和其他字符的个数。要求:在主函数中输入字符串以及输出上述结果。 (二) 试题二、语言基础选择题 1.在TurboC语言环境中,无符号整型(unsigned int)数据类型的取值范围是( )。 A)-32768至32767 B)0至32767 C)0至65535 D)0至65536 2.下面不可以作为C语言程序中标识符的是( )。 A)_total B)3day C)BASIC D)Class 3.能正确表示逻辑关系“x>=10或x<=0的C语言表达式是( )。 A)x>=10 or x<=0 B)x>=0|x<=10 C) x>=10 && x<=0 D) x>=10 || x<=0 4.运行程序段:int a=12;double b=3.141592;printf(“%d%7.5f”,a,b);的输出结果是( )。 A)123.14159 B)12 3.14159 C)123.141590 D)123.141592 5.在C语言中能代表逻辑“真”的是( )。 A)YES B)NOT C)非0的数 D)等于0的数 6.若函数中有定义语句:int i;,则( )。 A)系统将自动给i赋初值0 B)系统将自动给i赋初值1 C)此时i中无任何值 D)此时i中值无意义 7.以下错误的变量定义语句是( )。 A)float floatint B)float int_ C)float float D)float intfloat 8.设有定义:int a=2;,以下表达式中,值不是6的是( )。 A)a=2*a,a+=2 B)a*a+1 C)a*=(1+a) D)a++,a*2 9.若有说明:int a[2][4];,则对a数组元素的正确引用是( )。 A)a[1+1][0] B)a[1][3] C)a(1)(3) D)a[1,3] 10、以下程序段中的变量已正确定义 for(i=0;i<4;i++) for(j=1;j<3;j++); printf(“*”); 程序段的输出结果是( )。 A)******** B)**** C)** D)* 11.设变量已经正确定义,以下不能统计出一行中输入字符个数(不包括回车符)的程序段是( )。 A)n=0;while((ch=getchar())!=’n’)n++; B)n=0;for(ch=getchar();ch!=’n’;n++); C)n=0;while(getchar()!=’n’)n++; A)for(n=0;getchar()!=’n’;n++); 12.设有定义,int x,y;,以下语句:x+=y;y=x-y;x-=y;的功能是( )。 A)把x和y按从小到大排列 B) 把x和y按从大到小排列 C)无确定结果 D)交换x和y中的值 13.下列叙述中,正确的是( )。 A)C语言的函数可以嵌套调用 B) C语言的函数可以嵌套定义 C)C语言的子程序有过程和函数两种 D)C语言函数编译时不检查语法 14.变量的指针,其含义是指该变量的( )。 A)值 B)名 C)一个标志 D)地址 15.以下是if 语句的基本形式:if(表达式)语句;,其中表达式( )。 A)必须是逻辑表达式 B)必须是关系表达式 C)必须是逻辑表达式或是关系表达式 D)可以是任何合法的表达式 16.下面不能正确把字符串“welcome”赋值给数组s的是( )。 A)char s[10]={‘w’,’e’,’l’,’c’,’o’,’m’,’e’}; B)char s[10]=”welcome”; C) char s[10];s=” welcome”; D) char s[10];strcpy(s,”welcome”); 17.一个C语言程序可以包括多个函数,程序总是按照如下( )所描述的方式执行当前的程序。 A)从本程序的main()函数开始,到本程序文件的最后一个函数结束 B)从本程序的第一个函数开始,到本程序文件的最后一个函数结束 C)从main()函数开始,到main()函数结束位置结束 D)从本程序的第一个函数开始,到本程序main()函数结束 18.执行语句int a=5,b=6;a=(b=10,b++);后,a、b的值分别为( )。 A)11,11 B)6,10 C)10,11 D)7,10 19.下面程序段不是死循环的是( )。 A)for(int i=1;i;i++){} B)int a=10; while(a)a--; C)int k=0; D)int k=0; while(k>=0){k++;} do{k++;}while(k); 20.下面对数组S的声明和初始化语句正确的是( )。 A)int S[][3]={1,2,3,4,5,6,7,8}; B) int S[][]={{1,2,3},{4,5,6},{7,8,9}}; C)int S[2][3]={{1,2},{3,4},{4,5}} D)int S[3][]={{1,2,3},{4,5,6},{7,8,9}}; 21.下面( )语句可以正确地声明整型变量a,b,c并给它们分别赋初值3。 A)int a,b,c=3 ; B)int a=b=c=3; C)int a=3,int b=3,int c=3 D)int a,b,c;a=b=c=3; 22.下面常数中不能作为C的常量的是( )。 A)oxA5 B)2.3e-3 C)3e2 D)0582 23.若有int型变量i=1和s=0,有如下语句段: while(1) {if(i>100)break; s+=i; i++; } 与该语句段功能相同的是( )。 A)for(;i<100;i++)s+=i; B)for(;i<100;i++;s+=i); C)for(;i<=100;i++)s+=i; D)for(;i>=100;i++,s+=i); 24.运行下面程序,当从键盘输入“2345”回车后程序的运行结果是( #include int s(int n) { return(n/10+n%10); } main() { int i,j; scanf(“%d”,&i); j=s(s(s(i))); printf(“%dn”,j); } A)2 B)45 C)5 D)23 25.运行下面程序,当从键盘输入“357”回车后程序的运行结果是( #include main() {int c; while((c=getchar())!=’n’) switch(c-‘3’) { ca 0: ca 1:putchar(c+4); ca 2:putchar(c+4);break; ca 3:putchar(c+3); default:putchar(c+2);break; } printf(“n”); } A)7799 B)99 C)356 D)77659879 三、阅读程序题 1、下面程序运行后,输出的结果是( )。 #include void f(int i) { if(i>0)f(i-1); printf(“%d ”,i); } 。 )。 ) void main() { f(5); } A)1 2 3 4 5 B)5 4 3 2 1 C)0 1 2 3 4 5 D)5 4 3 2 1 0 2、下面程序运行后,输出结果是( ) #define T(x,y) (x)<(y)?(x):(y) main() {int i,j,k; i=10,j=15,k=10*T(i,j); printf(“%dn”,k); } A) 10 B)15 C)100 D)150 3、下面程序运行后,输出的结果是( )。 #include main() {char *s[]={“Tom”,”Jack”,”Mike”},*p; p=s[1]; printf(“%c,%sn”,*(p+1),s[0]); A)o,Jack B)J,Jack C)a,Tom D)o,Tom 4、下面程序运行后,输出的结果是( )。 #include int f(char *s) { char *p=s; int n=0; while(*p!=’0’) {if (*p>=’0’ &&*p<=’9’) n++; p++; } return n; } main() { char *p=”good 56789”; printf(“%dn”,f(p)); } A)9 B)35 C)0 D)5 5、下面程序的功能是:函数void f(char *s,int m)将字符串s逆序后仍然存放在其中,参数m为s的长度;在主函数中任意输入一个长度不超过50个字符的字符串,调用函数f后将其逆序输出,请在________处选择正确的答案将程序补充完整。 #include #include void f(char *s,int m) { char c,*p1,*p2; p1=s; p2=______(1)__________; while (p1 { c=*p1; _____(2)________; *p2=c; ______(3)_________; *p2--; } } main() { char str[50]; gets(str); _______(4)_____________; printf(“%sn”,str); } (1)A)s B)s+m-1 C)s[m] D)s+m (2)A)p2=p1 B)*p2=*p1 C)p1=p2 D)*p1=*p2 (3)A)p1++ B)p1- - C)p1+=m D)p1-=m (4)A)f(&str,strlen(str)) B)f(*str,50) C)f(str,strlen(str)) D)f(*str,strlen(str)) 6、下面程序的功能是:将数组a中的数据用冒泡法按从小到大顺序排列,并将排序的结果以每行5个数据的格式输出。请在____________处选择正确的答案将程序补充完整。 #include #define N 10 main() { int a[N]={2,6,2,5,7,9,7,8,7,3}; int i,j,k,n,t; /*用冒泡法将数组a中的元素按从小到大排序*/ for(i=0;i for(j=0;j if_____(5)______ { t=a[j];a[j]=a[j+1];a[j+1]=t; } /*以每行5个数据的格式输出数组a*/ for(k=0;k<=N-1;k++) {printf(“%3d”,_______(6)______________); if(______(7)_________) printf(“n”); } printf(“n”); } (5)A)a[j]a[j+1] C)a[j-1]a[j] (6)A)*(a+k) B)*(a+k-1) C)*a D)*a+k (7)A)k%5 B)k/5 C)k%5==0 D)k/5==0 7、下面程序的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为”ABCD”时,t所指数组中的内容为”DCBAABCD”。请在——处选择正确的答案将程序补充完整。 #include “stdio.h” #include “string.h” void sub(char *s,char *t) { int i,d; d=strlen(s); for_____(8)______;i t[i]=s[d-1-i]; for(i=0;i t[d+i]=______(9)___________; ______(10)_________=’0’; } main() { char s[100],t[100]; printf(“n Plea enter string s:”); scanf(“%s”,s); ________(11)_____________; printf(“n The result is:%sn”,t); } (8)A)i=1 B)i=d-1 C)i=0 D)i=d-i-1 (9)A)s[i] B)t[i] C)s[d-1-i] D)t[i-1] (10)A)t[d] B)t[2*d] C)t[d+i] D)t[i] (11)A)sub(s,t) B)sub(s[],t[]) C)sub(*s,*t) D)sub(s,t); 试题三、编程题 已知一个2*3的矩阵存储在二维数组a中,请编写一个C程序完成将其转置后存储在数组b中。要求:输出转置前后的数组a和b。 (三) 一、语言基础选择题 1、在C语言程序中,包括的函数最多有( )个。 A)0 B)1 C)2 D)不限 2、下面叙述中,错误的是( )。 A)C语言程序第一行必须是main()函数 B)一个C程序必须且只能有一个main()函数 C)main()函数是程序执行时的唯一入口 D)一个C程序可以由一个或多个函数构成 3、C语言规定,在一个源程序中,main()函数的位置( )。 A)必须在最后 B)可以任意 C)必须在最开始 D)必须在系统调用的库函数的后面 4、C语言中最简单的数据类型包括( )。 A)整型、字符型、逻辑型 B)整型、实型、字符型 C)字符型、实型、逻辑型 D)整型、实型、逻辑型 5、C语言中用于结构化程序设计的3种基本结构是( )。 A)if,for,continue B)for,while,do-while C)if,switch,break D)顺序结构、选择结构、循环结构 6、下面( )是正确的变量定义语句。 A)int int_; B)int float ; C)int_ int; D)float int; 7、下面四个选项中,均是合法整型常量的选项是( )。 A)160,0xff,011 B)-0xcd,01a,0xe C)-01986,0120668 D)-0x48a,2e50x 8、代表“水平制表”转义字符常量是( )。 A)’b’ B)’f’ C)’t’ D)’n’ 9、下面能够正确表示字符串常量的表达式是( )。 A)’student’ B)student C)”student” D)’student0’ 10、表达式(int)1.7*2+8/3-3%2的值是( )。 A)2 B)3 C)4 D)5 11、若有代数式3AB÷CD,则不正确的C语言表达式是( )。 A)A/D/C*B*3 B)3*A*B/D/C C)3*A*B/C*D D)A*B/C/D*3 12、C语言允许函数值类型缺省定义,此时函数值隐含的类型是( )。 A)float型 B)int 型 C)long型 D)double型 13、执行语句int i=5,j=6;i=(j=2*3,j*5);后,i的值为( ). A)6 B)12 C)30 D)36 14、有int 型变量a和b,若a=12,b=12345,执行语句printf(“%4d%4d”,a,b)的输出结果是( )。 A)12 123 B) 1212345 C)12 1234 D)12 2345 15、Turbo C语言环境中,若有int x=-1;,则语句printf(“%d%u”,x,x)的输出结果是( )。 A)-1 -1 B)-1 32767 C)-1 32768 D)-1 65535 16、下面叙述中,不正确的是( )。 A)函数中的形式参数是局部变量 B)在一个函数内定义的变量只在本函数范围内有效 C)在一个函数内的复合语句中定义的变量在本函数范围内有效 D)在不同的函数中可以使用相同名字的变量 17、函数中有整型变量x,为保证其在未赋初的情况下初值为0,应选择的存储类别( )。 A)static B)auto C)register D)auto 或 register 18、给出以下定义: char a[]=”123456”; char b[]={‘1’,’2’,’3’,’4’,’5’,’6’}; 则正确的叙述为( )。 A)数组a的长度小于数组b的长度 B)数组a 的长度大于数组b的长度 C)数组a的长度等于数组b的长度 D) 数组a 和数组b等价 19、下面语句中与k=n++;等价的语句是( )。 A)k=n;n=n+1; B)n=n+1;k=n; C)k=++n; D)k+=n+1; 20、运行下面程序后,输出的结果是( )。 #include void main() {char s[]={‘a’,’b’,’0’,’c’,’0’}; printf(“%s”,s); } A)’a’’b’ B)ab C)ab c D)abc 21、下列条件语句中,功能与其他语句不同的是( )。 A)if(a) printf(“%dn”,x);el printf(“%dn”,y); B)if(a==0)printf(“%dn”,y);el printf(“%dn”,x); C)if(a) printf(“%dn”,x);el printf(“%dn”,y); D) if(a==0) printf(“%dn”,x);el printf(“%dn”,y); 22、已知有数组定义语句 int a[10]; ,则对数组a的正确使用是( )。 A)a[10] B)a[1,2] C)a(3) D)a[10-10] 23、已知有数组定义语句int a[2][3]={{1,2},{3,4}}; ,则a[1][2]的值是( )。 A)3 B)4 C)0 D)2 24、运行下面程序后,输出的结果是( )。 #define T(x,y) (x)<(y)?(x):(y) #include void main() {int i,j,k; i=2,j=3,k=10*T(i,j); printf(“%dn”,k); } A)2 B)3 C)20 D)30 25、有程序如下: #include void main() {int s=0,a=1,n; scanf(“%d”,&n); do {s+=1; a=a-2; }while(a!=n); printf(“%dn”,s); } 若要使程序输出值为2,则应从键盘输入n值为( A)0 B)-5 C)-3 D)-1 (四) 一、程序阅读选择题 (1)有以下程序 #include(stdio.h> main() {int a=l;b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\n",a,b); } 程序运行后的输出结果是 A)9,18 B)8,11 C)7,11 D)10,14 (2)有以下程序,其中k的初值为八进制数 #include main() {int k=011; printf("%d\n",k++); } 程序运行后的输出结果是 A)12 B)11 C)10 D)9 (3)有以下程序 #include<stdio.h> main() {in i,j,m=1; for(i=1;i<3;i++) {for(j=3;j>O;j--) {if(i*j>3)break; } m=i*j; } 。 ) printf("m=%d\n",m); } 程序运行后的输出结果是_______ A)m=6 B)m=2 C)m=4 D)m=5 (4)有以下程序 #include(stdio.h> main() {int a=l,b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\n",a,b); } 程序运行后的输出结果是 A)9,18 B)8,11 C)7,11 D)10,14 (5)以下关于return语句的叙述中正确的是( ) A)一个自定义函数中必须有一条return语句 B)一个自定义函数中可以根据不同情况设置多条return语句 C)定义成void类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处 (6)下列选项中,能正确定义数组的语句是 A)int num[0..2008]; B)int num[]; C)int N=2008; int num[N]; D)#define N 2008 int num[N]; (7)若有定义int(*Pt)[3];,则下列说法正确的是( ) A)定义了基类型为int的三个指针变量 B)定义了基类型为int的具有三个元素的指针数组pt C)定义了一个名为*pt、具有三个元素的整型数组 D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 (8)设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是( ) A)(*s)[3] B)*(s+3) C)*s[3] D)*s+3 (9)有以下程序 #include(stdio.h) main() {int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0; for(i=0;i<5;i++) s=s+a[b[i]]); printf("%d\n", s); } 程序运行后的输出结果是 A)6 B)10 C)11 D)15 10若有以下定义和语句 char s1[10]="abcd!",*s2="n123"; printf("%d %dn", strlen(s1),strlen(s2)); 则输出结果是 A)5 5 B)10 5 C)10 7 D)5 8 11)#include #define SUB(a) (a)-(a) main() { int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf("%d\n",d); } 程序运行后的输出结果是 A)0 B)-12 C)-20 D)10 12)有以下程序 #include int fun() { static int x=1; x=x*2; return x; } main() {int i,s=1; for(i=1;i<=2;i++)s=fun(); printf("%dn",s); } 运行程序的结果是:( ) A)O B)1 C)4 D)8 二、程序填空题 (1)有以下程序 #include main() { int i,j,a[][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) {for(j=i;j<3;j++) printf(“%d ”,a[i][j]); printf("n"); 1 2 3 } } 5 6 程序运行后的输出结果是 ____________________。 9 (2)#include #include void fun(char *str) {char temp;int n,i; n=strlen(str); temp=str[n-1]; for(i=n-1;i>0;i--)str[i]=str[i-1]; str[0]=temp; } main() {char s[50]; scanf("%s",s); fun(s); printf("%sn",s);} 程序运行后输入:abcdef<回车>,则输出结果是 fabcde___________ 。 (3)以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。 #include main() { int x=256; printf("%d-%d-%dn", _x%10_______ ,x/10%10,x/100); 第一套 二选择题 三、 1 B 2 A 3 D 4 C 5 C 6 A 7 B 8 B 9 D 10 A 11 D 12 C 13 B 14 A 15 D 第二套 二选择题 1 C 1 D 16 B 16 A 1 C 2 B 2 B 17 C 17 C 三、 2 B 3 C 4 D 5 1 B 2 D 3 A 4 C 6 5 B 6 A 7 C 7 8 C 9 A 10 C 11 D 3 D 3 D 18 B 18 C 4 A 4 B 19 B 19 B 5 C 5 C 20 C 20 A 6 D 6 B 21 A 21 D 7 C 7 D 22 A 22 D 8 B 8 A 23 D 23 C 9 B 9 D 24 C 24 C 10 B 10 A 25 B 25 A 11 B 11 C 12 D 12 C 13 A 13 D 14 D 14 B 15 D 15 B (三) 1 D 16 C 2 A 17 A 3 B 18 B 4 B 19 A 5 D 20 B 6 A 21 D 7 A 22 D 8 C 23 C 9 C 24 B 10 B 25 C 11 C 12 B 13 C 14 B 15 D (四) 一、选择题 1 D 2 D 3 A 4 D 5 B 6 D 7 D 8 B 9 C 10 A 11 C 12 C 13 14 15 二、程序填空题 (1)1 2 3 5 6 9 (2)fabcde (3)x%10
本文发布于:2024-04-01 22:50:04,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/1241405.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |