13、判断变量ch中的字符是否为大写字母,最简单的正确表达式是(A)。
A、ch>='A'&&ch<='z'
B、A<=ch<=Z
C、'A'<=ch<='z'
D、ch>=A&&ch<=z
14、在C语言中,能表示无符号长整型常数的是(D )。
A、OL
B、4962710U
C、912374u
D、2UL
15、能正确表示C语言的字符常量的是(C)。
A、'\0x41'
B、''A''
C、'\0'
D、''\0''
16、C语言中逻辑表达式的值为(A )。
A、0或1
B、非零值或零值
C、true或false
D、'true'或'false'
17、C语言提供的基本数据类型关键字是(C )。
A、integer
B、FLOAT
C、unsigned
D、Double
18、若定义语句:int b[ ]={1,2,3,4,5},*P=b;则表达式*p++的值是( A )。
A、1
B、2
C、b[0]的地址
D、b[1]的地址
19、在下列选项中,不正确的表达式是(C )。
A、a>b
B、c--, ++b, a+=1
C、a=c+b>n-m=k
D、p++
20、若有以下定义:
int a[ ]={1,2,3,4,5,6,7};
char cl='b',c2='2';
则数值不为2的表达式是(D )。
A、a[1]
B、'd'-cl
C、a['3'-c2]
D、c2-0
25、下述对C语言字符数组的描述中错误的是(C )。
A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D、不可以用关系运算符对字符组中的字符串进行比较
27、以下程序的输出结果是(A )。
main()
{int i=010, j=10, k=ox10;
printf(''%d,%d,%d\n'',i,j,k);
}
A、8,10,16
B、8,10,10
C、10,10,10
D、10,10,16
28、以下程序的输出结果是(B)。
#include<stdio.h>
main()
{printf(''%d\n'',NULL);}
A、不确定的值(因变量无定义)
B、0
C、-1
D、1
29、以下程序的输出结果是(B )。
main()
{char c1='6',c2='0';
printf(''%d,%d,%d\n'',c1,c2,c1-c2);
}
A、因输出格式不合法,输出出错信息
B、54,48,6
C、6.0,7
D、6,0,6
32、下述对C语言字符数组的描述中错误的是(C )。
A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算符''=''对字符数组整体赋值
D、不可以用关系运算符对字符组中的字符串进行比较
33、Turbo C中,对于以下程序(A )。
main()
{int x,y;
y=creat(&x);
printf(''%d \n'', y);
}
creat(int a)
{return a++;}
A、编译时会给出错信息
B、顺利进行编译、连接、执行;不报任何错误
C、顺利通过编译、连接、但不能执行
D、顺利通过编译,但连接出错
34、设有如下定义:
int x=10, y=4,z;
则语句:
printf(''%d\n'', z=(x%y, x/y));
的输出结果是(C )。
A、1
B、0
C、2
D、3
35、下述程序段的输出结果是(D )。
main()
{int x=10, y=10;
printf(''%d, %d\n'', x++, ++y);
}
A、10,10
B、11,11
C、11,10
D、10,11
36、定义如下变量和数组:
int j;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( C )。
for(i=0;i<3;i++﹚
printf(''%d'', x[i][2-i]);
A、159
B、147
C、357
D、369
37、若要求在if后一对圆括号中表示a不等于0的关系,则不能正确表示这一关系的表达式为( C )。
A、a<>0
B、!a
C、a=0
D、a
38、若m,y,z均为int型变量,则执行下面语句后m值是(A )。
m=1;x=2;y=3;z=4;
m=(m<x)?m:x;
m=(m<y)?m:y;
m=(m<z) ?m:z;
A、1
B、2
C、3
D、4
39、若有定义:int a=7;float x=2.5,y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值是(A )。
A、2.500000
B、2.750000
C、3.500000
D、0.000000
40、如下说法不正确的是(C )。
A、c>a+b等效于c>(a+b)
B、若a,b均为真,则a||b为真
C 、表达式'c'&&'d'的值为0
D 、逻辑运算符!比逻辑运算符||的优先级高 41、putchar ()函数可以向终端输出一个( B )。 A 、整型变量表达式值 B 、字符 C 、字符串 D 、实型变量值 42、表达式18/4*sqrt (4.0)/8值的数据类型为( C )。 A 、int B 、float C 、double D 、不确定 43、若已定义a 为整型变量: a=-2L ;
printf (''%d\n'',a ); 则以上语句( B )。
A 、赋值不合法
B 、输出值为-2
C 、输出为不确定值
D 、输出值为2 45、若int 类型数据占两个字节,则以下语句的输出为( D )。 int k= -1;
printf (''%d,%u\n'',k,k );
A 、-1,-1
B 、-1,32767
C 、-1,32768
D 、-1,65535 46、已知字母a 的ASCII 码十进制值为97,则执行以下语句后的输出为( C )。yhg char a='a'; a--;
printf (''%d,%c\n'',a+'2'-'0',a+'3'-'0'); A 、b,c B 、a —运算不合法,故有语法错
C 、98,c
D 、格式描述和输出项不匹配,输出无定值 47、下面语句中( B )是C 语言的正确赋值语句。
A 、a=1,b=2
B 、I++;
C 、a=b=5
D 、y=int(x); 48、设有以下说明语句 struct stu { int a; float b; }stutype;
则下面的叙述不正确的是( C )。
A 、struct 是结构体类型的关键字
B 、struct stu 是用户定义的结构体类型
A 中声明变量并初始化时:int a=1,b=5;但是,只赋值时是不能这样写的,应该写成a=1;b=2;C 无分号,不是完整的语句,D 中x 没有定义,如果是 int x=3;int y; y=int(x);这样是对的
C、stutype是用户定义的结构体类型名
D、a和b都是结构体成员名
49、能正确表示:当x的取值范围在[1,10]或[100,110]内为真,否则为假的表达式是( C )。
A、(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)
B、(x>=1)||(x<=10)||(x>=100)||(x<=110)
C、(x>=1)&&(x<=10)||(x>=100)&&(x<=110)
D、(x>=1)||(x<=10)&&(x>=100)&&(x<=110)
50、设n为整型变量,则循环语句for(n=10;n>0;n--)的循环次数为(A)。
A、10
B、9
C、11
D、12
51、在对文件进行操作时,若要求文件的位置指针回到文件的开头,则应当调用的库函数是( D )。
A、fopen()
B、fseek()
C、fclose()
D、rewind()
52、下列哪个数组定义是正确的(D )。
A、int a[5.5];
B、INT a[10];
C、int a[n];
D、int a[3+2];
53、一个变量的指针就是(A )。
A、变量的地址
B、变量的值
C、变量的名称
D、变量的类型
55、下列正确的说法是(C )。
A、宏替换是在程序运行时进行的
B、函数调用是在程序编译时进行的
C、宏替换时,如果实参是表达式,应先求表达式的值,再替换
D、函数调用时,如果实参是表达式,应先求表达式的值,再替换
56、对于数学式x/2a,下面正确的C语言表达式是(D )。
A、sqr(x)/2a
B、sqr(x)/2*a
C、sqrt(x)/(2*a)
D、sqrt(x)/2*a
57、若int类型数据占2字节,则以下语句的输出为(D )。
int k=32768;
printf(''%d,%u\n'',k,k);
A、-1,65535
B、-1,32767
C、-1,-1,
D、-32768,32768
59、下面程序中(B )有错误。
1)#include<stdio.h>
2)main ( )
3){
4)int a[3]={0,0,0}; 5)int i;
6)for(i=0;i <3;i++﹚scanf(''%D'',&a[i]); 7)for(i=1;i <3;i++﹚a[0]=a[0]+a[i]; 8)printf(''%d\n'',a[0];}
A 、第4行
B 、第6行
C 、第7行
D 、第8行 60、下面程序的运行结果( C )。 main( )
{ unsigned a=3,b=10;5 printf(''%d\n''a <<2|b >>1=; }
A 、3
B 、10
C 、13
D 、14 61、已定义x 为float 型变量。 x=213.82631;
Printf(''%-4.2f\n'',x); 则以上程序( A )。
A 、输出格式描述符的域宽不够,不能输出
B 、输出为213.83
C 、输出为213.82
D 、输出为-213.82 62、设已定义整型变量K ,则下面的程序输出为( D )。 k=017;s=111; printf (''%d'',++k ); printf (''%x\n'',s++);
A 、15 6f
B 、16 70
C 、15 71
D 、16 6f 63、不能正确表示a*b/c*d 的C 语言表达式是( C )。
A 、a*b/c*d
B 、a/(c*d)*b
C 、a*b/c/d
D 、a*b/(c*d)
64、下列( C )表达式不满足;当x 的值为偶数时值为“真”,为奇数时值为“假”。 A 、x%2= =0 B 、!x%2!=0 C 、x/2*2-x= =0 D 、!(x%2) 65、设已定义k 为int 型变量,则下面while 循环执行( C )次。 k=10;
while(k=0)k=-1;
A 、执行10次
B 、无限循环
C 、一次也不执行
D 、执行一次
%m.nd 表示最大场宽m ,小数位为n 位,整数位则为m-n-1位,够m 位右对齐。%-m.nf 可以控制输出左对齐
67、用高级语言编写的程序称之为(A)。
A、源程序
B、目标程序
C、汇编程序
D、命令程序
69、有以下程序的输出结果为(B )。
main( )
{ char a=0x95,b,c;
b=(a&0xf)<<4;
c=(a&0xf0)>>4;
a=b|c;
printf(''%x\n'',a);
}
A、24
B、59
C、34
D、56
70、下述程序段的输出结果是(A)。
int a=3;b=4;
int c=a^b>>3;
printf(''%d'',c)
A、3
B、4
C、5
D、6
73、设int型变量在内存中占用两个字节存储单元,定义如下结构体:
struct student
{ char name[10];
char sex;
int age;
struct
{ int year;
int month;
int day;
}birth;
}stul;
则表达式sizeof(stul)的值是()。
A、5
B、8
C、2
D、26
75、下述程序段的运行结果是( B )。
#include
main( )
{ int m=7,n=4;
float a=38.4,b=0.4,x;
x=m/2+n*a/b+1/2;
printf(''%f\n'',x);
}
A、22
B、387.000000
C、27
D、26
76、下面程序的运行结果是(C )。
main( )
{ int cl=2,c2=0;
while(!c2- -)
printf(''%d%d'',cl- -,c2);
}
A、陷入死循环
B、不输出任何内容
C、输出2 -1
D、输出20
77、下面程序的运行结果是(B)。
int m=4,n=6;
max(int x,int y)
{ int max;
max=x>y?x:y;
return(max);
}
main( )
{ int m=10;
printf(''%d\n'',max(m,n));
}
A、4
B、10
C、6
D、5
78、下面程序的运行结果是(B )。
fun(int p)
{ int k=1;
static t=2;
k=k+1;
t=t+1;
return(p*k*t);
}
main( )
{ int x=4;
fun(x);
printf(''%d\n'',fun(x));
}
A、4
B、32
C、30
D、16
79、阅读下面的程序:
main( )
{ char ch;
scanf(''%c'',&ch);
if(ch>='a'&& ch<='z')
ch=ch-32;
printf(''%c'',ch);
}
若输入字符为:e,则程序运行结果为( A )。
A、E
B、A
C、e
D、z
80、下面程序的运行结果是(B)。
main( )
{ static int a[3][3]={{3,2,1},(4,5,6),{-2,9,1}};
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ if(i= =j)
sum=sum+a[iJ[j]];
}
printf(''sum=%d'',sum);
}
A、sum=10
B、sum=9
C、9
D、10
84、下述程序的运行结果是(A )。
#include
void fun(int x)
{
putchar('0'+(x% 10));
fun(x/10);
}
main( )
{
printf(''\n'');
fun(1234);
}
A、4321
B、321
C、21
D、1
86、设已定义i和k为int类型变量,则以下for循环语句(B)。
for(i=0,k=-1;;i++,k++)
printf(''* * * *\n'');
A、判断循环结束的条件不合法
B、是无限循环
C、循环一次也不执行
D、循环只执行一次
87、下列程序段选择项中,使i的运行结果为4的程序段是(D)。
A、int i=0,j=0;
B、int i=1,j=70;
(i=3,(j++)+i); j=i=((i=3) *2);
C、int i=0,j=1;
D、int i=1,j=1;
(j= =1)?(i=1):(i=3); i+=j+=2;
89、阅读以下程序(最左边是附加的行号)。
1)#include
2)main( )
3){ float s[5];
4)int i,k=0;
5)for(i=0;i<5;i++)
6)scanf(''%d'',s+i);
7)for(i=0;i<5;i++)
8)k=s[i];
9)printf(''\n%f'',(float)k);
10)}
此段程序(A)。
A、没有错误
B、第4行错误
C、第6行错误
D、第9行错误
90、下列程序中有三个是完全相同的功能,只有(B )所完成的功能与其他程序不同。
A、s=0;
B、s=0;
i=0; i=1;
while(i<=100) while(i++<100)
s+=i++; s+=i;
C、s=0;
D、s=0;
i=0; i=0;
while(i<=100) while(++i<=100)
s+=++i; s+=i;
92、执行下面的程序后,a的值为( D )。
main( )
{ int a,b;
for(a=1,b=1;a<=100;a++)
{ if(b>=20)break;
if(b%3= =1)
b+3;
continue;
}
b-=5;
}
A、7
B、8
C、
D、10
93、下面的程序中(C )有错误。
1)#include
2)main( )
3){
4)float a[3]={0.0};
5)int i;
6)for(i=0;i<3;i++)
7)scanf(''%D'',&a[i]);
8)for(i=1;i<3;i++)a[0]=a[0]+a[i];
9)printf(''%f\n'',a[0]);
}
A、第4行
B、第6行
C、第7行
D、第8行
94、以下程序的输出结果是(C )。
#include
main( )
{ int i;
for(i=1;i<5;i++)
{ if(i%2)
printf(''+'')
else
continue;
printf(''-'')
}
printf(''$\n'');
}
A、+-+-+-$
B、-+-+-+$
C、+-+-$
D、-+-+$
95、下述程序段的输出结果是(C)。
int x=3;
do
{ printf(''%d'',x-=2);
}while(!(--x));
A、1
B、30
C、1-2
D、死循环
96、定义如下变量:
int n=10;
则下列循环的输出结果是( A )。
while(n>7)
{ n--;
printf(''%d'',n);
}
A、1098
B、987
C、10987
D、9876
100、两次运行下面的程序,如果键盘上分别输入6和4,则输出结果是(A )。
main( )
{ int x;
scanf(''%d'',&x);
int(x++>5)
printf(''%d\n'',x--);
}
A、7和5
B、6和3
C、7和4
D、6和4
101、运行下段程序的结果是(D )。
#include
main( )
{ int x;
for(x=1;x<=100;x++)
if(++x%= =0)
if(++x%3= =0)
if(++x%5= =0)
printf(''%d'',x);
}
A、31,61,91
B、30,60,90
C、不输出任何内容
D、29,59,89
102、运行下述程序段后,i值为4的是(B)。
A、int i=1,j=0;
B、inti=1,j=1;
i=j=((i=3)++); i+=i+=2;
C、int i= =0,j=0;
D、int i=0,j=1;
(i=2,i+(j=2)); (j= =1)?i+=3:i=2;
104、以下程序的输出结果是(D)。
main()
{ int a=-1,b=4,k;
k=(++a,0)&&!(b--<=0);
printf(''%d,%d,%d\n'',k,a,b);
}
A、1,0,4
B、1,0,3
C、0,0,3
D、0,0,4 105、以下程序的输出结果是(A )。
main( )
{ int x=3,y=0,z=0;
if(x=y+z)
printf(''* * * *'');
else
printf(''# # # #'');
}
A、# # # #
B、* * * *
C、1
D、4 106、以下程序的输出结果是(A )。
int m=13;
int fun2(int x, int y)
{ int m=3;
return(x*y-m);
}
main( )
{ int a=7,b=5;
printf(''%d\n'',fun2(a,b)/m);
}
A、2
B、3
C、7
D、5
112、阅读程序:
#include
main( )
{ int m,n,w;
scanf(''%d,%d'',&m,&n);
while(n)
{ w=m%n;
m=n;
n=w;
}
printf(''%d'',m);
}
如果输入10,6,则输出结果是(D )。
A、60
B、120
C、2
D、10
113、下列程序执行后输出的结果是(A )。
#include
f(int a)
{ int b=0;
static c=2;
a=c++, b++;
return(a+b);
}
main( )
{ int a=2,i,k;
for(i=0;i<2;i++);
k=f(a++);
printf(''%d\n'',k);
}
A、3
B、0
C、4
D、5
115、下列程序的运行结果是(B )。
main( )
{ static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int i,j, sum=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(j>i)
sum+=a[i][j];
printf(''sum=%d\n'',sum);
}
A、40
B、36
C、24
D、30
120、阅读下列程序:
main( )
{ int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;i for(j=0;j n[j]=n[i]+1; for(i=0;i<3;i++) printf(''%d'',n[i]); printf(''\n''); } 运行该程序,其输出结果是(B )。 A、230 B、330 C、123 D、321 123、下述程序段的运行结果是(B )。 main( ) { static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][2],i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=a[j][i]+a[i][j]; printf(''%5d'',b[i][j]); } printf(''\n''); } } A、2 4 7 B、2 6 10 C、18 14 10 D、18 2 3 2 10 8 6 10 14 14 10 6 4 10 2 3 6 18 10 1 4 1810 6 2 7 4 2 124、如果程序中有如下的说明和定义: struct s { int x,y;} struct s x,y; 则会发生的情况是(A )。 A、编译出错 B、能顺利编译和链接,但不能执行 C、程序能顺利通过编译,但是链接时会出错 D、程序能顺利编译,链接,执行 127、对C语言的文件存取方式的论述中,正确的是文件(C )。 A、只能顺序存取 B、只能随机存取(也称直接存取) C、可以是顺序存取,也可以是随机存取 D、只能从文件的开头存取 填空练习题 1、有以下定义:int x; float y; 执行scanf("%3d%f",&x,&y);时,如果输入的数据为:12345 678 2、有定义语句:int x,y,z;,执行x=(y=4,z=8,z=16) 后,x的值为16 。 3、计算表达式b=25/3%3后,b的值为2。 4、设有定义语句int x=1,y=0;,则表达式x-->(y+x)?10:12>y++?'A': 'Z'的值是:65 。 5、请写出以下语句的输出结果9 。 printf("%d",strlen("\t\"065\xffab\n")); 7、C语言规定:标识符只能由字母、数字、下划线三种字符组成。 8、有定义语句:int x=5,y=1;表达式x&y==y? x|y:x^y的值为5。 9、下述程序段的循环次数是0 次,输出结果是y=1,x=0 。 int x=0,y=0; do { y++; x*=x; }while(x>0&&y>5) printf("y=%d,x=%d",y,x); 10、若m,y,z,均为int型变量,则执行下面语句后m值是1。 m=1;x=2;y=3;z=4; m=(m m=(m m=(m 11、下述程序段的运行结果是5 。 int x,y; x=17; y=26; printf("%d",y/=(x%=6)); 12、下列循环语句执行的循环次数是:无数次。 for(a=1,b=1;a<4&&b!=4;a++)//循环体内b的值不变。 14、下述程序段的输出结果是3。 int a=3;b=4; int c=a^b>>3; printf("%d",c); 17、下述程序段的输出结果是1245056。 #include void fun(int*x) { printf("%d",++x); } main( ) { int y=20; fun (&y); } 20、下述程序段的运行结果是15 。 #include main( ) { int a[3][3]={1,2,3,4,5,6,7,8,9}; int s=0,i; for(i=0;i<3;i++) s+=(*(a+i))[i]; printf("%d",s); } 21、下述程序的输出结果是18 。 #include main() { int x=8,y=9; int k; k=(x++)+(++y); printf("%d",k); } 22、下述程序的输出结果是6。 #include int fun(int x) { static int a=3; a+=x; return a; } main( ) { int k=2,m=1,n; n=fun (k); n=fun (m) printf("%d",n); } 23、用“冒泡法”对输入的10个字符按由小到大顺序排序,请填空。 #include #include #define n 10 main() { int i,j; char str[11]; scanf("%s",str); char t; for(j=1;j for(i=0;(i if( str[i]>str[i+1] ) { t=str[i]; str[i]=str[I+1]; str[i+1]=t; } for(i=0;i printf("%c",str[i]); } 24、把字符数组中的字符串按反序存放,例如:字符串"ABCD"的输出结果应为"DCBA",请填空。 #include #include #include main() { char a[100],t; printr(“输入字符串:\n”); scanf("%s",a); int i,j; for(i=0,j=strlen(a);i { t=a[i]; C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); 填空题 20*2 ■对于51系列单片机,现有4种语言支持程序设计,它们是(汇编语言)、PL/M、(C语言)、BASIC。 ■单片机程序设计时需要在主程序中设计死循环来防止程序跑飞。在C语言中采用(while(1))或for(;;)语句实现死循环。 ■单片机程序设计中经常用到中断,在C语言程序设计中外部中断1的中断入口序号(2),而汇编语言程序设计中外部中断1的入口地址是(0013H)。 ■编写串口中断程序时要在函数说明部分后写interrupt 4 。 ■编写定时器0中断程序时要在函数说明部分后写interrupt 1 。 ■C语言程序设计中有一个无符号形字符变量temp和一个位变量Flag,现在分别对它们取反。相应的语句为temp=__~___temp; Flag=_!___Flag;。 ■I2C总线在传送数据过程中共有三种类型控制信号,它们分别是:_(起始信号)____、应答信号、_(停止信号)_____。 ■I2C的地址由(协议规定)与(硬件设置)两部分组成。 ■I2C器件的两条信号线分别为串行时钟线SCL 与串行数据线 SDA 。 ■MCS-51单片机操作I2C器件时,单片机必须做为主机,I\O编程。 ■在Cx51所有的数据类型中,只有bit 与unsigned char 直接支持机器指令。 ■编译器性能比较有如下几个方面:算数支持、生产代码大小、开打速度、支持浮点和long 。 ■在KEIL开发套件中,BL51链接器/定位器用于创建一个绝对目标横快。 ■Cx51中函数分为两大类:标准库函数和用户自定义函数。 ■在函数名前如果不指定函数类型,则该函数的类型为整型。 ■具有一定格式的数字或数值叫做数据,数据的不同格式叫做数据类型, 数据按一定的数据类型进行的排列、组合及架构称为数据结构。 ■数据类型的转换有自动转换与强制转换两种。 ■直接出现在程序中的数值(如TMOD=0x21)称为常数。在程序运行的过程中,其值不能改变且被定义为符号的(如#define CONST 60)称为常量。 ■软件对常量与变量的命名规范是:常量名用大写字母,变量名用小写字母。 ■MCS-51单片机串口用于中断通讯时,在进行初始化时必须设置的特殊功能寄存器有: 汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制 一、单项选择 1.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(). A、关系运算,赋值运算,算术运算 B、算术运算,关系运算,赋值运算 C、算术运算,赋值运算,关系运算 D、关系运算,算术运算,赋值运算 答案:B 2.下述正确的C语言常量是:(). A、E2 B、3e-3 C、1.5E2.5 D、5.0E 答案:B 3.使用共用体变量,不可以(). A、进行动态管理 B、节省存储空间 C、同时访问所有成员 D、简化程序设计 答案:C 4.为表示关系x>=y>=z,应使用C语言表达式为:() A、(x>=y)&(y>=z) B、(x>=y>=z) C、(x>=y)&&(y>=z) D、(x>=y)AND(y>=z) 答案:C 5.以下程序的输出结果是(). main() {char str[]="ABCD",*p=str;printf("%s\n",p);} A、68 B、ABCD C、不确定的值 D、字符D的地址 答案:B 6.char a[10];不能将字符串"abc"存储在数组中的是(). A、a="abc"; B、a[0]=0;strcat(a,"abc"); C、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; D、strcpy(a,"abc"); 答案:A 7.fscanf函数的正确调用形式是(). A、fscanf(文件指针,格式字符串,输入表列); B、fscanf(格式字符串,文件指针,输出表列); C、fscanf(fp,格式字符串,输出表列); D、fscanf(格式字符串,输出表列,fp); 答案:A 8.下列数组说明中正确的是(). A、int array[][]={1,2,3,4,5,6,7,8,9,10}; B、int array[][][5]={1,2,3,4,5,6,7,8,9,10}; C、int array[][4]={1,2,3,4,5,6,7,8,9,10}; D、int array[3][]={1,2,3,4,5,6,7,8,9,10}; 答案:C 9.以下选项中,与k=n++完全等价的表达式是(). A、n=n+1,k=n B、k+=n+1 C、k=++n D、k=n,n=n+1 答案:D 10.针对下列程序段回答问题(). for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0)continue; 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p 《C程序设计》试题 一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() 3. 不是C语言实型常量的是:() .字符串“xyzw”在内存中占用的字节数是:() 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2-`a`,c2-c1);则输出结果为:() (a的ASCII码值为97) ,2 ,3 ,2 ,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是: =,b=3 = b=3 3 表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>yx:m 一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。) 1.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D) A.DB 41,42,43,44,45,46 B.DW 4142H,4344H,4546H C.DW ‘AB’,‘CD’,‘EF’D.DW ‘BA’,‘DC’,‘FE’ 2.DA2 DB‘AB’,‘CD’ ┇ MOV AX,WORD PTR DA2+1 上述语句执行后AX中的值是(D) A.‘AD’B.‘BC’ C.‘DA’D.‘CB’ 3.下列数据定义语句中可实现留空20H个字节存储单元的是(D) A.DB 20 DUP(?) B.DW 20H DUP(?) C.DB 10H DUP(4 DUP(?)) D.DD 08H DUP(?) 4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D) A.32K字节B.32K字 C.64K字节D.64K字 5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BX B.BP C.SI D.DI 6.下列指令中有语法错误的是(C) A.PUSH AX B.PUSH [20H+SI+BX] C.POP CS D.PUSH CS 7.执行PUSH BP指令时,目的操作数的物理地址表达式是(D) A.16*SS+BP B.16*DS+BP C.16*CS+IP D.16*SS+SP 8.把BL中的数据输出到端口8CH中正确指令是(C) A.OUT 8CH,BL B.IN 8CH,BL C.MOV AL,BL D.MOV AL,BL OUT 8CH,AL IN 8CH,AL 9.结果为零的条件转移指令,其测试条件是(A) A.ZF=1 B.ZF=0 C.SF=l D.SF=0 10.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是 MOV CH,0 MOV CH,0FFH ZERO:MOV DH,CH(C) A.JNZ ZERO B.JS ZERO C语言试题1 一填空题(15分) 1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。 2.设int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是()。 3.下面程序段的输出结果是()。 int a=1234; a=a&0377; printf(“%d %o\n”,a,a); 4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是()。 char a[3]; 5.设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是()。 #define PR 80 #define PP PR+403 6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:()、()和()。7.在C文件中,数据存在的两种代码形式是()和()。 8.C语言中调用()函数打开文件,调用()函数关闭文件,调用()函数可实现文件的随机读写。 9.若有int a[3]={10,12,30};则a+1是()的地址,*(a+2)=()。 二判断对错(5分,对的划“√”,错的划“×” 1.在Turbo C中,整型数据在内存中占2个字节。() 2.表达式1/4+2.75的值是3。() 3.结构体类型只有一种。() 4.函数若无返回值,则它一定无形参。() 5.C语言只能处理文本文件和二进制文件。() 三选择题(20分) 1.设int a=12; 表达式a+=a-=a*=a的值是()。 A 12 B 144 C 0 D 132 2.以下程序的输出结果是()。 main( ) { int a=011; printf(“%d\n”,++a); } A 12 B 11 C 10 D 9 3.以下程序的输出结果是()。 #define ADD(x) (x)+(x) main() { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); } A d=70 B d=140 C d=280 D d=80 4.下面的选项中正确的赋值语句是(char a[5],*p=a;)()。 A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”; 5.若k为整形,则while循环执行()次。 k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”); A 10 B 9 C 0 D 1 一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式x C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include 第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB 《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0 8、有以下程序: #include 单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 汇编语言程序设计期末考试题 学院(系):学号: 姓名: 计分: 一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号 内。每小题1分,共10分) 1.CPU发出的访问存储器的地址是( ) A.物理地址 B.偏移地址C.逻辑地址D.段地址 2.将高级语言的程序翻译成机器码程序的实用程序是( ) A.编译程序 B.汇编程序 C.解释程序 D.目标程序 3.DEC BYTE PTR[BX]指令中的操作数的数据类型是( ) A.字 B.双字C.字节D.四字 4.在下列语句中,BUFFER称为( ) BUFFER DB 01H,0AH A.符号 B.变量 C.助记符D.标号 5.串操作指令中,源串操作数的段地址一定在( )寄存器中。 A. CS B. SS C. DS D. ES 6.使计算机执行某种操作的命令是( ) A.伪指令B.指令 C.标号D.助记符 7.将数据5618H存放在存储单元中的伪指令是( ) A. DATA1 DW 1856H B. DATA1 DB 18H,56H C. DATA1EQU 5618H D. DATA1 DB 18H,00H,56H,00H 8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( ) A.1400H B. 77F8H C. 0000H D. 0FFFFH 9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍 采用的是( )码。 A. BCD码 B.二进制码 C.ASCII码D.十六进制码 10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语 言称为( ) A.汇编语言 B.高级语言 C.机器语言 D.低级语言 二、填空题(每空1分,共20分) 1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______。 2.通常所说的计算机系统包括________和________两大部分。 3.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、_____ ___、________、________。 4.现有AX=2000H,BX=1200H, DS=3000H, DI=0002H, (31200H)=50H,(31201H)=02H, (31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标 志位ZF、CF的值。 A.ADDAX,1200H;问AX=________H,ZF=________ 1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。 最大值第三行i<=n五行k+1 2、编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他)6、求出N×M整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 1 5 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n位自然数的各位数字的积。(n 是小于10的自然数) 8、计算n门课程的平均值,计算结果作为函数值返回。例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun 用比较法对主程序中用户输入的具有10 个数据的数组a 按由大到小排序,并在主程序中输出 排序结果。 13、编写main 程序调用函数fact 求解从m 个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m 不能小于n ,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a 和b 分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 19、对任意输入的 x ,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10 C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include 汇编语言程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A ) A.20640H B.2063EH C.2063FH D.21900H 2.使用DOS功能调用时,子程序编号应放在( B ) A.AL B.AH C.AX D.任意指定 3.没有 ..语法错误的输出指令是( B ) P76 A.OUT AX,30H B.OUT DX,AL C.OUT AL,DX D.OUT 30H,AH 4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809H C.MOV AX,89H D.MOV AX,0809 5.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117 A.4321H B.0FFFFH C.8000H D.0001H 6.设CL=05H,要获得CL=0AH,可选用的指令是( A) A.XOR CL,0FH B.NOT CL C.OR CL,0AH D.AND CL,0FH 7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A ) A.92H B.0104H C.74H D.8CH 8.MOV AL,79H ADD AL,B1H 上面指令执行后,设置的标志位CF和ZF的值是( D ) A.CF=0,ZF=1 B.CF=l,ZF=1 C.CF=0,ZF=0 D.CF=1,ZF=0 9.TEST DL,55H P123 JZ NEXT NEXT:…… … 上述程序段,执行JZ指令时能产生转移的情况是( D ) A.DL>55H B.DL<55H C.DL=55H D.DL中第0、2、4、6位均为0 10.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125 A.AL=14H, CF=1 B.AL=50H, CF=1 C.AL=14H, CF=0 D.AL=50H, CF=0 11. 98的BCD码是(B) A)10011001 B) 10011000 C) 10011010 D) 10001010 12. –0110110 的补码是(A) A) 11001010 B) 11001001 C) 10110110 D) 00110110C语言程序设计第三版习题库答案
C程序设计题库
汇编语言程序设计练习题
C语言期末考试题库(第一章 c语言基
C语言程序设计程序填空题库及答案
《C程序设计》试题
汇编语言程序设计练习题及答案
C语言期末考试试题
C语言程序设计 复习题库
C语言程序设计期末考试试题(含答案)
汇编语言程序设计课后习题解答宋人杰2版
C语言期末考试题(含答案)
C语言程序设计试题集及答案
汇编语言程序设计期末考试题
2019年C语言期末考试题与答案
C语言程序设计期末考试试题及答案
汇编语言程序设计试题