C程序设计复习题(二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C程序设计复习题(二)
C程序设计复习题(二)
一、选择
1、下面程序的运行结果是______
#include
#include
main()
{ char a[80]=”AB”,b[80]=”LMNP”;
int i=0;
strcat(a,b);
while(a[i++]!=’\0’) b[i]=a[i];
puts(b);
}
A)LB B)ABLMNP C)AB D)LBLMNP
2、下面程序的功能是将字符串s中所有的字符c删除。
请选择填空。
#include
main()
{ char s[80];
int I,j;
gets(s);
for(i=j=0; s[i]!=’\0’;I++)
if(s[i]!=’c’)_________;
s[j]=’\0’;
puts(s);
}
A) s[j++]=s[i]; B)s[++j]=s[i]; Cs[j]=s[i];j++; D) s[j]=s[i];
3、有下面的程序段:
char a[3],b[]=”China”;
a=b;
printf(“%s”,a);
则_______________。
A)运行后将输出China B)运行后将输出Ch
C)运行后将输出Chi D)编译出错
4、下面程序段的运行结果是_______
char a[7]=”abcdef”;
char b[14]=”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A)<空格> B)\0 C)e D)f
5、以下正确的说法是______
在C语言中:A) 实参和与其对应的形参各占用独立的存储单元;
B) 实参和与其对应的形参共占用一个存储单元;
C) 只有当实参和与其对应的形参同名时才共同占用存储单元;
D) 形参是虚拟的,不占用存储单元。
6、以下程序的运行结果是______
fun(int x)
{ if(x/2>0) fun(x/2-2);
printf(“%d”,x);
}
main()
{ fun(20);
printf(“\n”);
}
A)20 8 2 -1 B)2 8 20 C)8 D)-1 2 8 20
7、以下正确的说法是________
如果在一个函数的复合语句中定义了一个变量,则该变量______
A) 只在该复合语句中有效
B) 在本程序范围内均有效
C)在该函数中有效
D) 为非法变量
8、若使用一维数组名作为函数实参,则以下正确的说法是______
A)必须在主调函数中说明此数组的大小
B)实参数组类型与形参数组类型可以不匹配
C)在被调函数中,不需要考虑形参数组的大小
D)实参数组与形参数组名必须一致
9、若有定义:int a[4][6];则能正确表示a数组中任一元素a[i][j](此处0≤i<4, 0≤j<6
)地址的表达式是________。
A) &a[0][0]+6*i+j B)&a[0][0]+4*j+i
C)&a[0][0]+4*i+j D)&a[0][0]+6*j+i
10、以下选项中,对指针变量p不正确的操作是_______。
A) int a[5],*p;
p=&a
B) int a[5],*p;
p=a;
C) int a[5];
int *p=a=1000;
D) int a[5];
int *p1,*p2=a;
*p1=*p2;
11、若有语句:char s1[]=”string”,s2[8],*s3,*s4=”string2”;则对库函数strcpy的错误调用是_____
A)strcpy(s1,”string2”); B)strcpy(s4,”string1”);
C)strcpy(s3,”string1”); D)strcpy(s1,s2);
12、以下正确的程序段是______
A) char str[20];
scanf(“%s”,&str);
B) char *p;
scanf(“%s”,p);
C) char str[20];
scanf(“%s”,&str[2]);
D) char str[20];
scanf(“%s”,p[2]);
13、执行以下程序后,a的值为(),b的值为()
main()
{ int a,b,k=4,m=6,*p1=&k,&p2=&m
a=p1==&m
b=(-*p1)/(*p2)+7;
printf(“a=%d\n”,a);
printf(“b=%d\n”,b);
}
[1] A)-1 B)1 C)0 D)4
[2] A)5 B)6 C)7 D)10
二、填空
1、当运行以下程序时,从键盘输入”AabD<回车>”,则下面程序的运行结果是__________ #inlude
main()
{ char s[80];
int i=0;
gets(s);
while(s[i]!=’\0’)
{ if (s[i]<=’z’&&s[i]>=’a’)
s[i]=’z’+’a’-s[i];
i++;
}
puts(s);
}
2、下面程序段将输出computer。
请填空。
char c[]=”It is a computer”;
for(i=0;_______;i++)
{_________; printf(“%c”,c[j]);}
3、当运行以下程序时,从键盘输入:BOOK<回车>
CUT<回车>
GAME<回车>
PAGE<回车>
则下面程序的运行结果是_______
#include
#inlude
main()
{ int I;
char str[10],temp[10]=’Control’;
for(i=0;i<4;i++)
{ gets(str);
if (strcmp(temp,str)<0) strcpy(temp,str);
}
puts(temp);
}
4、数组a包括10个整型元素。
下面程序的功能是求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。
请填空
main()
{ int a[10],b[10],I;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(_______;i<10;i++) ___________________;
for(i=1;i<10;i++)
{ printf(“%3d”,b[i]);
if(_______==0) printf(“\n”);
}
5、函数yanghui能够按以下形式构成一个杨辉三角形。
请填空。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
#define N 11
yanghui (int a[][N])
{ int I,j;
for(i=1;i<n;i++)< p="">
{a[i][1]=;a[i][i]=1;}
for(________;i<n;i++)< p="">
for(j=2;_________;j++)
a[i][j]=________+a[i-1][j];
6、函数del的作用是删除有序数组a中的指定元素x。
已有调用语句n=del(a,n,x);其中实参n 为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。
请填空。
del( int a[],int n,intx)
{ int p,I;
p=0;
while(x>=a[p]&&p<="" p="">
for(i=p-1;i<="" p="">
n=n-1;
return n;
}
7、以下程序的功能是用递归算法计算5位学生的年龄,已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第5位学生
的年龄。
请填空。
递归公式如下:
10 (n=1)
age(n)=
age(n-1)+2 (n>1)
#inlude
age(int n)
{ int c;
if(n==1) c=10;
else c=_______
return( c );
}
main()
{ int n=5;
printf(“age: %d\n”,______);
}
8、函数f中的形参a为一个10*10的二维数组,n的值为5,以下程序的运行结果为_____. f( int a[10][10],int n)
{ int I,j,k;
j=n/2+1; a[1][j]=1;i=1;
for(k=2;k<=n*n;k++)
{ i=j-1; j=j+1;
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else { i=i+2; j=j-1; a[i][j]=k;}
}
}
9、以下程序可分别求出方阵a中两个对角线上元素之和。
请填空。
#define N 6
main()
{ int a[N][N],I,j,k,pr1,pr2;
for(i=0;i<n;i++)< p="">
for(j=0;j<n;j++)< p="">
sc anf(“%d”,*(a+i)+j);
k=N;
pr1=0;pr2=0;
for(i=0;i<n;i++)< p="">
{ pr1=__________+(*(*(a+i)+i));
k=_________;
pr2=___________+(*(*(a+i)+k));
}
printf(“pr1=%4d pr2=%4d\n”,pr1,pr2);
}
10、以下程序将数组a中的数据按逆序存放。
请填空。
#define M 8
main()
{ int a[M],I,j,t;
for(i=0;i<="">
i=0;j=M-1;
while(i<j)< p="">
{ t=*(a+i);___________;*(_________)=t;
}
for(i=0;i<="">
}
11、以下程序的运行结果是______
main(0
{ int x[]={1,2,3,4,5},y=0,I,*p;
p=&x[3];
for(i=0;i<=3;i++)
{ y=y+*p;
p--;
}
printf(“%d\n”,y);
}
12、以下程序的运行结果是______
int func( int a,int b,int *c)
{ a++;
b=b+2;
*c=a+b;
return b;
}
main()
{ int x=1,y=1,z=1;
y=func(x,y,&z);
printf(“\n%d%d%d”,x,y,z);
}
13、下面程序的运行结果是_____
swap(int *p1, int *p2)
{ int p;
p=*p1;*p1=*p2;*p2=p;
}
main()
{ int a=5,b=7,*ptr1,*ptr2;
ptr1=&a,ptr2=&b
swap(ptr1,ptr2);
printf(“*ptr1=%d,*ptr2=%d\n”,*ptr1,*ptr2); printf(“a=%d,b=%d\n”,a,b);
}
三、编程
1、定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每5
个数求出一个平均值,放在另一个数组中输出。
试编程。
2、数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。
试编程。
3、已有变量定义和函数调用语句int x=57; isprime(x);函数isprime()用来判断一个整型数a 是否为素数;若是素数,函数返回1,否则返回0.请编写isprime函数。
isprime(int a)
{ }
4、a是一个2*4的整型数组,且各元素均已赋值。
函数max_value可求出其中的最大元素值max,并将此值返回主调函数。
今有函数调用语句max=max_value(a);请编写max_value 函数。
max_value(int arr[][4])
{ }
</j)<>
</n;i++)<>
</n;j++)<>
</n;i++)<>
</n;i++)<>
</n;i++)<>。