郭泰杉李金勇.docx

上传人:b****8 文档编号:10521073 上传时间:2023-02-17 格式:DOCX 页数:16 大小:19.07KB
下载 相关 举报
郭泰杉李金勇.docx_第1页
第1页 / 共16页
郭泰杉李金勇.docx_第2页
第2页 / 共16页
郭泰杉李金勇.docx_第3页
第3页 / 共16页
郭泰杉李金勇.docx_第4页
第4页 / 共16页
郭泰杉李金勇.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

郭泰杉李金勇.docx

《郭泰杉李金勇.docx》由会员分享,可在线阅读,更多相关《郭泰杉李金勇.docx(16页珍藏版)》请在冰豆网上搜索。

郭泰杉李金勇.docx

郭泰杉李金勇

一选择题

1以下选项中函数形参不是指针的是

A)fun(int&p){…}B)fun(inta[10]){…}

C)fun(int*a){…}D)fun(intp[]){…}

答案:

A

2以下叙述中正确的是

A)函数既可以直接调用自己,也可以间接调用自己

B)任何情况下都不能用函数名作为实参

C)函数的递归调用不需要额外开销,所以效率很高

D)简单递归不需要明确的结束递归的条件

3以下叙述中错误的是

A)使用三种基本结构构成的程序只能解决简单问题

B)结构化程序由顺序、分支、循环三种基本结构组成

C)C语言是一种结构化程序设计语言D)结构化程序设计提倡模块化的设计方法

答案:

A

4变量的指针,其含义是指该变量的

A值

B地址

C名

D一个标志

答案B

5若已有说明float*p,m=3.14;要让p指向m,则正确的赋值语句是

Ap=m

Bp=&m

C*p=m

D*p=&m

答案B

6已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是B。

A)k=*ptr1+*ptr2

B)ptr2=k

C)ptr1=ptr2

D)k=*ptr1*(*ptr2)

7若有说明:

int*p,m=5,n;以下程序段正确的是D。

A)p=&n;

B)p=&n;scanf(“%d”,&p);scanf(“%d”,*p);

C)scanf(“%d”,&n);

D)p=&n;*p=n;*p=m;

 

8若有说明:

int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是C。

A)p1=&m;p2=&p1;

B)p1=&m;p2=&n;*p1=*p2;

C)p1=&m;p2=p1;

D)p1=&m;*p1=*p2;

9若有语句:

int*p,a=4;和p=&a;下面均代表地址的一组选项是D。

A)a,p,*&a

B)&*a,&a,*p

C)*&p,*p,&a

D)&a,&*p,p

10下面判断正确的是C。

A)char*a=”china”;等价于char*a;*a=”china”;

B)charstr[10]={“china”};等价于charstr[10];str[]={“china”;}

C)char*s=”china”;等价于char*s;s=”china”;

D)charc[4]=”abc”,d[4]=”abc”;等价于charc[4]=d[4]=”abc”;

11下面能正确进行字符串赋值操作的是C。

A)chars[5]={“ABCDE”};

B)chars[5]={‘A’,’B’,’C’,’D’,’E’};

C)char*s;s=”ABCDE”;

D)char*s;scanf(“%s”,s);

12设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是B。

A)c=*p1+*p2

B)p2=c

C)p1=p2

D)c=*p1*(*p2)

13设有程序段:

chars[]=”china”;char*p;p=s;则下面叙述正确的是D。

A)s和p完全相同

B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

14以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是D。

A)strcpy1(char*p1,char*p2){while((*p1++=*p2++)!

=’\0’);}

B)strcpy2(char*p1,char*p2){while((*p1=*p2)!

=’\0’){p1++;p2++}}

C)strcpy3(char*p1,char*p2){while(*p1++=*p2++);}

D)strcpy4(char*p1,char*p2){while(*p2)*p1++=*p2++;}

15下列关系运算符中,不属于关系运算符的是C

A<

B>=

C!

D!

=

 

二判断题

数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值(F)

C语言中,通过函数调用只能获得一个返回值(T)

对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义(T)

结构体变量的成员可以像普通变量一样进行各种运算(T)

在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。

(正确)

