|
2015年秋季学期《C语言程序设计》作业
作业提交格式要求:请同学们把资料集中单独写在一个.doc文档中,作为附件上传(不要把资料直接填写在题目的空中)。特规定格式如下:
一、 ABCDD AAAAA
二、
题号 1 2 3 4 5 6 7 8 9 10
结果 ∨ ∨ ∨ ∨ ╳ ╳ ╳ ╳ ╳ ╳
三、
(1) BeiJing
ShangHai
(2) x=8,y=7
(3) r=k:i+j=90
……
以上只是举例,不是正确的输出结果。请按上述规定书写和提交作业结果,不符合以上规定的作业将作为0分处理。
鼓励独立完成作业,严惩抄袭。
第一章作业
一、将数213、12.75、79.375用十六进制表示
二、填空
1.在C语言中,数值常量0x9f的十进制值是 。
2.字母a的ASCII码为十进制数___________。
第二章作业(1)
一、选择题:
1、下列变量名中, 是非法的。
A) MyCar B) 4a C) my_car D) a48
2、下列变量名中, 是合法的。
A) 56A B) _abc C) 48b D) while
3、下列常量中, 是十六进制表示的int型常量。
A) 78 B) 0x7a C) x56 D) 063
4、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 。
A) 7 B) 8 C) 6 D)2
5、已知c2为字符型,则执行语句c2=’A’+’6’-‘3’后,c2的值为 。
A) ‘C’ B) ‘D’ C)不确定的值 D) 70
6、设a为整型变量,b为字符型变量,c为double型变量,则a+b+c为( )型
A) int B) float C) double D) char
7、C语言中不可用作标识符的字符有( )
A 字母
B 数字
C %
D下划线
8、设int a;则表达式a=2,4,a+1的值是( )
A.1
B.2
C.3
D.4
9.设a为整型变量,b为字符型变量,c为double型变量,则a*b+c为( )型
A. int
B. float
C. double
D. char
10. 若a是int型变量,则表达式(a=4*5,a*2),a+6的值为( )
A. 20 B.23 C. 26 D. 46
第二章作业(2)
一、选择题
1、在scanf()函数的格式说明符中,长整型数的输入格式符是 。
A. %ld B. %lf C. %d D. %x
2、在printf()函数的格式说明符中,字符型数的输出格式说明符是 。
A. %c B. %f C. %ld D. %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、若x为int型变量,则执行以下语句后x= 。
x=7;
x+=x-=x+x;
A. -14 B. -7 C.0 D.14
二、判断题
1、 C语言标准输入操作中,gets()函数一次只可以读取一个字符。( )
2、 C语言标准输出操作中,putchar()函数可以输出显示一个字符串。( )
3、 "r"与'r'是相同的; ( )
三、分析下列程序的输出结果。
1.
#include <stdio.h>
void main()
{
char c=’p’;
printf(“%d,%c\n”,c,c);
printf(“%d,%c\n”,’a’,’a’);
}
2.
#include <stdio.h>
void main()
{
int a;
float d;
printf(“Enter a and d: ”);
scanf(“%d%f”,&a,&d);
printf(“%5d,%8.2f\n”,a,d);
}
Enter a and d: 56 15.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、设有: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
4、已知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
5、设a=3,b=4,c=5,则表达式 !(a+b)+c-1&&b+c/2 的值为( )
A. 0 B. 1 C. 4 D. 6.5
二、 填空题。
1、当a=3,b=2,c=1时,表达式f=a>b>c的值是 。
2、当a=5,b=4,c=2时,表达式a>b!=c的值是 。
3、 15 != 8 + 7 || 4 < 5 && 3 > 9/4的结果是 。
4、设y为int型变量,请写出描述“y是奇数”的表达式 。
5、整型变量 X 能被 100 整除但不能被 400 整除 。
三、 程序填空题。请在【】中填上正确内容。
1、该程序实现输出x,y,z三个数中的最大者。
main()
{int x=4,y=6,z=7;
int 【1】;
if (【2】) u=x;
else u=y;
if (【3】) v=u;
else v=z;
printf(“v=%d”,v);
}
2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;
main()
{ char ch;
scanf(“%c”,&ch);
if (【1】) ch=ch+32;
else if (ch>=’a’ && ch<=’z’ ) 【2】;
printf(“%c”,ch);
}
第五章作业
一选择题。
1、下面程序段的运行结果是 。
int n=0;
while (n++<=2) ; printf(“%d”,n);
A. 2 B. 3 C. 4 D. 有语法错误
2、对for(表达式1; ;表达式3)可理解为 。
A. for(表达式1;0 ;表达式3) B. for(表达式1;表达式1;表达式3)
C. for(表达式1;1 ;表达式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( )
{ int c ;
while((c=getchar( ))!= ’\n’)
switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
}
A. 668966 B. 6688766 C. 668977 D. 66778777
二判断题
1、条件语句是可以实现多路分支的。( )
2、任何循环语句的循环体至少都可执行一次。( )
3、break语句可以出现在各种不同循环语句的循环体中。( )
4、for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。( )
5、While循环语句的循环体至少执行一次。( )
三填空题
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()
{ int i,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()
{int i,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. int a[10]=(0,0,0,0) B. int a[10]={};
C. int a[]={0}; D.int a[10]={10*1};
3、若有说明:int a[3][4];则对a数组元素的正确引用是 。
A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1)
4、已知 int w[2][4]={7,15,8,9,20,25,14,17};则 w[0][1]的值是
A 8 B.9 C. 15 D. 25
5、若有说明 int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 。
A. 2 B无确定值 C. 3 D. 4
6、下面程序的运行结果是 。
char c[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
A. ‘a’’b’ B. abc C. ab c D. ab
7、判断字符串a和b是否相等,应当使用 。
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、用double q[3][5]; 定义的数组 q 包含 个元素
A. 3 B5 C. 8 D. 15
10、已知 char c[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(char a[ ])函数的功能是使输入的一个字符串按逆序存放,在主函数中输入和输出字符串。
请填空【?】。
void invstring(char a[ ])
{ int n,j; char c;
n=0; 填空:
while(a[n]!= 【1】) n++; 【1】
for( j=0; j<【2】; j++) 【2】
{c=a[j]; 【3】; 【4】;} 【3】
} 【4】
main( )
{ char a[80];
gets(a);
invstring(【5】); 【5】
puts(a);
puts("\n");
}
四、分析下面程序的结果。
main ( )
{ int i,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. double fun(int x,int y) { z=x+y; return z;}
B. fun(int x,y) { int z; return z;}
C. fun(x,y) { int x,y; double z; z=x+y; return z;}
D. double fun( int x,int y) {double z; z=x+y; return z; }
3. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。
A. 地址传递
B. 单向值传递
C. 双向值传递。即由实参传给形参,再由形参传回给实参
D. 由用户指定传递方式
4. 一个C语言程序是由( )。
A. 一个主程序和若干子程序组成
B. 若干函数组成
C. 若干过程组成
D. 若干子程序组成
5.用数组名作为实参,传给形参的是( )
A.数组第0个元素的值
B. 数组首地址
C.数组元素个数
D. 数组全部元素的值
二、写出程序的输出结果
1.
void main(void)
{
int a=1,k;
for(k=0;k<3;k++) printf("%4d",f1(a))
}
int f1(int x)
{
static int z=3,y=0;
y++;
z++;
return(x+y+z);
}
2.
void main()
{
int i=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、若有定义:int a[10],*p=a;则*(p+5)表示 的值。
5、int* p;在*p运算中,表示取______________ 。
|
|