资源描述
函数
(一)选择题
1、以下正确得说法就是_________、
建立函数得目得之一就是 a)提高程序得执行效率
b)提高程序得可读性
c)减少程序得篇幅
d)减少程序文件所占内存
2.以下正确得函数原型声明形式就是________、
a)double fun(int x,int y)
b)double fun(int x; int y)
c)double fun(int x, int y);
d)double fun(int x,y);
3.C语言规定,简单变量做实参时,它与对应形参之间得数据传递方式为______、
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
4.C语言允许函数值类型缺省定义,此时该函数值隐含得类型就是______、
a)float
b)int
c)long
d)double
5.已有以下数组定义与f函数调用语句,则在f函数得说明中,对形参数组array
得错误定义方式为________、
int a[3][4];
f(a);
a)f(int array[][6])
b)f(int array[3][])
c)f(int array[][4])
d)f(int array[2][5])
6.以下程序得正确运行结果就是_________、
#include <stdio、h>
void num()
{ extern int x,y;int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
a)12,2 b)不确定 c)5,25 d)1,12
7.以下正确得描述就是____________、
a)C语言得预处理功能就是指完成宏替换与包含文件得调用
b)预处理指令只能位于C源程序文件得首部
c)凡就是C源程序中行首以"#"标识得控制行都就是预处理指令
d)C语言得编译预处理就就是对源程序进行初步得语法检查
8.在"文件包含"预处理语句得使用形式中,当#include后面得文件名用< >(尖括号)括起时,找寻被包含文件得方式就是_______、
a)仅仅搜索当前目录
b)仅仅搜索源程序所在目录
c)直接按系统设定得标准方式搜索目录
d)先在源程序所在目录搜索,再按照系统设定得标准方式搜索
9. 当调用函数时,实参就是一个数组名,则向函数传送得就是_____、
A、数组得长度 B、数组得首地址 C、数组每一个元素得地址 D、数组每个元素中得值
10.函数得值通过return语句返回,下面关于return语句得形式描述错误得就是_____、
A、return 表达式; B、return(表达式);
C、一个return语句可以返回多个函数值 D、一个return语句只能返回一个函数值
11.设函数fun得定义形式为
void fun(char ch,float x){…}
则以下对函数fun得调用语句中,正确得就是_____、
A、fun("abc",3、0); B、t=fun('D',16、5); C、fun('65',2、8); D、fun(32,32);
12.以下程序得输出结果就是_____、
void reverse(int a[],int n)
{ int i,t;
for(i=0;i<n/2;i++)
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main( )
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n ",s);
}
A、22 B、10 C、34 D、30
13.阅读下列程序,则运行结果为_____、
fun( )
{ static int x=5;
x++;
return x;
}
main( )
{ int i,x;
for(i=0;i<3;i++)
x=fun( );
printf("%d\n",x);
}
A、5 B、6 C、7 D、8
14.若使用一维数组名作函数实参,则以下正确得说法就是_____、
A、必须在主调函数中说明此数组得大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调用函数中,不需要考虑形参数组得大小
D、实参数组名与形参数组名必须一致
15.在C语言中,定义函数时函数得类型可以缺省,此时函数得隐含类型就是_____、
A、void B、int C、float D、double
16.在C语言中,形参得缺省存储类别就是( )、
A、auto B、register C、static D、extern
17.以下关于字符串得叙述中正确得就是_____、
A、C语言中有字符串类型得常量与变量
B、两个字符串中得字符个数相同时才能进行字符串大小得比较
C、可以用关系运算符对字符串得大小进行比较
D、空串一定比空格打头得字符串小
18.阅读程序,选择程序得运行结果。
#include <stdio、h>
int Try(int n)
{
if(n>0)
return (n*Try(n-2));
else
return 1;
}
void main()
{
int x;
x=Try(5);
printf(“%d\n”,x);
}
A、15 B、 120 C、 1 D、前面三个答案都就是错得
(二)填空题
1.以下程序得运行结果就是 max is 2、
#include<stdio、h>
max(int x,int y)
{int z;
z=(x>y)?x:y;
return(z);
}
main()
{int a=1,b=2,c;
c=max(a,b);
printf("max is %d\n",c);
}
2.函数gongyu得作用就是求整数num1与num2得最大公约数,并返回该值。请填空。
gongyu(int num1,int num2)
{int temp,a,b;
if(num1(_____) num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(____)
{temp=a%b;a=b;b=temp;}
return(a);
}
3.以下程序得运行结果就是 A+B=9、
int a=5;int b=7;
main()
{ int a=4,b=5,c;
c=plus(a,b);
printf("A+B=%d\n",c);
}
plus(int x,int y)
{int z;
z=x+y;
return(z);
}
4.以下程序得运行结果就是_______、
main()
{incx();
incy();
incx();
incy();
incx();
incy();
}
incx()
{
int x=0;
printf("x=%d\t",++x);
}
incy()
{static int y=0;
printf("\ny=%d\n",++y);
}
答案:x=1
y=1
x=1
y=2
x=1
y=3
5.以下程序功能就是求两个正整数得最大公约数。
#include<stdio、h>
main()
{
int r,m,n,_____;
scanf("%d%d",&m,&n);
if(m<n)
________________
r=m%n;
while(r)
{ m=n;
n=r;
r=____;
}
printf("%d\n",n);
}
指针
(一)选择题
1.若有以下定义,则对a数组元素得正确引用就是_________、
int a[5],*p=a;
a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)
2.若有定义:int a[2][3],则对a数组得第i行j列元素地址得正确引用为______、
a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j
3.若有以下定义,则p+5表示_______、
int a[10],*p=a;
a)元素a[5]得地址 b)元素a[5]得值
c)元素a[6]得地址 d)元素a[6]得值
4.下面程序段得运行结果就是_________、
char *s="abcde";
s+=2;printf("%d",s);
a)cde b)字符'c' c)字符'c'得地址 d)无确定得输出结果
5.设p1与p2就是指向同一个字符串得指针变量,c为字符变量,则以下不能正确
执行得赋值语句就是________、
a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);
6.以下正确得程序段就是_________、
a)char str[20]; b)char *p;
scanf("%s",&str); scanf("%s",p);
c)char str[20]; d)char str[20],*p=str;
scanf("%s",&str[2]); scanf("%s",p[2]);
7.若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确得叙述就是________、
a)a+1表示得就是字符t得地址
b)p指向另外得字符串时,字符串得长度不受限制
c)p变量中存放得地址值可以改变
d)a中只能存放10个字符
8.下面程序得运行结果就是_______、
#include <stdio、h>
#include <string、h>
main()
{
char *s1="AbDeG";
char *s2="AbdEg";
s1+=2;s2+=2;
printf("%d\n",strcmp(s1,s2));
}
a)正数 b)负数 c)零 d)不确定得值
9.下面程序得运行结果就是_______、
#include <stdio、h>
#include <string、h>
fun(char *w,int n)
{char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{char p[]="1234567"; //这里存在错误,通过字符指针无法改变字符串常量得值,因此改为数组
fun(p,strlen(p));
puts(p);
}
a)7654321 b)1714171 c)1711717 d)7177171
10.变量得指针,其含义就是指该变量得_________、
a)值 b)地址
c)名 d)一个标志
11.若有语句int *point,a=4;与point=&a;下面均代表地址得一组选项就是_____、
a) a, point,*&a b)&*a, &a, *point
c)*&point,*point,&a d)&a,&*point ,point
12.若有说明;int *p,m=5,n;以下正确得程序段得就是________、
a)p=&n; b)p=&n;
scanf("%d",&p); scanf("%d",*p);
c)scanf("%d",&n); d)p=&n;
*p=n; *p=m;
13、若有以下定义,则对a数组元素得正确引用就是_____、
int a[5],*p=a;
A、*&a[5] B、a+2 C、*(p+2) D、*(a+5)
14、下列程序执行后得输出结果就是_____、
main( )
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=1; i<9; i++) p[i]=i+1;
printf("%d\n",a[1][2]);
}
A、3 B、6 C、9 D、随机数
15、下面程序段得运行结果就是_____、(该题题目有错,而且考得内容偏了,就是一题面试题)
char *p="abcdefgh";
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
A、8 B、12 C、4 D、7
(二)填空题
1.以下程序得功能就是:通过指针操作,找出三个整数中得最小值并输出。
请填空。
#include "stdlib、h"
main()
{int *a,*b,*c,num,x,y,z;
a=&x;b=&y;c=&z;
printf("输入3个整数:");
scanf("%d%d%d",a,b,c);
printf("%d,%d,%d\n",*a,*b,*c);
num=*a;
if(*a>*b) num=*b ;
if(num>*c) num=*c ;
printf("输出最小整数:%d\n",num);
}
2.下面程序段得运行结果就是 hELLO! 、
char s[80],*sp="HELLO!";
sp=strcpy(s,sp);
s[0]='h';
puts(sp);
3.下面程序段得运行结果就是 ef 、
char str[]="abc\0def\0ghi",*p=str;
printf("%s",p+5);
4.下面程序得功能就是将两个字符串s1与s2连接起来。请填空。
#include<stdio、h>
main()
{char s1[80],s2[80];
gets(s1); gets(s2);
conj(s1,s2);
puts(s1);
}
conj(char *p1,char *p2)
{char *p=p1;
while(*p1) p1++ ;
while(*p2){*p1= *p2 ;p1++;p2++;}
*p1='\0';
_return 0_________;//可以省略不要
}
5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)得值就是__4____、 *(a+5)得值就是__12_______、
6.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]得值就是__8___、 *(*(a+1)+0))得值就是___8___、
7.以下程序将数组a中得数据按逆序存放,请填空。
#define M 8
main()
{int a[M],i,j,t;
for(i=0;i<M;i++) scanf("%d",a+i);
i=0;j=M-1;
while(i<j)
{
t=*(a+i); *(a+i)=*(a+j) ;*(a+j )=t;
i++;j--;
}
for(i=0;i<M;i++)printf("%3d",*(a+i));
}
8.若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用
五种形式引用。它们就是:
(1)a[i][j]
(2)*(a[i]+j)
(3)*(*(a+i)+j );
(4)(*(a+i))[j]
(5)*( a +5*i+j)
9.下面程序得运行结果就是_________、
main()
{char *a[]={"Pascal","C language","dBase","Coble"};
char (**p)[];
int j;
p=a+3;
for(j=3;j>=0;j--)printf("%s\n",*(p--));
}
答案:Coble
dBase
C language
Pascal
结构体
(一)选择题
1.C语言结构体类型变量在程序执行期间_________、
a)所有成员一直驻留在内存中
b)只有一个成员驻留在内存中
c)部分成员驻留在内存中
d)没有成员驻留在内存中
2.下面程序得运行结果就是___________、
main()
{
struct cmplx{int x;
int y;
}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0]、y/cnum[0]、x*cnum[1]、x);
}
a)0 b)1 c)3 d)6
3.设有如下定义:
struct sk
{int n;
float x;
}data ,*p;
若要使p指向data中得n域,正确得赋值语句就是_______、
a)p=&data、n;
b)*p=data、n;
c)p=(struct sk *)&data、n;
d)p=(struct sk *)data、n;
4.以下对结构体变量stu1中成员age得非法引用就是________、
struct student
{int age;
int num;
}stu1,*p;
p=&stu1;
a)stu1、age b)student、age
c)p->age d)(*p)、age
5.下面对typedef得叙述中不正确得就是______、
a)用typedef可以定义各种类型名,但不能用来定义变量
b)用typedef可以增加新类型
c)用typedef只就是将已存在得类型用一个新得标识符来代表
d)使用typedef有利于程序得通用与移植
6.以下scanf函数调用语句中对结构体变量成员得不正确引用就是________、
struct pupil
{char name[20];
int age;
int sex;
}pup[5],*p;
p=pup;
a)scanf("%s",pup[0]、name);
b)scanf("%d",&pup[0]、age);
c)scanf("%d",&(p->sex));
d)scanf("%d",p->age);
(二) 填空题
1.以下程序得运行结果就是__10,x______、
struct n{
int x;
char c;
};
main()
{struct n a={10,'x'};
func(a);
printf("%d,%c",a、x,a、c);
}
func(struct n b)
{
b、x=20;
b、c='y';
}
2.若有定义:
struct num
{int a;
int b;
float f;
}n={1,3,5、0};
struct num *pn=&n;
则表达式pn->b/n、a*++pn->b得值就是___12_____,表达式(*pn)、a+pn->f得值就是6、00000
3、 以下程序得运行结果就是 5,3 、
struct ks
{int a;
int *b;
}s[4],*p;
main()
{
int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{
s[i]、a=n;
s[i]、b=&s[i]、a;
n=n+2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}
4、结构数组中存有三人得姓名与年龄,以下程序输出三人中最年长者得姓名
与年龄。请在_______内填入正确内容。
stati struct man{
char name[20];
int age;
}person[]={"li=ming",18,
"wang-hua",19,
"zhang-ping",20
};
main()
{struct man *p,*q;
int old=0
p=person;
for( ;p<person+3;p++)
if(old<p->age)
{q=p; old=p->age ;}
printf("%s %d", q->name,q->age );
}
展开阅读全文