首页 理论教育 C语言程序设计强化训练-计算机类知识点复习指导

C语言程序设计强化训练-计算机类知识点复习指导

时间:2023-10-25 理论教育 版权反馈
【摘要】:A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定6.在C 语言程序中,以下描述正确的是()。A.p+9B.(p+8)C.p+=9D.p+820.下面程序输出数组中的最大值,由s 指针指向该元素。

C语言程序设计强化训练-计算机类知识点复习指导

1.若x 和y 都为float 型变量,且x=3.6,y=5.8,执行下列语句后,输出结果为( )。printf("%f",(x,y));

A.3.600000 B.5.800000

C.3.600000,5.800000 D.输出符号不够,输出不正确值

2.循环语句中的for 语句,其一般形式如下:

for(表达式1;表达式2;表达式3) 语句

其中表示循环条件的是( )。

A.表达式1 B.表达式2 C.表达式3 D.语句

3.能正确表示x 的取值范围在[0,10]和[-10,-5]内的表达式是( )。

A.(x<=-10)‖(x>=-5)&&(x<=0)‖(x>=10)

B.(x>=-10)&&(x<=-5)‖(x>=0)&&(x<=10)

C.(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=10)

D.(x<=-10)‖(x>=-5)&&(x<=0)‖(x>=10)

4.当调用函数时,实参是一个数组名,则向函数传送的是( )。

A.数组的长度 B.数组的首地址

C.数组每一个元素的地址 D.数组每个元素中的值

5.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )。

A.地址传递 B.单向值传递

C.由实参传给形,再由形参传回实参 D.传递方式由用户指定

6.在C 语言程序中,以下描述正确的是( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和函数的调用均不可以嵌套

D.函数的定义和函数的调用均可以嵌套

7.以下叙述中,正确的是( )。

A.全局变量的作用域一定比局部变量的作用域范围大

B.静态(static)类别变量的生存期贯穿于整个程序的运行期间

C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto 变量和static 变量的初值都是随机值

8.以下程序的运行结果是( )。

#include <stdio_h>

void sub(int s[],int y)

{ static int t=3;

y=s[t];t--;

}

main()

{ int a[]={1,2,3,4},i,x=0;

for(i=0;i<4;i++){

sub(a,x);printf("%d",x);}

printf("\n");

}

A.1234 B.4321 C.0000 D.4444

9.以下程序的运行结果是( )。

main()

{ int w=5;fun(w);printf("\n");}

fun(int k)

{ if(k>0) fun(k-1);

printf("%d",k);

}

A.5 4 3 2 1 B.0 1 2 3 4 5 C.1 2 3 4 5 D.5 4 3 2 1 0

10.以下所列的各函数首部中,正确的是( )。

A.void play(vat a:Integer,var b:Integer)

B.void play(int a,b)

C.void play(int a,int b)

D.sub play(a as integer,b as integer)

11.要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是( )。

A.funa(int∗x,int∗y){int∗p;∗p=∗x;∗x=∗y;∗y=∗p;}

B.funb(int x,int y){int t;t=x;x=y;y=t;}

C.func(int∗x,int∗y){∗x=∗y;∗y=∗x;}

D.fund(int∗x,int∗y){∗x=∗x+∗y;∗y=∗x-∗y;∗x=∗x-∗y;}

12.若有说明long ∗p,a;,则不能通过scanf 语句正确给输入项读入数据的程序段是( )。

A.∗p=&a;scanf("%1d",p);

B.p=(long ∗)malloc(8);scanf("%1d",p);

C.scanf("%1d",p=&a);

D.scanf("%1d",&a);

13.对于类型相同的两个指针变量之间,不能进行的运算是( )。

A.< B.= C.+ D.-

14.若已定义int a[9],∗p=a;,并在以后的语句中未改变p 的值,不能表示a[1] 地址的表达式是( )。

A.p+1 B.a+1 C.a++ D.++p

15.若有以下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},∗p=a;

则数值为6 的表达式是( )。

A.∗p+6 B.∗(p+6) C.∗p+=5 D.p+5

16.设P1 和P2 是指向同一个int 型一维数组的指针变量,k 为int 型变量,则不能正确执行的语句是( )。

A.k=∗P1+∗P2; B.p2=k;

C.P1=P2; D.k=∗P1∗(∗P2)

17.若有以下定义:

int a[ ]={1,2,3,4,5,6,7,8,9,10},∗p=a;

则值为3 的表达式是( )。

A.p+=2,∗(p++) B.p+=2,∗++p

C.p+=3,∗p++ D.p+=2,++∗p

18.若有以下定义和语句:

int a[10]={1,2,3,4,5,6,7,8,9,10},∗p=a;

则不能表示a 数组元素的表达式是( )。

A.∗p B.a[10] C.∗a D.a[p-a]

19.有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},∗p=a;

则数值为9 的表达式是( )。

A.∗p+9 B.∗(p+8) C.∗p+=9 D.p+8

20.下面程序输出数组中的最大值,由s 指针指向该元素。

void main()

{ int a[10]={6,7,2,9,1,10,5,8,4,3,},∗p,∗s;

for(p=a,s=a;p-a<10;p++)

if([])s=p;

printf("The max:%d",∗s):

}

则在if 语句中的判断表达式应该是( )。

A.p>s B.∗p>∗s C.a[p]>a[s] D.p-a>p-s

二、程序填空题

1.下列函数rtrim_str 实现的是删除字符串str 尾部所有空格。

char∗rtrim_str(char∗str)

