程序设计与数据结构复习题答案
更新时间:2024-03-10 23:30:01 阅读量: 综合文库 文档下载
一、单项选择题
1.以下叙述错误的是(
)。
A. 一个C源程序可由一个或多个函数组成 B. 一个C源程序必须包含一个main函数 C. C程序的基本组成单位是函数
D. 在C程序中,注释说明只能位于一条语句的后面 2.C语言中运算对象必须是整型的运算符是(
A. %= B./ main()
{ unsigned int x=0xffff;
printf(“%u\\n”,x );}
A. -1 B. 65535 C. 32767 D. 0xFFFF 4.若有代数式
,则以下能够正确代nx?ex(其中e仅代表自然对数的底数,不是变量)
)。
3.有如下程序,程序运行后的输出结果是(
)。 )。
C. = D. 〈=
表该代数式的C语言表达式是(
A. sqrt(abs(n^x+e^x) B. sqrt(fabs(pow(n,x)+pow(x,e))) C. sqrt(fabs(pow(n,x)+exp(x))) D. sqrt(fabs(pow(x,n)+exp(x))) 5.字符串“\\t12\\x42\\\\abcd”的长度是( A. 14 B. 9 6.以下叙述中错误的是(
)。
)。
D.20
C. 15
A. 计算机不能直接执行用C语言编写的源程序
B. C语言经C编译程序编译后,生成后缀为.obj的文件是二进制文件 C. 后缀为.obj的文件,经连接后生成后缀为.exe的文件是二进制文件 D. 后缀为.obj和.exe的二进制文件都可以直接运行 7.以下选项中,与k=x++;完全等价的表达式是(
A. x=x+1;k=x; B. k=x;x=x+1; C. k=x+1; D. k+=x+1; 8.以下叙述中正确的是(
)。
A. break语句只能用于switch 语句中
B. continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C. break语句只能用在循环体内和switch语句体内 D. 在循环体内使用break语句和continue 语句的作用相同 9.判断字符型变量 ch是否为大写英文字母的表达式为( A. ‘A’<=ch<=‘Z’
)。
)。
B. ch>=‘A’&& ch<=‘Z’
C. ch>‘a’&& ch<=‘z’
1
D. ch>=‘A’|| ch<=‘Z’
10.若表达式(m)? a++:a--, 则表达式m和( 11.设有 int i=010,j=10;
则printf( “%d,%d\\n”,++i,j--);的输出是(
)等价。
A. m==0 B. m!=0 C. m=0 D. m=1
)。
A. 11,10 B. 9,10 C. 010,9 D.10,9 12.已知w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)&&(b=y>z) ;
后,a,b的值为(
)。
D. 0和2 )。
A. 1和1 B. 0和0 C. 4和2 13.定义如下变量关系,则下面语句的输出结果是( int i;
for(i=0;i<3;i++) printf(\
A. 1 5 9 B. 1 2 3 C. 3 5 7 D. 3 2 1 14.已知数组float b[3][2];该数组行下标的范围是( A. 1—3
B. 0—3
C. 1—2
15.下列语句中,正确的是(
)。 D. 0—2
int x[3][3]={1,2,3,4,5,6,7,8,9};
)。
A. #define PI=3.14159 B. include “stdio.h” C. define M 3 D. #define PI 3.14159 16.有如下程序, 该程序段的输出结果是( void main(void) { int n=5;
while(n>2) { n--; printf(“%d”,n);} } A. 543 B.432 C.4321 D.5432 17.下列四种数组定义,合法的数组定义是(
)。
A. char a[ ]=\B. int a[4]={4,3,2,1,0};
C. char a=\D. char a[4]= \
18.设p1和p2均为指向int型的指针变量, k为int型变量,下列不正确的赋值语句是( )。 A.k=*p1+*p2; B.k=*p1*(*p2) C.p2=k D.p1=p2
19.有如下程序 ,该程序的输出结果是( )。 void main(void)
{ char s[]=“ABCD”,*p; for( p=s+1;p<=s+3;p++)
printf(“%c\\n”,*p); } A. ABC B.A C.B D.BCD BC B C CD
2
)。
C C D D
20.对于C程序的函数,下列叙述中正确的是( )。
A.函数的定义不能嵌套,但函数调用可以嵌套 B.函数的定义可以嵌套,但函数调用不能嵌套 C 函数的定义和调用均可以嵌套 D.函数的定义和调用均不能嵌套
21.设x为整型变量, p是指向整型的指针变量, 则下列赋值表达式正确的是( )。 A. p=&x B. p=x C. *p=&x D. *p=*x
22.函数定义时,形参是整型变量,则函数调用时,实参不可以是( )。 A. 整型常量 B. 字符型常量 C. 数组名 D. 整型表达式 23. 以下程序的输出结果是( )。 void main(void)
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf(“%d\\n”,*p+*q); }
A. 16 B. 10 C. 8 D. 6
24.设有如下定义,若有p=&ab;,则对ab中成员项的正确引用是( )。
struct ss
{ int a; float b; }ab,*p; A. (*p).ab.a B. p->a C. p->ab.a D. p.ab.a
25. 若要对E盘上的一个非空文件“w1.dat”进行修改,正确的打开语句是( A. fp=fopen(“w1.dat”,“r+”); B. fp=fopen(“w1.dat”, “w+”); C. fp=fopen(“E:\\\\w1.dat”,“r+”); D. fp=fopen(“E:\\\\w1.dat”,“w+”); 26.C语言程序的三种基本结构是 ( )。
A.顺序结构,分支结构,循环结构 B.递归结构,循环结构,转移结构C.嵌套结构,循环结构,顺序结构 D.递归结构,分支结构,顺序结构
27.能正确表达逻辑关系“0
A. (0
B.((0
C. (0
28.设x和y为浮点型变量,则以下( )语句是正确的赋值语句。
A. x=&y
B.x*x=y
C. x=x+10*y
D.*x=y+2
29.设int a=3;下列哪一个表达式的值等于0 ( )。
A. a B. !a || a C. a>=a D. a%=a
30.定义如下变量和数组,则下面程序段落的输出结果是( )。
int i; int x[3][3]={0,1,2,3,4,5,6,7,8}; for (i=0;i<3;i++)
printf (“%d ”,x[i][2-i]);
3
。
) A.2 4 6 B.0 3 6 C.0 4 8 D.2 5 8 31.有下列程序段落:
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↙
32.数组名作为函数参数进行传递时,形参获得的是( )。
A.该数组第一个元素的值 B.该数组所有元素的值 C.该数组所有元素的地址 D.该数组的首地址 33.设有如下宏定义:
#define A 3+2 #define B A*A
则表达式“B*B”的值为 ( )。
A.23 B. 5 C. 25 D.625 34.在下列说明中,结构类型变量x 所占用内存字节数为( 16 )。 struct exp { int i; float j; double k; }x;
A.8个 B.7个 C. 14个 D.随计算机而定 35.设有定义:int k=3,*p=&k; 则表达式 *p的值是 ( )。
A.1 B.0 C.2 D.3 36. 下列程序的输出结果为 ( )。
main() { int i=3,b; b=(i--)+(i--); printf(“%d”,b); }
A.6 B.2 C.3 D.4
37.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是( A.c=b=a B. (a=c)||(b=c) C. a=c=b D. (a=c)&&(b=c)
38.下列叙述不正确的是( )。
A.函数定义可以嵌套 B.宏定义可以嵌套 C.函数调用可以嵌套 D.循环结构可以嵌套
39.设 char *p=“abcde”,则printf(“%s”, p ) 的输出结果为( )。
A.c B.cde C.b D.abcde 40.p1,p2 为指向浮点的指针变量,下列运算没有意义的是( )。
A.*p1-*p2 B.p1++
4
。) C.*p1+*p2 D.p1+p2
41.在c语言中,运算对象的逻辑值“真”用( )表示。
A. false B.非0
C.0 D. 负数
42.已知函数原型声明为:char *www(char a, char b);该函数的类型为( )。 A.指向字符型的指针 B.字符型 C.整型
D.指向整型的指针
43.设int类型的数据长度为2字节,则该类型数据的取值范围是( )。 A.0至65536 B. 0至65535 C.-32767至32768 D.-32768至32767
44.int a, *p, **w; p=&a, w=&p; 取a的值的表达式为( )。 A.&a B.&*p
C.**p D.**w 45.C语言程序的基本单位是( )。
A.函数 B.标识符 C.表达式 D.语句
46.判断字符型变量 ch 的值是否为大写英文字母的表达式为( )。 A. ‘A’<=ch<=’Z’
B. ch>=’A’ && ch<=’Z’ D. ch>=’A’ || ch<=’Z’
C. ch>’a’ && ch<=’z’
47.已知 w=3,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x) || (b=y>z);后,a, b的值为 ( )。 A.1和1 B. 0和0 ( ):
D. *(p+7)
C.1和2 D. 4和2
48.若有定义语句int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 值为 8 的数组元素的正确表示为A. a[8] B. a+7 C. p+7 49.下列程序运行结果是( )。 #define A 2 #define AA A+A/2 void main(void) { } A.3,11
B.3,15
C.2,10
D.8,40
50.若有如下定义,则对ex中的a成员的正确引用是( )。 struct sk { int a; float b;} ex, *p = &ex;
A. (*p).ex.a B. p->a C. p->ex..a D. p.ex.a
二、填空题
1.在内存中存储一个字符 ‘a’ 占用___1___个字节, 而存储字符串 ”abcdef” 则占用____7____个字节。 2.表达式 4/5的值为____0____。
3.设 x=4.5,a=7,y=3.4, 表达式x+a%3*(int)(x+y)%2/4的值为__4.500000___。 4.设 a=14, 执行 a+=a-=a*=a 后,a=______0_____。
5
printf(“%d\\n”,5*AA);
printf(“%d,”,AA);
5.设x=y=z=6, 执行 x=(y>z)?x+2:x-2; 后,x=___4______。
6.getchar( )函数用于输入_____字符_________, 而gets( )函数则用于输入___字符串___。 7.设有定义语句:char ww[20]=” \\t\\\\wab\\n”; 则表达式:strlen(ww) 的值是____7______。 8.设有定义语句:char str[7]=”abcdef”, 则数组元素str[2]中的字符是__c____,数组元素str[6]中的字符是____\\0______。
9.函数中的形参和调用时的实参都是变量时,传递方式为___值传递_____; 都是数组名时,传递方式为_________。
10.设有char *p=”12345”, 则printf(“%s”,p)的输出是___12345____;而 printf(“%c”,*p)的输出则是____1_____。
11.若s是int型变量,且s=7,则表达式: s/2+(s+1)%2 的值为_____1____。 12.C语言中,以 ox或oX ___打头的int常数是十六进制。 13.有说明语句char s=‘\\102’; S包含了___1__个字符。 14.有数学表达式sinx+x-6x,
写出其对应的C语言的表达式 __sinx+sqrt(x)-6*x;_____。
15.有定义语句:int a[][3]={ {0},{1},{2} }; 则数组元素a[1][2]的值是 0 。 16.若程序中使用了函数strlen(),则必须包含的头文件名为____
void main(void) {
int x=1,a=0,b=0; switch(x)
{ case 0:b++; case 1:a++; case 2: a++,b++; }
printf(\
18. 若a函数中调用了b函数,而b函数又调用了a函数, 这种调用称为____递归___调用。
19.函数调用时,若形参和实参均为数组名时,传递方式为 ____ ____。 20.若有以下定义语句,则输出的结果是___4_____。 char s1[ ]=“abcdef”, *s2=“1234”; printf(“%d\\n”, strlen(strcpy(s1,s2))); 21.若宏定义为:#define y(x) 2+x 则表达式a=4+3*y(2)的值为 12 。 22.设有以下语句:
static int a[4][2]={1,2,3,4,5,6,7,8}; int (*p)[2]; p=a;
则 *(*(p+2)+1)的值为 6 。
6
23.在turbo C中,int型数据占2字节,则定义 struct node {
char x[10]; int y;
union { float a; long b; }ab; }t;
后,sizeof(t)= 20 。 24.设有一个名为“ww1.c”的C程序,
其主函数为 main(int argc,char *argv[]),如果在执行时,输入的命令行为: ww1 aa bb cc↙
则形式参数argc的值是______。
25. 执行下列程序段后,(**q-1)的值为 ____99________。
int a,*p,**q; a=100; p=&a; q=&p;
26.C语言源程序中主函数名由系统规定为 ____main______ ,程序员是不能改变的。
27.有数学表达式:x-3,其C语言表达式为 ____________sqrt(x)-3______ ______。
28.已知函数定义为:int stat(int a , float *p)
{ ...... }
则此函数的两个参数类型分别是 整型变量 、 字符型指针变量 。
29.设有数组a[10];则首地址可以写成 ______&a[0]_ 、 a__ ,
数组元素a[3]的地址可以写成_____&a[3]、a+3___ __。
30.要使以下程序段中的函数调用语句printf(“***”);执行10次,应在 ① 处填入整数
_____19______。
for( i=1;i<=___①___;i+=2 ) printf(“***”);
31.用只读方式打开e:\\20051234目录下的名为 “aa.dat”的文件,正确的打开
语句为 FILE *fp;fp=___fopen(“e:\\20051234\\aa.dat”); ______。
32.判断两个浮点型变量x和y是否相等一般用:
if( x-y <1e-6 )? 。 33.已知赋值语句zhang.year =1985;可判断zhang是 整型 类型的变量。
三、程序分析题
1. 下面程序的运行结果为 5,6,5,0 #include
7
{ int a,b,c,d; a=4; b=6; c=++a;
d=( c
printf(\}
2. 下面程序的运行结果为 c=1, d=0.000000 #include
void fun (int x, int y) {
int a, b; float d; a = x+14; b = y-4;
d = (float)(b/a); printf (\ }
void main(void) {
int b=9, a=6, c; c = b/a;
printf (\ fun( a, b ); }
3.设从键盘上输入 Hello World! 下面程序的运行结果为 hello world! #include
for( i=0; ss[i]!='\\0'; i++)
if( ss[i]>='A' && ss[i]<='Z') ss[i] = ss[i]+32 ; puts(ss); }
4.下面程序的运行结果为 b= -10 i=33, b=0 i=75,b=33 #include
void other( void ); void main(void) { int b = -10;
printf(\ other( );
8
i = i+10; other( ); } void other( )
{ static int b; i=i+32;
printf(\ b = i; }
5.下面程序的运行结果为 6,45 2,98 #include
{ int a[10]={78,89,98,66,54,76,45,82,62,95 }; int ka, ki, j; ka = ki = 0; for(j=1; j<10; j++)
{ if ( a[ki]>a[j] ) ki=j ;
if (a[ka]
}
printf(“%d, %d\\n %d, %d\\n”, ki, a[ki], ka, a[ka] ); }
6. 运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10 下面程序的运行结果为 1 3 5 7 9 #include
p = a;
for (i=0 ; i<10 ; i++ ) scanf ( “ %d” , p++ ) ; for (p=a ; p
if ( *p % 2 ) printf ( “ =”, *p); }
7.下面程序的运行结果为 (要求注明输出格式!) #include
9
void main(void)
{ 输出: ___10,___10 int a=10,b=11; 50____1 ___01 int c=0,d=0; 40___11 printf(\--b); 302010 printf(\ printf(\ printf(\ printf(\第一季度第三季度 }
0西部北部
8.下面程序的运行结果为
#include
{
for(j=i;j<4;j++)
printf(“%d+%d=%d ”,i,j,i+j); printf(“\\n”); } }
9.下面程序的运行结果为 #include
printf(\ fun(); a+=1;c+=2;
printf(\
}
void fun() { int c=10;
10
1+1=2 1+2=3 1+3=4 2+2=4 2+3=5 3+3=6 a=1,b=-5,c=0 a=2,b=2,c=10 a=3,b=-5,c=2
a+=1;b+=2;
printf(\
}
10. 下面程序的运行结果为 #include
{
char str[5],*p; int i;
for(i=0;i<4;i++) str[i]=’A’+i; str[i]='\\0'; p=str; while(p 11.下面程序的运行结果为 #include void main(void) { struct stud { int no; char *name; float score; }stu1,stu2; 1001 Wang yong 90.5 假设输入的分数为90.5 ABCD BCD CD D stu1.no=1001; stu1.name=\ printf(\ stu2=stu1; printf(\ stu2.no,stu2.name,stu2.score); } 12. 下面程序的运行结果为 11 #include int i,k=0; printf(“%d,%d\\n”,*a,n); for(i=0;i continue; else k+=*a; return k; } void main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},s; s=fun(aa+2,8); printf(\ 四、 程序设计题 1. 有一分段函数: 2x + 5 (x<=2) y= 3x - 4 (2 111?1????...求?的值,要求精度为10-6 (即 3.编写程序,通过级数 4357某项的绝对值小于10),输出结果?的值。 -6 ? void main() { int i,n,m=1; float PI,sum=0.0; scanf(“%d”,&n); for(i=1;i<=n;i+=2) { sum+=m/i; m=-m; } sum=4*sum; PI=sum; printf(“%1.6f”,PI); } 4.编写一程序任意输入一串字符,统计其中大写字母的个数,并输出结果。 #define N 100 void main() { char str[N],*p; int n; p=str; scanf(“%s”,p); while(*p) { if(*p>=?A?&&*p=0 void main() y= 0 x=0 { int x,y; -1 x<0 输入x的值,输出结果。 scanf(“%d”,&x); if(x>0) y=1; else if(x==0) y=0; else y=-1; printf( “%d”,y); } 6.输入6个整数,组成2行3列的二维数组,统计数组中的正数之和、正数个数以及负数之和、负数个数。 void main() 13 { int i,j,a[2][3],s1,s2,n1,n2; s1=s2=n1=n2=0; for(i=0;i<2;i++) - 7.编写子函数exps,求ex≈1+x+x2/2!+x3/3!......,要求精度为106。在主函数中输入x,利用子函数exps 求(ex+e-x)/2的值,并在主函数中输出结果。 #include 14 void main() { float a[45],temp; int i,n; n=0; for(i=0;i<45;i++) scanf(\ for(i=0;i<45;i++) if(a[i]<60&&a[i]>0) n++; for(i=0;i<45;i++) if(a[i] 1.C源程序的基本单位是 函数 。 2.一个C源程序中至少应包括一个 main函数 。 3.在一个C源程序中,注释部分两侧的分界符分别为 // 和 /* */ 。 4.一个函数是由两部分组成的,它们分别是 函数首部 和 函数体 。 5.在C语言中,一个函数的函数体一般包括 说明部分 和 语句部分 。 6.在每个C语句和数据定义的最后必须有一个 分号 。 7.C语言本身没有输入输出语句。其输入输出是由 来完成。 8.序是指 程序是可以连续执行,并能够完成一定任务的一条条指令的集合。 它是人与机器之间进行交流的语言。 9.源程序是指 未编译的按照一定的程序设计语言规范书写的文本文件 。C源程序文件的扩展名为 .c 。 10.目标程序是指 把源文件翻译成一种中间代码 。目标程序文件的扩展名为 .obj 。 11.可执行程序是指 已经经过编译和连接转化成了二进制代码了 。可执行程序文件的扩展名为 .exe 。 12.上机运行一个C源程序的步骤一般为:① 编译,检查是否出错 ; ② 链接 ;③ 寻找提示改正 ;④ 运行 。 13.若x和a均是int型变量,则计算表达式(1)后的x值为 12 ,计算表达式(2)后的 15 (π*π)/6=1+1/(2*2)+1/(3*3)+ ? +1/(n*n) 请在下面的函数中填空,完成求π的功能。 #include “math.h” double pi(long n) {double s=0.0; long i; for(i=1;i<=n; i++) s=s+ 1/(i*i) ; return(sqrt(6*s)); } 73.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部 void fun() 。要求形参名为b。 main() {double s[10][22]; int n; ? fun(s); ? } 74.输入12时,程序输出结果为 12 is not prime number. ;若输入17,输出结果为 17 is prime number. 。 main() {int number; scanf(“%d”, &number); if(prime(number)) printf(“\\n%d is prime number.”, number); else printf(“\\n%d is not prime number.”, number); } int prime(int number) {int flag=1, n; for(n=2; n 75. 理解下面的程序,填空完善程序。 main() {int a, b, c; scanf(“%d %d”, &a,&b ); c= max (a, b); printf(“a=%d b=%d max=%d\\n”, a, b, c); } int max(x, y) ? ; 26 {int z; if(x>y) z=x; else z=y; return(z) ; } 76.下面程序的输出结果是 2,5,1,2,3,-2 。 main() {int a=3, b=2, c=1; c-=++b; b*=a+c; {int b=5, c=12; c/=b*2; a-=c; printf(“%d, %d, %d,”, a, b, c); a+=--c; } printf(“%d, %d, %d”, a, b, c); } 77.下面的findmax函数返回数组s中值为最大的元素的下标,数组中元素的个数由t传人,请填空。 findmax(int s[ ], int t) {int k, p; for(p=0, k=p; p if(s[p]>s[k]) k=p ; return k; } 78.下面程序的输出结果是 7 。 fun(int x) {int p; if(x= =0||x= =1) return(3); p=x-fun(x-2); return p; } main() {printf(“%d\\n”, fun(9));} 79.函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun(char str[ ]) {char m; int i, j; for(i=0, j=strlen(str); i< strlen(str)/2 ; i++, j--) 27 {m=str[i]; str[i]= str[j-1] ; str[j-1]=m; } printf(“%s\\n”, str); } 80.以下程序的输出结果是 7 。 #define MAX(x, y) (x)>(y)?(x):(y) main() {int a=5, b=2, c=3, d=3, t; t=MAX(a+b, c+d)*10; printf(“%d\\n”, t); } 81.以下程序的输出结果为 10.000000 。 #include #define POWER(x, y) pow(x, y)*y #define ONE 1 #define SELEVE_ADD(x) ++x main() {int x=2; printf(“%f\\n”, POWER(SELEVE_ADD(x), ONE+1)); } 82.填空补充以下程序: #define PRICE 30 main() { int num,total ; num=0; total=num*PRICE; printf(“total=%d, num=%d\\n”, total,num ); } 83.下面程序的输出结果是 6 。 #define CIR(r) r*r main() {int a=1, b=2, t; t=CIR(a+b); printf(“%d\\n”, t); } 84.下列程序的输出结果是 GDABC 。 #include {char b[30],*chp; 28 strcpy(&b[0],\; strcpy(&b[1],\; strcpy(&b[2],\; printf(\,b); } 85.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是 How does she 。 #include {char strl[ ]=\,*p1=strl; strcpy (strl+strlen(strl)/2,\; printf(\,pl); } 86.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。 a[0] a[1] a[2] a[3] a[4] 22 33 44 55 66 (1)若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是 s=*(p+3) 。 (2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是 5 。 87.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。 #include {char *p, s[6]; int n; p=s; gets (p); n=*p-'0'; while( p !='\\0') n=n*8+*p-'0'; printf(\} 88.设有以下程序: main() {int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl= =&m; b=(*p1)/(*p2)+7; printf(\printf(\} 执行该程序后,a的值为 0 ,b的值为 7 。 29 89.下列程序的输出结果是 0 。 void fun(int *n) {while((*n)--); printf(\} main() {int a=100; fun (&a); } 90.以下程序的输出结果是 10 。 main() {int arr[ ]={30, 25, 20, 15, 10, 5}, *p=arr; p++; printf(\} 91.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 *(p+5); 。 int w[10]={23,54,10,33,47,98,72,80,61}, *p=w; 92.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。 strlen (char a[ ], char b[ ]) {int num=0, n=0; while (*(a+num)!= ?\\0? ) num++; while (b[n]){*(a+num)=b[n]; num++; n++ ;} return(num); } 93.函数void fun(float *sn,int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。 S?1?1111 ????3572n?1void fun(float *sn, int n) {float s=0.0, w, f= -1.0; int i=0; for(i=0; i<=n; i++) {f= _(-1) *f; w=f/ (2*i+1); s+=w; } *sn = s; } 94.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, int z) 30 { z =x+y;} 95.以下fun函数的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。请填空。 fun(int b[ ],int n,int *x) {int k,r=0; for(k=0;k 96.以下函数的功能是:把两个整型指针变量所指的存储单元中的内容进行交换。请填空。exchange(int *x,int *y) {int t; t=*y; *y= *x ; *x= t ; } 97.以下程序的输出是 49,36 。 main() {int a[10]={19,23,44,17,37,28,49,36},*p; p=a; printf(“%d\\n”,(p+=3)[3]); } 98.下面程序的输出结果是 024 。 #define MAX 3 int a[MAX]; main() {fun1();fun2(a);printf(“\\n”);} fun1() {int k,t=0; for(k=0;k fun2(int b[]) {int k; for(k=0;k 99.下面程序的输出结果是 。 char b[]=“ABCD”; main() ABCDCD {char *chp; for(chp=b; *chp; chp+=2) printf(“%s”, chp); printf(“\\n”); } 100.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 31 #include {char str[81],*sptr; int i; for(i=0;i<80;i++) {str[i]=getchar(); if(str[i]==?\\n?) break; } str[i]= ‘\\0’ ; sptr=str; while(*sptr) putchar( *(sptr++) ); } 101.fun1函数的调用语句为:fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。 void fun2(int *x, int *y) {int t; t=*x; *x=*y; *y=t; } void fun1(int *pa,int *pb,int *pc) {if(*pc>*pb) fun2( *pc,*pb ); if(*pa<*pc) fun2( *pc,*pa ); if(*pa<*pb) fun2( *pb,*pa ); } 102.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。 void fun(char *w,char x,int *n) {int i,p; p=0; w[*n]=x; while(x>w[p]) w[p]=x ; for(i=*n;i>p;i--) w[i]= w[i-1] ; w[p]=x; ++*n; } 103.阅读程序: main() {char str1[]=“how do you do”, str2[10]; char *p1=str1, *p2=str2; scanf(“%s”, p2); printf(“%s ”, p2); printf(“%s\\n”, p1); } 运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you 32 do 。 104.下面程序的输出结果是 SO 。 main() {char *p[]={“BOOL”, “OPK”, “H”, “SP”}; int i; for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]); printf(“\\n”); } 105.下面程序的输出结果是 17 。 funa(int a,int b) {return a+b;} funb(int a,int b) {return a-b;} sub(int(*t)(),int x,int y) {return((*t)(x,y));} main() {int x,(*p)(); p=funa; x=sub(p,9,3); x+=sub(funb,8,3); printf(“%d\\n”, x);v } 106.下面程序的输出结果是 XYZA 。 #include void fun(char *a1,char *a2,int n) {int k; for(k=0;k a2[k]=(a1[k]-?A?-3+26)&+?A?; a2[n]=?\\0?; } main() {char s1[5]=“ABCD”, s2[5]; fun (s1, s2, 4); puts(s2); } 107.下面程序的输出结果是 7 1 。 void as(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y; } main() {int a=4,b=3,c,d; 33 as(a,b,&c,&d); printf(“%d %d\\n”,c,d); } 108.下面程序的输出结果是 eybdooG 。 #include {static char b[]=“Goodbye”; char *chp=&b[7]; while(--chp>=&b[0]) putchar(*chp); putchar(?\\n?); } 109.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。 #include char *pstr[3],str[3][MAXLINE]; for(i=0;i<3;i++) pstr[i]=str[i]; for(i=0;i<3;i++) scanf(“%s”,pstr[i]); sort(pstr); for(i=0;i<3;i++) printf(“%s\\n”,pstr[i]); } sort( char *strcmp ) {int i,j; char *p; for(i=0;i<3;i++) {for(j=i+1;j<3;j++) {if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i); *(pstr+i)= *(pstr+j) ; *(pstr+j)=p; } } } } 110.以下程序利用指针法将两个数按从小到大的顺序输出来。 main() {int a,b, *p,*p1,*p2 ; printf(“input a, b:”); scanf(“%d%d”, &a,&b); p1=&a ; p2=&b; 34 if(a {p=p1; p1=p2; p2=p;} printf(“a=%d b=%d\\n”,a,b); printf(“max=%d min=%d\\n”, *p1,*p2 ); } 111.以下程序的输出结果是 8 。 fun(int n,int *s) {int f1,f2; if(n==1||n==2) *s=1; else {fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } main() {int x; fun(6,&x); printf(“%d\\n”,x); } 112.下面的程序通过函数average计算数组中各元素的平均值,请填空。 float average(int *pa,int n) {int i; float avg=0.0; for(i=0;i avg=avg+ *(pa+i) ; avg= avg/n ; return avg; } main() {int i,a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf(“mean=%f\\n”,mean); } 113.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。 #include void replace(char *s1,char *s2,char *str1,char *str2) {char *t0,*t1,*t2; while() {for(t0=s1,t1=str1;(*t1!=?\\0?&&*t0++=*t1++);t0++,t1++); if(*t1!=?\\0?) *s2++ =*t1++; 35 else {for(t1=str2;*t1!=?\\0?;) *s2++ = *t1++ ; t1=str1; } } *s2=?\\0?; } main() {static char s1[]=“abcef ababcd abab.”, s2[25]; replace (s1, s2, “abc”, “XYZ”); printf(“%s\\n”, s2); } 114.以下语句的输出结果是 hELLO! 。 char s[80],*sp=“HELLO!”; sp=strcpy (s, sp); s[0]=?h?; puts(s); 115.设有以下结构体类型说明和变量定义,则变量a在内存中所占的字节数是 32 ,变量p在内存中所占的字节数是 32 。 struct stud {char num[6]; int s[4]; double ave; }a, *p; 116.若有如下结构体说明: struct STRU {int a, b ; char c; double d: struct STRU p1, p2; }; 请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型: STRU t[20]; 117.以下程序段用于构成一个简单的单向链表,请填空。 struct STRU {int x, y ; float rate; struct STRU p; } a, b; a.x=0; a.y=0; a.rate=0; a.p=&b; b.x=0; b.y=0; b.rate=0; b.p=NULL; 118.建立并输出100个同学的通讯录,每个通讯录包括同学的姓名、地址、邮政编码。 #include struct communication {char name[20]; char address[80]; 36 long int post_code; }commun[N]; main() {int i; for(i=0; i<100; i++) { set_record(commun+i); print_record(commun+i); } } set_record(struct communication *p) {printf(“Set a communication record\\n”); scanf(“%s %s %ld”, p->name , p->address, p->post_code ); } print_record ( struct STRU p) {printf(“Print a communication record\\n”); printf(“Name: %s\\n”, p->name); printf(“Address: %s\\n”, p->address); printf(“Post_code: %ld\\n”, p->post_code ); } 119.以下函数creatlist用来建立一个带头节点的单链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next成员中放入NULL,作为链表结束标志。读入时字符以#表示输入结束(#不存入链表)。请填空。 struct node {char data; struct node * next; }; struct node * creatlist( ) {struct node * h,* s,* r;char ch; h=(struct node *)malloc(sizeof(struct node)); r=h; ch=getchar( ); while(ch!= ?#?) {s=(struct node *)malloc(sizeof(struct node)); s->data= ch ; r->next=s; r=s; ch=getchar( );} r->next= NULL ; return h; } 120.有以下定义和语句,则sizeof(a)的值是 16 ,而sizeof(a.share)的值是 4 。 struct date 37 {int day; int month; int year; union {int share1; float share2; }share; }a; 121.下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中。请填空。 #include if((fp=fopen ( “bit.dat” ,“wb”))= =NULL) exit(0); for(i=0; i<10; i++) {scanf(“%d”, &j); fwrite(&j, sizeof(int), 1, FILE *fp ); } fclose(fp); } 122.以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换成大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。 #include if((fp=fopen(“test.txt”, “w” ))= =NULL) {printf(“Can?t open this file.\\n”); exit(0);} printf(“Input a string: \\n”); gets (str); while (str[i]) {if(str[i]>= ?a?&&str[i]<=?z?) str[i]= str[i]-32 ; fputc(str[i], fp); i++; } fclose (fp); fp=fopen(“test.txt”, “r” ); fgets(str, 100, fp); printf(“%s\\n”, str); fclose (fp); } 123.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意 38 要求填空完善程序。 #include char ch, fname[10]; printf(“Input the name of file:\\n”); gets (fname); if((fp=fopen( “fname.dat”,”w” ))= =NULL) {printf(“can?t open file\\n”); exit(0) ; } while((ch=getchar())!=?#?) fputc ( ch,10,fp ); fclose (fp); } 124.下面程序用来统计文件中字符的个数,请填空。 #include if((fp=fopen(“fname.dat”, “r”))= =NULL) {printf(“can?t open file\\n”); exit(0); } while (*fp!=0) {fgetc (fp); num++;} printf(“num=%d\\n”, num); fclose (fp); } 125.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件尾部。请填空。 #include char ch,fname[32]; int count=0; printf(\:\; scanf(\,fname); if((fp=fopen( “fname.dat” ,\ {printf(\:%s\\n\,fname); exit(0);} printf(\:\\n\; while((ch=getchar())!=\,fp); count++;} fprintf( fp ,\,count); fclose(fp); } 39 40
正在阅读:
程序设计与数据结构复习题答案03-10
小学数学六年级分数应用题专项训练题01-04
Constraints on Omega_B, Omega_m and h from MAXIMA and BOOMERANG05-27
描写水蜜桃的作文400字07-03
结构力学(2)(专升本)阶段性作业212-03
《悲伤逆流成河》观后感04-02
类比推理十大关系12-22
高中物理 带电粒子在有界磁场中的运动讲义-word文档12-17
英语感谢信范文02-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复习题
- 数据结构
- 程序设计
- 答案
- 辩论--说服的艺术(周玄毅)
- 实验心理学试题及答案
- 福建省泉州市洛江区2011年初中毕业班学业水平测试数学
- 国外优秀创业孵化器的独特模式
- 2010年软考网络工程师(下午题)全真模拟试卷(4)-中大网校
- 乡镇脱贫攻坚工作整改推进实施方案
- 为了能够让公司更好的发展起来
- 截流课程设计
- 镇离退休老干部优秀事迹材料
- 易医文化之长夏养胃篇2.0
- 浅谈小学高段语文阅读教学方法和策略-2019年精选文档
- 高考数学 均值不等式专题试卷
- K12学习广东省汕头市七年级语文上册 生字词(无答案) 新人教版
- 云南白药财务报表分析(1)
- 51单片机中断程序大全
- 浅议小学生德育教育的方法与途径
- 2019年最新入党思想汇报:践行党的纲领思想汇报文档
- 浅谈液压站常见故障与维修方法
- 青岛版五年级上册数学习题:第4单元过关检测卷
- 丽水市助人为乐模范推荐表- 青田教育网 首页