2015年秋季学期《C语言程序设计》作业


作业提交格式要求:请同学们把答案集中单独写在一个.doc文档中,作为附件上传(不要把答案直接填写在题目的空中)。特规定格式如下:
一、ABCDDAAAAA
二、
题号12345678910
结果∨∨∨∨╳╳╳╳╳╳
三、
(1)BeiJing
ShangHai
(2)x=8,y=7
(3)r=ki+j=90
……
以上只是举例,不是正确的输出结果。请按上述规定书写和提交作业结果,不符合以上规定的作业将作为0分处理。
鼓励独立完成作业,严惩抄袭。

第一章作业
一、将数21312.7579.375用十六进制表示
二、填空
1.C语言中,数值常量0x9f的十进制值是。
2.字母aASCII码为十进制数___________
第二章作业(1
一、选择题:
1、下列变量名中,是非法的。
A)MyCarB)4aC)my_carD)a48
2、下列变量名中,是合法的。
A)56AB)_abcC)48bD)while
3、下列常量中,是十六进制表示的int型常量。
A)78B)0x7aC)x56D)063
4、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是。
A)7B)8C)6D)2
5、已知c2为字符型,则执行语句c2=’A’+’6’-‘3’后,c2的值为。
A)‘C’B)‘D’C)不确定的值D)70
6、设a为整型变量,b为字符型变量,cdouble型变量,则a+b+c()
A)intB)floatC)doubleD)char
7、C语言中不可用作标识符的字符有()
A字母
B数字
C%
D下划线
8、设inta;则表达式a=2,4,a+1的值是()
A.1
B.2
C.3
D.4
9.a为整型变量,b为字符型变量,cdouble型变量,则a*b+c()
A.int
B.float
C.double
D.char
10.aint型变量,则表达式(a=4*5,a*2),a+6的值为()
A.20B.23C.26D.46


第二章作业(2
一、选择题
1、在scanf()函数的格式说明符中,长整型数的输入格式符是。
A.%ldB.%lf C.%dD.%x
2、在printf()函数的格式说明符中,字符型数的输出格式说明符是。
A.%cB.%fC.%ldD.%s
3、已知ch是字符型变量,下面不正确的赋值语句是。
A)ch=’a+b’;B)ch=’\0’;C)ch=’7’+’9’;D)ch=5+9;
4、要使用putchar()函数必须在程序前加语句。
A.#include<stdio.h>
B.include"stdio.h"
C.include<stdio.h>
D.#include'stdio.h'
5、若xint型变量,则执行以下语句后x=
x=7;
x+=x-=x+x;
A.-14B.-7 C.0D.14

二、判断题
1C语言标准输入操作中,gets()函数一次只可以读取一个字符。()
2C语言标准输出操作中,putchar()函数可以输出显示一个字符串。()
3"r"'r'是相同的;()

三、分析下列程序的输出结果。
1.
#include<stdio.h>
voidmain()
{
charc=’p’;
printf(“%d,%c\n”,c,c);
printf(“%d,%c\n”,’a’,’a’);
}



2.
#include<stdio.h>
voidmain()
{
inta;
floatd;
printf(“Enteraandd:”);
scanf(“%d%f”,&a,&d);
printf(“%5d,%8.2f\n”,a,d);
}
Enteraandd:5615.765
第四章作业
一、选择题。
1、下列运算符中优先级最高的是。
A.<B.+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、设有:inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)n的值为。
A.1B.2C.3D.4
4、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是。
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的值为()
A.0B.1C.4D.6.5

二、填空题。
1、当a=3,b=2,c=1时,表达式f=a>b>c的值是。
2、当a=5,b=4,c=2时,表达式a>b!=c的值是。
315!=8+7||4<5&&3>9/4的结果是。
4、设yint型变量,请写出描述“y是奇数的表达式。
5、整型变量X能被100整除但不能被400整除。
三、程序填空题。请在【】中填上正确内容。
1、该程序实现输出x,y,z三个数中的最大者。
main()
{intx=4,y=6,z=7;
int1;
if(2)u=x;
elseu=y;
if(3)v=u;
elsev=z;
printf(“v=%d”,v);
}

2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;
main()
{charch;
scanf(“%c”,&ch);
if(1)ch=ch+32;
elseif(ch>=’a’&&ch<=’z’)2;
printf(“%c”,ch);
}
第五章作业
一选择题。
1、下面程序段的运行结果是。
intn=0;
while(n++<=2);printf(“%d”,n);
A.2B.3C.4D.有语法错误
2、对for(表达式1;;表达式3)可理解为。
A.for(表达式10;表达式3)B.for(表达式1;表达式1;表达式3)
C.for(表达式11;表达式3)D.for(表达式1;表达式3;表达式3)
3、以下正确的描述是。
A.continue语句的作用是结束整个循环的执行
B.在循环体内使用break语句或continue语句的作用相同
C.只能在循环体内和switch语句体内使用break语句
D.从多层循环嵌套中退出时,只能使用goto语句
4.下述关于break语句的描述中,()是不正确的。
A.break语句可用于循环体内,它将退出该重循环;
B.break语句可用于开关语句中,它将退出开关语句;
C.break语句可用于if体内,它将退出if语句;
D.break语句在一个循环体内可以出现多次;
5.执行以下程序时,从键盘输入2473表示回车),则下面的程序的运行结果是()
#include<stdio.h>
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、条件语句是可以实现多路分支的。()
2、任何循环语句的循环体至少都可执行一次。()
3break语句可以出现在各种不同循环语句的循环体中。()
4for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。( )
5While循环语句的循环体至少执行一次。()
三填空题
1.已知for(j=1,s=0;j<=9;j+=2)s=s+j;执行循环后,s的值是_
2.while循环是先判断表达式,如果为________,执行循环体,然后再判断表达式,直到表达式为假,退出循环。

