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.当调用函数时,实参是一个数组名,则向函数传送的是( )。
C.数组每一个元素的地址 D.数组每个元素中的值
5.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )。
A.地址传递 B.单向值传递
C.由实参传给形,再由形参传回实参 D.传递方式由用户指定
6.在C 语言程序中,以下描述正确的是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
7.以下叙述中,正确的是( )。
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) ;
}
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。