=
2、判断char型变量ch是否为大写字母的正确表达式是B。
A.‘A’<=ch<=’Z’B.(ch>=’A’)&&(ch<=’Z’)
C.(ch>=’A’)&(ch<=’Z’)D.(‘A’<=ch)AND(‘Z’>=ch)
3、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为B。
A.1B.2C.3D.4
4、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是B。
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
5、设a=3,b=4,c=5,则表达式!
(a+b)+c-1&&b+c/2的值为(B)
A.0B.1C.4D.6.5
二、填空题。
1、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
2、当a=5,b=4,c=2时,表达式a>b!
=c的值是1。
3、15!
=8+7||4<5&&3>9/4的结果是1。
4、设y为int型变量,请写出描述“y是奇数”的表达式(y%2)==1。
5、整型变量X能被100整除但不能被400整除(X%100==0)&&(X%400!
=0)。
三、程序填空题。
请在【】中填上正确内容。
1、该程序实现输出x,y,z三个数中的最大者。
main()
{intx=4,y=6,z=7;
int【1】;
if(【2】)u=x;
elseu=y;
if(【3】)v=u;
elsev=z;
printf(“v=%d”,v);
}
答案:
ux>yu>v
2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;
main()
{charch;
scanf(“%c”,&ch);
if(【1】)ch=ch+32;
elseif(ch>=’a’&&ch<=’z’)【2】;
printf(“%c”,ch);
}
答案:
(ch>=’A’)&&(ch<=’Z’)ch=ch-32
第五章作业
一选择题。
1、下面程序段的运行结果是C。
intn=0;
while(n++<=2);printf(“%d”,n);
A.2B.3C.4D.有语法错误
2、对for(表达式1;;表达式3)可理解为C。
A.for(表达式1;0;表达式3)B.for(表达式1;表达式1;表达式3)
C.for(表达式1;1;表达式3)D.for(表达式1;表达式3;表达式3)
3、以下正确的描述是C。
A.continue语句的作用是结束整个循环的执行
B.在循环体内使用break语句或continue语句的作用相同
C.只能在循环体内和switch语句体内使用break语句
D.从多层循环嵌套中退出时,只能使用goto语句
4.下述关于break语句的描述中,(C)是不正确的。
A.break语句可用于循环体内,它将退出该重循环;
B.break语句可用于开关语句中,它将退出开关语句;
C.break语句可用于if体内,它将退出if语句;
D.break语句在一个循环体内可以出现多次;
5.执行以下程序时,从键盘输入2473↙(↙表示回车),则下面的程序的运行结果是(C)
#include
main()
{intc;
while((c=getchar())!
=’\n’)
switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
A.668966B.6688766C.668977D.66778777
二判断题
1、条件语句是可以实现多路分支的。
(T)
2、任何循环语句的循环体至少都可执行一次。
(F)
3、break语句可以出现在各种不同循环语句的循环体中。
(T)
4、for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
(F)
5、While循环语句的循环体至少执行一次。
(F)
三填空题
1.已知for(j=1,s=0;j<=9;j+=2)s=s+j;执行循环后,s的值是25_。
2.while循环是先判断表达式,如果为_____真___,执行循环体,然后再判断表达式,直到表达式为假,退出循环。
四程序填空题
1下面程序的功能是计算1-3+5-7+„„-99+101的值
#include
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{【1】;s=s+t;【2】;}
printf(“%d\n”,s);
}
答案:
t=-i;
s=-s;
2下面程序的功能是打印100以内个数为6且能被3整除的所有数。
#include
main()
{inti,j;
for(i=0;【1】;i++)
{j=i*10+6;
if(【2】)continue;
printf(“%d”,j);
}
}
答案:
i<10;
if((j%3)!
=0)
第六章作业
一、选择题
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
2、以下能对一维数组a进行正确初始化的语句是C。
A.inta[10]=(0,0,0,0)B.inta[10]={};
C.inta[]={0};D.inta[10]={10*1};
3、若有说明:
inta[3][4];则对a数组元素的正确引用是C。
C。
A.a[2][4]B.a[1,3]C.a[1+1][0]D.a
(2)
(1)
4、已知intw[2][4]={7,15,8,9,20,25,14,17};则w[0][1]的值是C
A8B.9C.15D.25
5、若有说明inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是C。
A.2B无确定值C.3D.4
6、下面程序的运行结果是D。
charc*5+=,‘a’,’b’,’\0’,’c’,’\0’-;
printf(“%s”,c);
A.‘a’’b’B.abcC.abcD.ab
7、判断字符串a和b是否相等,应当使用D。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))
8、用数组名作为实参,传给形参的是(D)
A.数组第0个元素的值
B.数组全部元素的值
C.数组元素个数
D.数组首地址
9、用doubleq[3][5];定义的数组q包含D个元素
A.3B5C.8D.15
10、已知charc[6]="ABCDE",d[6];要将c复制到d中,正确的做法是(D)
A.d=c;
B.c=d;
C.strcmp(c,d);
D.strcpy(d,c);
二、判断题
1、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。
(F)
2.数组中的元素类型可以不同;(F)
3.字符串"This"大于字符串"that";(F)
4.任何数组的下标都是从0开始;(T)
5.符数组中的一个元素存放一个字符;(T)
三、程序填空题。
invstring(chara[])函数的功能是使输入的一个字符串按逆序存放,在主函数中输入和输出字符串。
请填空【?
】。
voidinvstring(chara[])
{intn,j;charc;
n=0;填空:
while(a[n]!
=【1】)n++;【1】‘\0’for(j=0;j<【2】;j++)【2】n/2
{c=a[j];【3】;【4】;}【3】a[j]=a[n–j-1]}【4】a[n–j-1]=cmain()
{chara[80];
gets(a);
invstring(【5】);【5】aputs(a);
puts("\n");
}
四、分析下面程序的结果。
main()
{inti,j,s1=0,s2=0,a[3][3]={4,9,6,5,3,1,2,8,7};
printf("a:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%3d",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<3;i++)
{s1=s1+a[i][i];
s2+=a[i][2-i];
}
printf("s1=%d,s2=%d\n",s1,s2);
}
答案:
a:
496
531
287
S1=14,s2=11
第七章作业
一、选择题
1.在C语言中,下面对函数不正确的描述是(D)。
A.当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。
B.允许函数递归调用。
C.函数形参的作用范围只是局限于所定义的函数内。
D.子函数必须位于主函数之前。
2.以下正确的函数形式是(D)。
A.doublefun(intx,inty){z=x+y;returnz;}
B.fun(intx,y){intz;returnz;}
C.fun(x,y){intx,y;doublez;z=x+y;returnz;}
D.doublefun(intx,inty){doublez;z=x+y;returnz;}
3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B
A.地址传递
B.单向值传递
C.双向值传递。
即由实参传给形参,再由形参传回给实参
D.由用户指定传递方式
4.一个C语言程序是由(B)。
A.一个主程序和若干子程序组成
B.若干函数组成
C.若干过程组成
D.若干子程序组成
5.用数组名作为实参,传给形参的是(B)
A.数组第0个元素的值)。
B.数组首地址
C.数组元素个数
D.数组全部元素的值
二、写出程序的输出结果
1.
voidmain(void)
{
inta=1,k;
for(k=0;k<3;k++)printf("%4d",f1(a))}
intf1(intx)
{
staticintz=3,y=0;
y++;
z++;
return(x+y+z);
}
答案:
***6***8***10
2.
voidmain()
{
inti=0;
while(++i)
{
if(i==10)break;
if(i%3!
=1)continue;
printf(“%d\n”,i);
}
}
答案:
1
第八章作业
一、判断题。
1、指针和一般变量一样都有两个值:
一个是它在内存中的地址值,另一个是它所存放的数据值。
2、指针存放的值就是它所指向的变量的地址值。
3、指向int型变量的指针可以使用double型变量的地址值进行赋值。
4、定义指针的说明语句中,在指针名前边的*,与执行语句中在指针名前边的*具有相同功能。
5、在给指针赋值时,要求指针与被赋值的地址值类型相同,级别一样。
6、数组名是一种地址值,它可以用来给指针赋值,但要求类型相同和级别一致。
7、任何两个指针进行比较运算是无意义的。
8、指针运算实际是地址运算,指针加一就是实际的地址值加一。
9、数组元素可以使用下标表示,也可以使用指针表示。
10、指针数组的元素是类型相同指针的集合。
答案:
1-10TTFFTTFFTT
二、填空题。
1、单目运算符&后跟变量名,表里是该变量的(地址),单目运算符*后跟指针名,表示该指针的(指向的对象的值)。
2、指针用来存放某个变量的(内存地址)。
3、已知:
char*c=”good”;则printf(“%s\n”,c)输出为(good),printf(“%s\n”,c+1)输出为(ood)。
4、若有定义:
inta[10],*p=a;则*(p+5)表示(a[5])的值。
5、int*p;在*p运算中,表示取__p指向的对象的内容____________。