四程序填空题
1下面程序的功能是计算1-3+5-7+……-99+101的值
#include<stdio.h>
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{1;s=s+t;2;}
printf(“%d\n”,s);
}
2下面程序的功能是打印100以内个数为6且能被3整除的所有数。
#include<stdio.h>
main()
{inti,j;
for(i=0;1;i++)
{j=i*10+6;
if(2)continue;
printf(“%d”,j);
}
}
第六章作业
一、选择题
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
2、以下能对一维数组a进行正确初始化的语句是。
A.inta[10]=(0,0,0,0)B.inta[10]={};
C.inta[]={0};D.inta[10]={10*1};
3、若有说明:inta[3][4];则对a数组元素的正确引用是。
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]的值是
A8B.9C.15D.25
5、若有说明inta[][3]={1,2,3,4,5,6,7};a数组第一维的大小是。
A.2B无确定值C.3D.4
6、下面程序的运行结果是。
charc[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
A.‘a’’b’B.abcC.abcD.ab
7、判断字符串ab是否相等,应当使用。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))
8、用数组名作为实参,传给形参的是()
A.数组第0个元素的值
B.数组全部元素的值
C.数组元素个数
D.数组首地址
9、用doubleq[3][5];定义的数组q包含个元素
A.3B5C.8D.15
10、已知charc[6]="ABCDE",d[6];要将c复制到d中,正确的做法是()
A.d=c;
B.c=d;
C.strcmp(c,d);
D.strcpy(d,c);
二、判断题
1、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。()
2.数组中的元素类型可以不同;()
3.字符串"This"大于字符串"that"()
4.任何数组的下标都是从0开始;()
5.符数组中的一个元素存放一个字符;()
三、程序填空题。
invstring(chara[])函数的功能是使输入的一个字符串按逆序存放,在主函数中输入和输出字符串。
请填空【?】。
voidinvstring(chara[])
{intn,j;charc;
n=0;填空:
while(a[n]!=1)n++;1
for(j=0;j<2printf函数和scanf函数的格式说明都使用什么字符开始;j++)2
{c=a[j];3;4;}3
}4
main()
{chara[80];
gets(a);
invstring(5);5
puts(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);
}

第七章作业
一、选择题
1.C语言中,下面对函数不正确的描述是()
A.当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。
B.允许函数递归调用。
C.函数形参的作用范围只是局限于所定义的函数内。
D.子函数必须位于主函数之前。
2.以下正确的函数形式是()
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语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是()
A.地址传递
B.单向值传递
C.双向值传递。即由实参传给形参,再由形参传回给实参
D.由用户指定传递方式
4.一个C语言程序是由()
A.一个主程序和若干子程序组成
B.若干函数组成
C.若干过程组成
D.若干子程序组成
5.用数组名作为实参,传给形参的是()
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);
}

2.
voidmain()
{
inti=0;
while(++i)
{
if(i==10)break;
if(i%3!=1)continue;
printf(“%d\n”,i);
}
}
第八章作业
一、判断题。
1、指针和一般变量一样都有两个值:一个是它在内存中的地址值,另一个是它所存放的数据值。
2、指针存放的值就是它所指向的变量的地址值。
3、指向int型变量的指针可以使用double型变量的地址值进行赋值。
4、定义指针的说明语句中,在指针名前边的*,与执行语句中在指针名前边的*具有相同功能。
5、在给指针赋值时,要求指针与被赋值的地址值类型相同,级别一样。
6、数组名是一种地址值,它可以用来给指针赋值,但要求类型相同和级别一致。
7、任何两个指针进行比较运算是无意义的。
8、指针运算实际是地址运算,指针加一就是实际的地址值加一。
9、数组元素可以使用下标表示,也可以使用指针表示。
10、指针数组的元素是类型相同指针的集合。
二、填空题。
1、单目运算符&后跟变量名,表里是该变量的,单目运算符*后跟指针名,表示该指针的。
2、指针用来存放某个变量的。
3、已知:char*c=”good”;则printf(“%s\n”,c)输出为,printf(“%s\n”,c+1)输出为。
4、若有定义:inta[10],*p=a;则*(p+5)表示的值。
5int*p;在*p运算中,表示取______________