结构体类型只有一种。

(错)

x*=y+8等价于x=x*(y+8)。

(对)

C语言中只能逐个引用数组元素而不能一次引用整个数组。

(对)

共同体变量所占的内存长度等于最长的成员的长度。

(对)

typedef可以定义生成新的数据类型.(错)

三填空题

C语言中的数组必须先[定义],然后使用。

如果需要从被调用函数返回一个函数值,被调用函数必须包含【return】语句。

数组在内存中占用一段连续的存储空间,它的首地址由【数组名】表示

要使指针变量与变量之间建立联系,可以用运算符[*]来定义一个指针变量

C语言中的字符数组中的一个元素存放[1]个字符。

已知:

inta[5],*p=a;则p指向数组元素a[0],那么p+1指向a[1]

已知:

inta[5],*p=a;则p指向数组元素a[0],那么p+1指向a[6]

[全局变量]可以被本文件中的其他函数所共用

用数组元素作为函数的实参时,与用变量做实参一样,是[值]传递。

按序排列的同类型变量的集合称为【结构体变量】

请定义一个指向字符类型数据的指针变量p,【char*p】

 

四.程序阅读题

1.写出下面程序的运行结果。

5

func(char*s,chara,intn)

{intj;

*s=a;j=n;

while(*s

returnj;

}

main()

{charc[6];

inti;

for(i=1;i<=5;i++)*(c+1)=’A’+i+1;

printf(“%d\n”,func(c,’E’,5));

}

2.写出下面程序的运行结果。

6

fun(char*s)

{char*p=s;

while(*p)p++;

return(p-s);

}

main()

{char*a=”abcdef”;

printf(“%d\n”,fun(a));

}

3以下程序段的运行结果是()

structdate

{intyear,month,day;}today;

main()

{printf("%d\n",sizeof(structdate));}

答案:

structdate有三个成员,每个成员占4个字节,所以运行结果:

3×4=12

4.以下程序段的运行结果是

structabc

{inta,b,c,s;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};

intt;t=s[0].a+s[1].b;

printf("%d\n",t);}

答案:

s是一个结构数组,初始化的结果:

s[0].a=1,s[0].b=2,s[0].c=3,s[0].s=0,s[1].a=4,s[1].b=5,s[1].c=6,s[1].s=0

t的值为:

s[0].a

(1)+s[1].b(5)=6

输出结果:

6

5以下程序段的运行结果是

structa

{intx;

inty;

}num[2]={{20,5},{6,7}};

main()

{printf("%d\n",num[0].x/num[0].y*num[1].y);}

答案:

num[0].x=20;num[0].y=5;num[1].x=6;num[1].y=7;

输出结果:

20/5×7=28

五程序填空

1下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。

main()

{inti,j;

for(i=0;①;i++)

{j=i*10+6;

if(②)countinue;

printf("%d",j);

}

}

答案:

①i<=9②j%3!

=0

2下面的函数是一个求阶乘的递归调用函数。

facto(intn)

{if(n==1)①;

elsereturn(②);

}

答案:

①return

(1)②n*facto(n-1)

3通过指针变量访问整型变量。

先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量得到这些变量的值。

#include

intmain()

{inta=100,b=10;

int*pointer_1,*pointer_2;

printf(“a=%d,b=%d\n”,a,b);

printf(“*pointer_1=%d,*pointer_2=%d\n”,);

return0;

}

答案:

pointer_1=&a;

pointer_2=&b;

4输入a和b两个整数,按先大后小的顺序输出a和b。

include

intmain()