{ int n=____①___;

if(n<1)

return 0;

while(n>0)

{ if(∗(str+n)!=")

{____②___;

break;

}

else

____③___;

}

return str;

}

2.下面的程序从文本文件test.txt 逐个读入字符,并显示在屏幕上。

#include <stdio.h>

main()

{ FILE∗fp;

charch;∗filename="test.txt";

if((fp=____①___(filename,"r"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

while(!(____②___(fp))

{ ch=fgectc(fp);

putchar(ch);

}

fclose(fp);

}

3.以下程序是求矩阵a,b 的和,结果存入矩阵c 中并按矩阵形式输出。请填空:

main()

{ int a[3][4]={ { 7,5,-2,3 },{ 1,0,-3,4 },{ 6,8,0,2 } };

int b[3][4]={ { 5,-1,7,6 },{ -2,0,1,4 },{ 2,0,8,6 } };

int i,j,c[3][4];

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

for( j=0;j<4;j++)

c[i][j]=____①___;

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

{ for( j=0;j<4;j++)

printf("%3d",____②___) ;

printf("\n"); }

}

4.从键盘输入一个字符串,把它输出到磁盘文件f1.dat 中(用字符‘#’作为结束输入的标志)。

# include <stdio.h>

main()

{ FILE ∗fp ;

char ch,fname[10];

printf("文件名:");

gets(fname);

if((fp=____①___)==NULL)

{ printf("connot open\n");

exit(0);(www.xing528.com)

}

while((ch=getchar())!='#')

fputc(____②___);

____③___;

}

5.将名为f1.dat 的文件拷贝到一个名为f2.dat 的文件中。

# include <stdio.h>

main()

{ FILE ∗fp1,∗fp2 ;

char c;

if((fp1=fopen("f1.dat",____①___)==NULL)

{ printf("connot open\n");

exit(0);

}

if((fp2=fopen("f2.dat",____②___)==NULL)

{ printf("connot open\n");

exit(0);

}

c=fgetc(fp1);

while(____③___)

{ fputc(c,fp2);

c=fgetc(fp1);

}

____④___;

____⑤___;

}

6.打印出worker2.rec 中顺序号为奇数的职工记录(即第1,3,5,…号职工的数据)。

#include <stdio.h>

struct worker_type

{ int num;

char name[10];

char sex;

int age;

int pay;

} worker[10];

main()

{ int i;

FILE ∗fp;

if((fp=fopen(____①___)==NULL)

{ printf("connot open\n");

exit(0);

}

for(i=0;i<10;____②___)

{ fseek(fp,____③___,0);

fread(____④___,____⑤___,1,fp);

printf("%5d %-10s %-5c %5d %5d\n",worker[i].num,worker[i].name,worker[i].sex,worker[i].age,worker[i].pay);

}

fclose(fp);

}

三、根据程序写结果

1.程序运行结果是________。

#include <stdio.h>

void main()

{ int ∗p1,∗p2,∗p;

int a=5,b=8;

p1=&a;p2=&b;

if(a<b) { p=p1;p1=p2;p2=p;}

printf("%d,%d\n",∗p1,∗p2);

printf("%d,%d\n",a,b);

}

2.程序运行结果是________。

void ast(int x,int y,int ∗cp,int ∗dp)

{ ∗cp=x+y;∗dp=x-y;}

void main()

{ int a,b,c,d;

a=4;b=3;

ast(a,b,&c,&d);

printf("%d,%d\n",c,d);

}

3.程序运行结果是________。

void main()

{ int a[]={2,4,6,8,10};

int y=1,x,∗p;

p=&a[1];

for(x=0;x<3;x++)y+=∗(p+x);

printf("y=%d\n",y);

}

4.程序运行结果是________。

void main()

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

int m,∗ptr;

ptr=&a[0][0];

m=(∗ptr)∗(∗(ptr+2))∗(∗(ptr+4));

printf("%d\n",m);

}

5.程序运行结果是________。

void prtv(int ∗x)

{ printf("%d\n",++∗x);

}

void main()

{ int a=25 ;prtv(&a);

}

6.程序运行结果是________。

#include < stdio.h>

void FUN( int ∗S)

{ static int J=0;

do {S[J] +=S[J+1];}while( ++J<2);

}

void main()

{ int K,A[10]={ 1,2,3,4,5};

for( K=1;K<3;K++) FUN(A);

for(K=0;K<5;K++) printf("%d",A[K]);

}

7.程序运行结果是________。

#include <stdio.h>

fun(int ∗s,int n1,int n2)

{ int i,j,t ;

i=n1 ;j=n2 ;

while(i<j)

{ t=∗(s+i) ;

∗(s+i)=∗(s+j) ;

∗(s+j)=t ;

i++;j-- ;

}

}

void main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},i,∗p=a;

fun(p,0,3) ;

fun(p,4,9) ;

fun(p,0,9) ;

for(i=0 ;i<10 ;i++) printf("%d",∗(a+i));

printf("\n") ;

}

8.程序运行结果是________。

void as(int x,int y,int ∗cp,int ∗dp)

{ ∗cp=x+y;∗dp=x-y;}

void main()

{ int a=4,b=3,c,d ;

as(a,b,&c,&d);

printf("%d %d\n",c,d);

}

9.程序运行结果是________。

void func(int ∗a,int b[ ])

{ b[0]=∗a+6;}

main()

{ int a,b[5];

a=0;b[0]=3;

func(&a,b);

printf("%d \n",b[0]);

}

10.程序运行结果是________。

#include <stdio.h>

sub(int x,int y,int ∗z)

{ ∗z=y-x ;}

main()

{ int a,b,c ;

sub(10,5,&a) ;

sub(7,a,&b) ;

sub(a,b,&c) ;

printf("%d,%d,%d\n",a,b,c) ;

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