c语言程序设计练习a.docx
《c语言程序设计练习a.docx》由会员分享,可在线阅读,更多相关《c语言程序设计练习a.docx(22页珍藏版)》请在冰豆网上搜索。
c语言程序设计练习a
1.C语言规定:
简单变量做实参时,它和对应形参之间的数据传递方式是(CC_______________________________________________________________________________________________________________________________)。
A、地址传递
B、由实参传给形参,再由形参传回给实参
C、单向值传递
D、由用户指定的传递方式
2.以下程序的输出结果是A
voidsub(floatx,float*y,float*z)
{*y=*y-1.0;
*z=*z+x;
}
main()
{floata=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pb);
printf(“%f\n”,a);
}
A、10.500000
B、9.000000
C、1.500000
D、8.000000
3.以下叙述中不正确的是(C)。
A、以下是正确的宏定义#defineIBM_PC
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、预处理命令行都必须以#号开始
4.在定义构造数据类型时,不能(C)。
A、说明变量
B、说明存储类型
C、末尾不写分号
D、初始化
5.若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是
scanf(“a=%f,b=%f”,&a,&b);D
A、a=3.12,b=9
B、a=3.12b=9
C、3.129.0
D、a=3.12,b=9.0
6.chara[10];不能将字符串"abc"存储在数组中的是(C)。
A、strcpy(a,"abc");
B、inti;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
C、a="abc";
D、a[0]=0;strcat(a,"abc");
7.若a=1,b=2则a|b的值是(D)。
A、1
B、2
C、0
D、3
8.若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是A
scanf(“%f%f%f”,&a,&b,&c);
A、
B、
C、
D、
9.以下程序的输出结果是A
main()
{inta=5,b=6,c=7,d=8,m=2,n=2;
printf(“%d\n”,(m=a>b)&(n=c>d));
}
A、0
B、3
C、1
D、2
10.以下数据中,不正确的数值或字符常量是(B)。
A、50
B、c
C、0xaa
D、66
11.如果inta=2,b=3,c=0,下列描述正确的是D
A、a||(b=c)执行后b的值为0
B、a>b!
=c和a>(b!
=c)的执行顺序是一样的
C、a&&b>c的结果为假
D、!
a!
=(b!
=c)表达式的值为1
12.在下列程序段中,枚举变量c1,c2的值依次是(A)。
enumcolor{red,yellow,blue=4,green,white}c1,c2;
c1=yellow;c2=white;
printf("%d,%d\n",c1,c2);
A、1,6
B、1,4
C、2,6
D、2,5
13.以下程序的输出结果是B
main()
{intk=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
p=func(k,m);
printf(“%d\n”,p);
}
func(inta,intb)
{staticintm,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A、8,20
B、8,17
C、8,8
D、8,16
14.执行下面的程序段后,变量k中的值为D
intk=3,s[2];
s[0]=k;k=s[1]*10;
A、33
B、10
C、30
D、不定值
15.以下符合C语言语法的赋值表达式是(A)。
A、d=9+e,f=d+9
B、d=9+e+f=d+9
C、d=9+e++=d+7
D、d=9+e,e++,d+9
16.以下程序的输出结果是A
main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d“,x);
}
printf(“\n”);
}
A、2870
B、3981
C、4284
D、2668
17.下面的程序片断所表示的数学函数关系是A
y=-1;
if(x!
=0)y=1;
if(x>0)y=1;
elsey=0;
A、
B、
C、
D、
18.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)。
A、函数调用可以出现在表达式中
B、函数调用可以作为独立的语句存在
C、函数调用可以作为一个函数的实参
D、函数调用可以作为一个函数的形参
19.下列叙述中正确的是(D)。
A、C语言的子程序有过程和函数两种
B、C语言编译时不检查语法
C、C语言的函数可以嵌套定义
D、C语言所有函数都是外部函数
20.若有下列定义,则对a数组元素地址的正确引用是(B)。
inta[5],*p=a;
A、&a
B、p+2
C、a++
D、&a[5]
21.以下程序中,若第一个printf语句输出的是194,则第二个printf语句的输出结果是D
main()
{inta[]={1,2,3,4,5,6,7,8,9,0};
printf(“%x\n”,a);
printf(“%x\n”,a+9);
}
A、212
B、204
C、1a4
D、1a6
22.C语言中while和do-while循环的主要区别是(B)。
A、while的循环控制条件比do-while的循环控制条件更严格
B、do-while的循环体至少无条件执行一次
C、do-while的循环体不能是复合语句
D、do-while允许从外部转到循环体内
23.有以下程序
main()
{inti=10,j=1;
printf("%d,%d\n",i--,++j);
}
执行后输出结果是D
A、10,1
B、9,2
C、9,1
D、10,2
24.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是(A)。
A、int*p=&x;
B、intp=&x;
C、*p=*x;
D、int*p=x;
25.以下可作为函数fopen中第一个参数的正确格式是(C)。
A、c:
\user\text.txt
B、c:
user\text.txt
C、"c:
\\user\\text.txt"
D、"c:
\user\text.txt"
26.下列程序运行结果为:
C
#defineP3
#defineS(a)P*a*a
main()
{intar;
ar=S(3+5);
printf("\n%d",ar);
}
A、192
B、25
C、29
D、27
27.以下程序段的输出结果是D
charstr[]=“ABCD”,*p=str;
printf(“%d\n”,*(p+4));
A、不确定的值
B、字符D的地址
C、68
D、0
28.若int类型数据占两个字节,则下列语句的输出为(D)。
intk=-1;printf("%d,%u\n",k,k);
A、-1,32768
B、-1,-1
C、-1,32767
D、-1,65535
29.若有以下程序段,c3中的值是D
intc1=1,c2=2,c3;
c3=c1/c2;
A、0.5
B、1
C、1/2
D、0
30.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为(D)。
A、fwrite
B、close()
C、fread()
D、fclose()
1.如果有一个字符串,其中第十个字符为'\n',则此字符串的
有效字符为9个。
F
2.intmax(a,b);是正确的函数调用语句.F
3.设有数组定义:
chararray[]="hello";则数组array所占的空间为5.F
4.十进制数15的二进制数是1111.T
5.若有定义和语句:
inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)sum+=a[i][2-i];则sum=21.T
6.函数strlen("ASDFG\n")的值是7。
F
7.两个字符串中的字符个数相同时才能进行字符串大小的比较F
8.若有intⅰ=10,j=0;则执行完语句
if(j=0)ⅰ++;elseⅰ--;ⅰ的值为11。
F
9.函数调用语句:
func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.F
10.若定义:
inta=3,b=2,c=1;则关系表达式((a>b)==c)的值为"真"。
T
1./*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
将字符串中的大写字母转换为对应的小写字母,
其它字符不变。
------------------------------------------------*/
#include"stdio.h"
#include"string.h"
voidchange(charstr[])
{
/**********Begin**********/
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='A'&&str[i]<='Z')str[i]=str[i]+32;
/**********End**********/
}
voidTestFunc();
main()
{
charstr[40];
gets(str);
change(str);
puts(str);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intn;
inti[200];
into[200];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("WriteFileError");
}
fscanf(IN,"%s",i);
change(i);
fprintf(OUT,"%s",i);
fclose(IN);
fclose(OUT);
}
【参考代码】
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='A'&&str[i]<='Z')str[i]=str[i]+32;
2./*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
fun函数的功能是,判断一个三位数是否"水仙花数"。
在main函数中从键盘输入一个三位数,并输出判断结果。
说明:
所谓"水仙花数"是指一3位数,其各位数字立方和
等于该数本身。
例如:
153是一个水仙花数,因为153=1+125+27。
------------------------------------------------*/
#include"stdio.h"
intfun(intn)
{
/**********Begin**********/
intbw,sw,gw;
bw=n/100;sw=(n-bw*100)/10;gw=n%10;
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;
elsereturn0;
/**********End**********/
}
voidTestFunc();
main()
{
intn,flag;
scanf("%d",&n);
flag=fun(n);
if(flag==1)
printf("%d是水仙花数\n",n);
else
printf("%d不是水仙花数\n",n);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intiIN,i;
intiOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
【参考代码】
intbw,sw,gw;
bw=n/100;sw=(n-bw*100)/10;gw=n%10;
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;
elsereturn0;
1./*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
------------------------------------------------------*/
#include
voidmain()
{
/**********ERROR**********/
inti,s;p,n;inti,s,p,n;
printf("Entern:
\n");
/**********ERROR**********/
scanf("%d",n);scanf("%d",&n);
/**********ERROR**********/
for(s=p=0,i=1;is+=p+=i;
printf("S=%d\n",s);
}
改错1】正确
【学生答案】
inti,s,p,n;
【参考答案】
inti,s,p,n;
============================================================
【改错2】正确
【学生答案】
scanf("%d",&n);
【参考答案】
scanf("%d",&n);
============================================================
【改错3】错误
【学生答案】
for(s=p=0,i=0;i【参考答案】
for(s=p=0,i=1;i<=n;i++)
============================================================
1./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
利用指向结构的指针编写求某年、某月、某日是第
几天的程序,其中年、月、日和年天数用结构表示。
-------------------------------------------------------*/
main()
{
/**********FILL**********/
struct_____date
{
inty,m,d,n;
/**********FILL**********/
}x_____;
intk,f,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("date:
y,m,d=");
scanf("%d,%d,%d",&x.y,&x.m,&x.d);
f=x.y%4==0&&x.y%100!
=0||x.y%400==0;
/**********FILL**********/
a[1]+=f_____;
if(x.m<1||x.m>12||x.d<1||x.d>a[x.m-1])exit(0);
for(x.n=x.d,k=0;k/**********FILL**********/
printf("n=%d\n",x.n_____);
}
【空1】正确
【学生答案】
structdate
【参考答案】
struct
============================================================
【空2】错误
【学生答案】
}_____;
【参考答案】
x
============================================================
【空3】错误
【学生答案】
a[1]+=_____;
【参考答案】
f
============================================================
【空4】错误
【学生答案】
printf("n=%d\n",_____);
【参考答案】
x.n
============================================================
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
<<<题干内容>>>
给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号、姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
------------------------------------------------------*/
#include
#include
#defineN5
typedefstruct
{intnum;
charname[10];
chartel[10];
}STYPE;
/**********FILL**********/
intfun(STYPE_____*std)
{
FILE*fp;
inti;
/**********FILL**********/
if((fp=fopen("myfile5.dat","wb"_____))==NULL)
return(0);
printf("\nOutputdatatofile!
\n");
for(i=0;ifwrite(&std[i],sizeof(STYPE),1,fp);
/**********FILL**********/
fclose(fp)_____;
return
(1);
}
main()
{STYPEs[10]={{1,"aaaaa","111111"},{2,"bbbbb","222222"},{3,"ccccc","333333"},
{4,"ddddd","444444"},{5,"eeeee","555555"}};
intk;
k=fun(s);
if(k==1)
printf("Succeed!
");
else
printf("Fail!
");
}
【空1】错误
【学生答案】
intfun(_____*std)
【参考答案】
STYPE
============================================================
【空2】错误
【学生答案】
if((fp=fopen("myfile5.dat",_____))==NULL)
【参考答案】
"wb"
============================================================
【空3】错误
【学生答案】
_____;
【参考答案】
fclose(fp)
============================================================