{int*p1,*p2,*p,a,b;

printf(“integernumbers:

");

scanf(“%d,%d”,&a,&b);

p1=&a;p2=&b;

if(a

{}

printf(“a=%d,b=%d\n”,a,b);

printf(“%d,%d\n”,*p1,*p2);

return0;

}

答案:

p=p1;p1=p2;p2=p;

5把一个学生的信息(包括学号、姓名、性别)放在一个结构体变量中,然后输出这个学生的信息。

#include

intmain()

{structStudent

{longintnum;charname[20];

charsex;

}a;

printf("NO.:

%ld\nname:

%s\n

sex:

%c\n",

a.num,a.name,a.sex);

return0;

}

答案:

a.num=10100;a.name=”liming”;

a.sex=’N’;

六程序修改题

1#include

intmain()

{

inta[10],i,j,t;

for(i=0;i<=9;i++)

{

scanf("%d",&a[i]);

/************************************************/

printf("%d,",&a[i]);去掉&

}

printf("\n");

for(i=0;i<=9;i--)改为i++

for(j=i+1;j<=9;j++)

if(a[i]

{t=a[i];a[i]=a[j];a[j]=t;}

for(i=0;i<=9;i++)

printf("%d,",a[i]);

}

2

#include

intmain()

{

inta[10],i,j,b;

printf("请输入10个数:

");

for(i=0;i<9;i++)

scanf("%d",&a[i]);

for(j=1;j<=9;j++)

/*******************************************/

if(a[j]

{

b=a[i];

/******************************************/

a[j]=a[i];改为a[i]=a[j];

a[j]=b;

}

printf("结果为:

");

printf("%d",a[i]);

printf("\n");

}

3在s字符串中寻找与指定字符c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。

如s字符串为:

baacda,c中的字符为a,执行后s字符串为:

baaaacdaa。

代码:

#include

#include

main()

{

inti;

chars[6]={'b','a','a','c','d','a'},c;

for(i=0;i<6;i++)

{

printf("%c",s[i]);

}

printf("\n");

printf("请输入字符\n");

/*************************************************/

scanf("%d",&c);%c

for(i=0;i<6;i++)

{

printf("%c",s[i]);

/*********************************************************/

if(s[i]=c)s[i]==c

{

printf("%c",c);

}

}

printf("\n");

}

4一个已经排好序的数组a[10]={1,3,4,6,9,12,13,15,18}。

要求按原来的规律将整数10插入到原数组中。

代码:

#include

voidmain()

{

inta[10]={1,3,4,6,9,12,13,15,18},b[4],i,j;

printf("原数组为;\n");

/***************************/

for(i=0;i<10;i++)i<9

{

printf("%d\t",a[i]);

}

printf("\n");

for(i=5,j=0;j<4;j++,i++)

{

b[j]=a[i];

}

/*******************************/

a[6]=10;改为a[5]=10;

for(i=6,j=0;i<10;i++,j++)

{

a[i]=b[j];

}

printf("现数组为;\n");

for(i=0;i<10;i++)

{

printf("%d\t",a[i]);

}

printf("\n");

}

5

#include

voidmain()

{

inta[10],i,j,n,d,f;

for(n=0;n<=9;n++)

/***********************************/

{

printf("第%d个整数为\n",n);n+1

scanf("%d",&a[n]);

}

printf("排序前的结果为\n");

for(n=0;n<=9;n++)

{

printf("%d\t",a[n]);

}

for(i=0;i<9;i++)

{

for(j=i+1,f=0;f<9-i;j++,f++)

/***********************************/

{

if(a[j]>a[i])a[i]>a[j];

{

d=a[i];

a[i]=a[j];

a[j]=d;

}

}

}

printf("排序后的结果为\n");

for(n=0;n<=9;n++)

{

printf("%d\t",a[n]);

}

}

七程序设计

设计:

输入两个学生的学号、姓名和成绩,输出成绩较高学生的姓名。

#include

intmain()

{structStudent

{intnum;

charname[20];

floatscore;

}student1={10101,”liming”,96},student2={10100,”xiaoming”,65};

If(stdent1.score

Printf(“%s”,student2.name);

If(stdent1.score>student2.score)

Printf(“%s”,student1.name);

If(stdent1.score=tudent2.score)

Printf(“%s,%s”,student1.name,student2.name);

一个已经排好序的数组a[10]={1,3,4,6,9,12,13,15,18}。

要求按原来的规律将整数10插入到原数组中。

#include

main()

{

inta[10]={1,3,4,6,9,12,13,15,18},i,t;

a[9]=10;

for(i=0;i<10;i++)

{

if(a[i]>a[9])

{t=a[i];

a[i]=a[9];

a[9]=t;

}

printf("%d,",a[i]);}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1