一、选择题(每题
1分,共
20分)
1.
C语言程序的三种基本结构是顺序结构、选择结构和
结构。
A、循环
B、递归
C、转移
D、嵌套
2.
下列标识符中,合法的是_______。
A)unsigned
B)5ab
C)INT#
D)_num23.
若floatx;x=10/4;
x的值是。A、B、2.C、D、4.
表达式
!x等价于。A、x==B、x==1C、x!=D、x!=15.
算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。A、算术运算、赋值运算、关系运算
B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算
D、关系运算、算术运算、赋值运算
6.
能将高级语言编写的源程序转换为目标程序的是。A、链接程序
B、解释程序
C、编译程序
D、编辑程序
7.
下列语句定义pf为指向float类型变量f的指针,是正确的。
A、float
f,*pf=f;
B、float
f,*pf=&f;
C、float
*pf=&f,f;
D、float
f,pf=f;
8.
一个C程序的执行是从。A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
9.
能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B、(x>=1)||(x<=10)||(x>=200)||(x<=210)
C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)
10.
对两个数组a和b进行如下初始化
chara[]=“ABCDEF”;
charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是。A、a和b数组完全相同
B、a和b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
11.
是不正确的字符常量。
A、"\n"
B、"1"
C、"a"
D、"\101"
12.
若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和
等价。
A、k=(a>b)1:0;
B、k=a>b;
C、k=a<=b;
D、a<=b
0:1;
13.
设变量定义为“intx,*p=&x;”,则&*p相当于。A、p
B、*p
C、x
D、*&x
14.
有两个字符数组a、b,则以下正确的输入语句是。A)gets(a,b);
B)
scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&a,&b);
D)
gets(“a”),gets(“b”);
15.
C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回给实参
D、由用户指定传递方式
16.
C语言规定,函数返回值的类型是由。A、return语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定
17.
若已定义
chars[10];则在下面表达式中不表示s[1]的地址的是。A、s+1B、s++
C、&s[0]+1D、&s[1]
18.
下列关于switch语句和break语句的说法中,正确的是。A、break语句是switch语句中的一部分。
B、在switch语句中可以根据需要使用或不使用break语句。
C、在switch语句中必须使用break语句。
D、以上三个结论中有两个是正确的。
19.
以下对二维数组a的正确说明是。A、inta[][3]={0};
B、inta[3][]={{1},{2},{3}};
C、inta[1][3]={1,2,3,4};
D、inta[2][3]={{1,2},{3,4},{5,6}};
20.
以下结构体类型和变量的定义,正确的是。A、structstudent
B、struct
{intnumber,
{intnumber,
charname[20],
charname[20],
}s;
};s;
C、structstudent
D、structstudent
{intnumber;
{intnumber;
charname[20];
charname[20];
}s;
};s;
二、填空题(每空
2分,共
20分)
1.
写出语句
printf("%d,%o,%x",0x12,12,012);的输出结果
①。2.
C语言运算符中,优先级最低的是
②。3.
intx;floaty;且执行scanf(“%3d%f”,&x,&y);语句时,从第一列开始输入数据12345是
③y的值是
④。4.
定义inti=1;执行while(i++<5)后i的值为
⑤。5.
执行下列语句chars[4]=”DEF”,*p;
p=s;后,*(p+3)的值是
⑥。6.
构成数组的各个元素必须具有相同的⑦。5.在C语言中,二维数组元素在内存中的存放顺序是
⑧。7.
在C语言中,逻辑“假”值为
⑨。8.
字符串”ab\034\\\x79”的长度为
⑩。678,则x的值
三、读程序,写结果(每题4分,共20分)
1.写出下列程序段的输出结果。
#include<>
main()
{int
k;
for(k=10;k!=0;k--);
printf("%d",k);
}
3.写出下列程序的输出结果。
#include<>
main()
{
struct
st{
intx,y;
}a[4]={{10,20},{30,40},{50,60},{70,80}};
structst
*p=a;
printf("%d,",(*a).x);
printf("%d,",a[2].y);
printf("%d\n",(*(p+3)).x);
}
5.写出下列程序的输出结果。
#include""
void
main()
{inta[10]={1,2,3,-4,5,6,7,-8,9,10},s=0;
for(inti=0;i<10;i++)
{if(a[i]<0)
break;
s+=a[i];
}
printf("%d",s);
}
四、程序填空题(每空
2分,共
20分)
1.下列程序,求数组中主对角线元素之和。
main()
{inta[3][3],s=0;
for(inti=0;i<3;i++)
for(intj=0;j<3;j++)
scanf("%d",
①);
2.写出下列程序的输出结果。
#include<>
void
sub(intx,inty,int*z)
{*z=y-x;}
main()
{inta,b,c;
sub(7,3,&a);
sub(2,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
4.写出下列程序的输出结果。
#include""
voidmain()
{
intk,j,a[5][5],b[5];
for(k=0;k<5;k++)
for(j=0;j<5;j++)
a[k][j]=k*5+j+1;
for(k=0;k<5;k++)
{
b[k]=0;
for(j=0;j<5;j++)
b[k]+=a[k][j];
}
for(k=0;k<3;k++)
printf("%4d",b[k]);
}
for(i=0;i<3;i++)
for(intj=0;j<3;j++)
if(②)
s+=
③;
printf("s=%d\n",s);
}
2.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。
#include<>
voidmain()
{intalpha,space,digit,other;
char*p,s[80];
alpha=space=digit=other=0;
gets(s);
for(p=s;*p!="\0";p++)
if(④)alpha++;
elseif(⑤)space++;
elseif(⑥)digit++;
elseother++;
printf("alpha:%dspace:%ddigit:%d
other:%d\n",alpha,space,digit,other);
}
输入10个数,按从大到小的顺序排序输出。
#include<>
voidmain()
{inti,j,a[10],temp;
for(i=0;i<10;i++)
⑦
for(i=0;i<9;i++)
for(⑧
;
⑨
;j++)
if(⑩)
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
五、编程题
(每题10分,共
20分)
1.从键盘输入10个整数,求所有素数的和。要求判断整数是否为素数的功能用函数实现。
2.a为float型的一维数组,输入n个实数,去掉一个最大数,去掉一个最小数,求其他n-2个数的平均值(输出时要求保留一位小数.)
如输入
/*
n=5*/
则输出++的平均值:。
参考答案
一、选择题(每小题
2分,共
20分)
1-5ADBAC
6-1CBACD11-15CCABB
16-20DBBAC
填空题(每小题
2分,共
20分)
1、18,14,a
2、,3、1234、5、6、’\0’
7、数据类型
8、按行
9、10、11、三、读程序,写结果(每小题题4分,共20分)1、2、-4,-6,-23、10,60,74、154655、程序填空题(每空
2分,共
20分)
1、&a[i][j]
2、i==j
3、a[i][j]
4、(*p>="a"&&*p<="z")||(*p>="A"&&*p<="Z")
5、*p==""
6、(*p>="0"&&*p<="9")
7、scanf("%d",&a[i]);
8、j=j<9-i
10、a[j]
五、编程题
(每题10分,共
20分)
#include<>
#include<>
Voidmain(void)
{
Inta[10],i,sum=0;
Intf(intx);
}
for(i=0;i<10;i++)
{Scanf(“%d”,&a[i]);
if(f(a[i])
sum=sum+a[i];
}
Printf(“sum=%d”,sum);
}
Intfunctionf(intx)
{
IntI,k=1;
For(i=2;i<=sqrt(x);i++)
If(x%i==0)
{k=0;
Break;
}
Returnk
#include<>
Voidmain(void)
{
floata[100],sum=0,avg,max,min;int
I,n;
scanf(“%d”,&n);
for(i=0;i
Scanf(“%f”,&a[i]);
max=a[0];
min=a[0];
sum=a[0];
for(i=1;i
sum=sum+a[i];
一、填空题
if(a[i]>max)max=a[i];
if(a[i]
}
Avg=(sum-max-min)/n-2;
Printf(“avg=%.1f”,ang);
}
1、C语言中基本的数据类型有:__________、__________、__________。
2、C语言中普通整型变量的类型说明符为__________,在内存中占__________字节,有符号普通整型的数据范围是__________。3、整数-35在机内的补码表示为__________。
4、执行下列语句inta=8;a+=a-=a*a;后,a的值是__________。
5、有如下语句:charA[]={”Iamastudent”};该字符串的长度是__________,A[3]=__________。
6、符号”a”和’a’的区别是__________。
7、所谓“指针”就是__________。
“&”运算符的作用是__________。
“*”运算符的作用是__________。
8、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是__________。
二、选择题
1、设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>32:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。
A.缩排位置相同的ifB.在其之前未配对的if
C.在其之前未配对的最近的if?
D.同一行上的if3、以下程序的输出结果是()。
intx=10,y=10;
printf(“%d%d\n”,x--,--y);A.1010B.99C.910D.104、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
5、选出下列标识符中不是合法的标识符的是()。
A.hot_doB.cat1C._priD.2ab
6、以下程序的输出结果是()。
inta=5;floatx=;a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
A.
B.C.
D.627、设有说明double(*p1)[N];其中标识符p1是()。
A.N个指向double型变量的指针。
B.指向N个double型变量的函数指针。
C.一个指向由N个double型元素组成的一维数组的指针。
D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。
8、在C程序中有如下语句:char*func(intx,inty);它是()。
A.对函数func的定义。?
B.对函数func的调用。
C.对函数func的原型说明。
D.不合法的。
9、以下程序的输出结果是()。
charstr[15]=”hello!”;
printf(“%d\n”,strlen(str));
A.15B.14C.7D.610、分析以下程序的输出结果是()。
main(){inta=5,b=-1,c;c=adds(a,b);printf(“%d”,c);
c=adds(a,b);printf(“%d\n”,c);}
intadds(intx,inty){staticintm=0,n=3;n*=++m;m=n%x+y++;return(m);}A.2,3B.2,2C.3,2D.2,411、下列描述中不正确的是()。
A.字符型数组中可能存放字符串。
B.可以对字符型数组进行整体输入、输出。
C.可以对整型数组进行整体输入、输出。
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
12、以下程序的输出结果是()。
#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf(“%d\n”,c);
}A.9B.6C.36D.113、设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。
A.1B.0C.4D.314、定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是()。
A.159B.147C.357D.3615、以下对二维数组a进行正确初始化的是()
A.inta[2][3]={{1,2},{3,4},{5,6}};B.inta[][3]={1,2,3,4,5,6};C.inta[2][]={1,2,3,4,5,6};D.inta[2][]={{1,2},{3,4}};
16、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。
intx;scanf("%d",&x);if(x++>5)printf("%d",x);elseprintf("%d\n",x--);A.7和5B.6和3C.7和4D.6和417、设有如下定义:char*aa[2]={"abcd","ABCD"};则以下说法中正确的是()。
A)aa数组成元素的值分别是"abcd"和ABCD"B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符"a"和"A"的地址
18、下列程序的输出结果是()。
char*p1="abcd",*p2="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);A.xyabcAB
B.abcABz
C.ABabcz
D.xycdBCD
19、下列程序的输出结果是()。
inta[5]={2,4,6,8,10},*P,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);A.44B.22C.24D.4620、不能把字符串:Hello!赋给数组b的语句是()。
A.charb[10]={"H","e","l","l","o","!"};
B.charb[10];b="Hello!";C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
三、读程序题
1、floatf=;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是__________。
2、intx=6,y=7;
printf(“%d,”,x++);
printf(“%d\n”,++y);
程序的输出结果是__________。
3、a=3;
a+=(a<1)a:1;
printf(“%d”,a);
结果是__________。
4、for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}程序的输出结果a的值为__________。
5、inty=1,x,*p,a[]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);程序的输出结果y的值是__________。
四、程序填空题
1、从键盘上输入10个数,求其平均值。
main()
{inti;floatf,sum;for(i=1,sum=;i<11;i++)
{__________;__________;}printf(“average=%f\n”,sum/10);}
2、以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。
#include
main(){FILE*fp;charc;fp=__________;do{c=getchar();fputs(c,fp);}while(c!=EOF);__________}
3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.main()
{floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(){if(x>amax)amax=x;if()amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}
五、编程题
1.三个整数a、b、c,由键盘输入,输出其中最大的一个数。
2.输出1900~2000年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)
3.请编一个函数intfun(inta),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。
4.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。
参考答案
一、填空题
(1)整型、实型、字符型。
(2)int,2,-32768~+32767(3)101(4)-112(5)14,’m’
(6)”a”是字符串常量,而’a’是字符常量。
(7)存放地址值的变量或常量,或者答地址。
(8)取运算对象的地址。
取指针变量所指的内容。
(8)a=1,b=3,c=2二、选择题
1、C2、C3、D4、B5、D
6、A7、C8、C9、D10、A
11、C12、C13、D14、C15、B
16、C17、D18、D19、C20、B
三、阅读程序题
(1),,(2)6,8(3)4(4)22(5)1四、程序填空题
1、scanf(“%f”,&f);sum+=f;
2、fopen(“myfile”,w)fclose(fp);
3、x>=x<=amin
五、编程题
1、main(){inta,b,c;printf(“请输入三个整数:”);
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
elseif(aelseprintf(“max=%d\n”,a);}
2、#include””
main()
{intI,n;for(n=0,I=1900;I<=2000;I++){if(I%4==0&&I0!=0||I@0==0){printf(“%d”,I);n++;}
if(n%3==0)printf(“\n”);}}}
3、#include””
intfun(inta){intI;if(a==2)return1;I=2;while((a%I)!=0&&I<=sqrt((float)a))I++;if(a%I==0){printf(“%disnotaprime!”,a);
return0;}printf(“%disaprime!”,a);
return1;}main(){intx;printf(“\npleaseenteranumber:”);
scanf(“%d”,&x);
printf(“%d\n”,fun(x));}
4、#include""#defineN3structstudent{longstu_num;charsex;charname[15];intscore[4];floataverage;};main(){intI,j,index;floatsum,max;structstudentstuarr[N];for(I=0;I
printf("总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.1f\n",stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].average);}
一、单选题
1、能将高级语言源程序转换成目标程序的是(C)。
编译程序的基本功能是把源程序翻译成目标程序
A)调试程序
C)编译程序
2、设有以下定义:intx=10,y=3,z;则语句:printf(“%d”,z=(x%y,x/y));的结果是(D)。
A)1B)0C)4D)33、若已定义x和y为整型,则表达式:x=1,y=x+3/2的值是(B)。P56A)1C)
4、C语言中
(B)。P115A)不能使用
do-while语句构成循环。
B)do-while语句,当
while语句中的表达式值为零时结束循环。
C)do-while语句,当
while语句中的表达式值为非零时结束循环
D)do-while语句必须用
break语句才能退出循环
5、设有定义
inta=3;,则执行语句
a+=a-=a*a后,变量
a的值是(C).P64(a-a*a
a=3-3*3a=-6a=a+a
a=-6+(-6)
a=-12)
A)3B)C)-126、以下程序的输出结果是
(C)。p93#include<>
main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A)21B)1,-1C)2,1D)2-17、以下程序的输出结果是B)解释程序
(D)。
D)编辑程序
#include<>
#include<>
main()
{charstr[12]={"s","t","r","i","n","g"};
printf("%d\n",strlen(str));
}求字符串的长度,strlen()的参数必须是char*
A)12B)78、以下的B)
for2循环(A)。
D)
for(x=0,y=0;(y!=123)&&(x<4);x++);
A)执行4次
B)是无限循环
C)执行3次
D)循环次数不定
9、以下程序段的输出结果是(A)
chara[]=”Basic”;
char*p=a;
printf(“%s”,p);
A)BasicB)B10、以下说法中正确的是(C)。
A)C
语言程序总是从第一个定义的B)在C语言程序中,要调用的函数必须在
main()函数中定义
C)C语言程序总是从
main()函数开始执行
D)D)C语言程序中的main()函数必须放在程序的开始部分
11、下述对
C语言字符数组的描述中错误C)11asicC)
的是(C)
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
12、C语言中最简单的数据类型包括(B)
A)整型、实型、逻辑型
B)整型、实型、字符型
C)整型、字符型、逻辑型
D)整型、实型、逻辑型、字符型
13、阅读程序:
#include<>
#defineSUB(X,Y)(X)*Y
main()
{inta=3,b=4;
printf("%d\n",SUB(a++,b++));
}
程序的输出结果是
(B)
A)15B)12C)16D)214、为表示关系x≥y≥z应使用C语言表达式(A)
A)(x>=y)&&(y>=z)
B)(x>=y)and(y>=z)
C)
(x>=y>=z)
D)(x>=y)&(x>=y)
15、如下程序的运行结果是(A)
Main()
{intn=0;
while(n++<=1)
printf(“%3d”,n);
printf(“%3d\n”,n);
}
A)1B)3C)D)216、设有如下定义:
char*aa[2]={“abcd”,”ABCD”};
则以下说法中正确的是(D)
A)aa数组元素的值分别是”abcd”和”ABCD”
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符’a’和’A’的地址。
17、设有如下定义:
structsk
{inta;floatb;}data,*p;
若有
p=&data;,则对
data中的a域的正确引用是(p->a)(A)
A)(*p).a
B)(*p).
C)
D)p->
18、设有说明
int(*ptr)[M];其中的标识符
ptr是(C)
A)M个指向整形变量的指针
B)指向
M个整形变量的函数指针
C)一个指向具有
M个整形元素的一维数组的指针
D)具有
M个指针元素的一维指针数组,每个元素都只能指向整形变量
19、阅读程序,程序的输出结果为(C)。
intx=3;
do
{printf(“%3d”,x-=2);
}
while(!(--x));
A)1B)3C)1-220、设有10个数据进行冒泡排序,最少进
structst{intn;structst*next;};
staticstructsta[3]={{5,&a[1]},{7,&a[2]},{9,"\0"}},*p;
D)死循环
则表达式(B)的值是6。
A)p++->nB)++(p->n)p=&a[0];
C)(*p).n++行的比较次数为(C)。
A)B)1C)D)121、设有语句
chara=’\n’;,则变量
a(A)。
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法
22、若有定义:doublex,y;则表达式:x=1,y=x+3/2的值是(C)。
A)1C)
23、有以下程序:(注意:ch[0]在低字节,ch[1]在高字节。)
#include<>
unionpw{inti;charch[2];}a;
main()
{[0]=0;[1]=13;
printf("%d\n",;
}
程序的输出结果是(C)。
A)13B)1424、以下程序的输出结果是
(B)。
#include<>
main()
{charstr[12]={"a","b","c","d","f","g",’f’};
printf("%d\n",strlen(str));}
A)12B)725、设有以下语句:
26、对于程序段
floatf1(inta)
{intb;……}
main()
{intm,n;
m=f1(n);……
}
charf2(intx,inty)
{inta;……}
变量m,n的作用范围是(B)
(A)整个程序段B)2(B)main函数
D)
(C)main函数和f2函数
(D)mian函数和f1函数
27、若p1、p2都是指向整型的指针,p1已经指向数量x,要使p2也指向x,正确的是(A)
(A)p2=p1;
(B)p2=**p1;
(C)p2=&p1;
(D)p2=*p1;
28、算术运算符,C)3328赋值运算符和关系运算符D)32的运算优先级按从高到低依次为(B)
(A)算术运算、赋值运算、关系运算
(B)算术运算、关系运算、赋值运算
(C)关系运算、赋值运算、算术运算
(D)关系运算、算术运算、赋值运算
29、C语言中,C)11运算对象必须是整型数的运D)6算符是(A)
A)%
B)/C)
%printf("%d\n",d);和
/D)*
}
A)4B)6C)30、若数组定义为inta[10];则下列哪个表达式是错误的(A)
(A)*a
(B)a
(C)&a
(D)++a
31、表达式10%2值是(A)
(A)(B)1(C)5(D)
32、设有说明
int(*ptr)[M];其中的标识符
ptr是(C)
A)M个指向整形变量的指针
B)指向
M个整形变量的函数指针
C)一个指向具有
M个整形元素的一维数组的指针
D)具有
M个指针元素的一维指针数组,每个元素都只能指向整形变量
33、初始化一维数组a正确的语句是(C)
(A)inta[10]=(0,0,0,0,0);
(B)inta[10]={};
(C)inta[]={10};
(D)inta[10]={[10*1]};
34、下列程序执行后输出的结果是
(A)
intd=1;
fun(intp)
{int
d=5;
d+=p++;
printf("%d",d);
}
main()
{int
a=3;
fun(a);
d+=a++;
35、函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是(B)
(A)1(B)2(C)3(D)536、执行下列语句中,sum变量的值是(B)
intI,sum=0;
for(i=0;i<10;i++,sum+=i);
(A)45(B)55(C)(D)编译错误
37、以下c语言函数声明中,不正确的是(C)
(A)voidfun(intx,inty);
(B)fun(intx,inty);
(C)intfun(intx,y);
(D)char*fun(char*s);
38、以下关于typedef的叙述中错误的是
(A)
(A)用typedef可以增加新的类型
(B)用typedef可以定义各种类型名,但不能用来定义变量
(C)用typedef只是将已有的类型用新的标识符来代表
(D)使用typedef有利于程序的通用和移植
39、假设指针p已经指向某个整型变量x,则*p相当于(C)
(A)&x
(B)&p
(C)x
(D)*x
40、组成C语言程序的是(B)
(A)过程
(B)函数
(C)子程序
(D)主程序和子程序
41、不用第三个变量,将变量a和b的值进
行互换的操作是(B)
(A)a+=b;b-=a;a-=b;
(B)a+=b;b=a-b;a-=b;
(C)b-=a;a-=b;a-=b;
(D)b-=a;a=b-a;a+=b;
42、对do-while语言错误的说法是(C)
(A)可构成多重循环结构
(B)组,int(*p)[4]的意是表示p是一个指针变量,它指向包含4个整形元素的一维数组
数组指针(p28)。7、设有以下定义和语句:
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
则
*(*(p+1)+1)的值为_____40_________。
循环次数不可能为(C)循环次数可能为(D)先执行后判断
43、函数调用时,若实参是一个数组名,则向形参传递的是(C)
(A)数组的长度
(B)数组的每一个元素的地址
(C)数组的首地址(D)数组元素的值
二、填空题
1、下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值。
intadd(intx,inty,
int
z)
{
z
=x+y;}
2、以下定义和语句,则使指针
P指向值为
17的数组元素的表达式是P+3。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
3、设有定义:inti,j,k;则执行语句
for(i=0,j=10;i<=j;i++,j--)k=i+j;后,k的值为。4、以下两条
if语句可合并成一条
if语句为。if(a<=b)x=1;
else
y=2;
if(a>b)printf("y=%d\n",y);
else
printf("x=%d\n",x);
5、C语言程序的函数之间可通过函数名返回数据外,还可通过
函数指针返回
数据(P261)定义全局变量,传递地址运算
进行。
6、int
*p[4]的意义是
它表示指针数8、若有以下定义和语句:
struct{intx;chary;intz;}a,*b;
b=&a;
则
sizeof(a)的值是__
__,而
sizeof(b)的值是。9、以下程序的输出是______4___。
main()
{inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
printf("%d\n",(p+=3)[3]);
}
10、若有以下说明和定义语句,则变量
w在内存中所占的字节数是
34,union
aa
{floatx,y;charc[6];};
structst{unionaav;floatm[5];doubleave;}w;
11、以下函数的功能是:把两个整数指针所指的存储单元中的内容进行交换。请填空。
exchange(int*x,int*y)
{intt;
t=*y;*y=
*x
;*x=
t
;}
12、设有字符串STR,如下程序段用于确定其长度。
{intnum=0;
while(STR[num]!=’\0’)
num++;
return(num);
}
13、设单链表的结点含两个域:data是数据域,next是指针域,请填空。
structlink{chardata;structlinkif(a<=b){x=1;
printf(“x=%d\n”,x);}
else{y=2;
printf(“x=%d\n”,y)}
*next
}node;
14、下面程序的输出是。main()
{inta[]={1,2,3,4},*p=a,i;
for(i=0;i<4;i++)a[i]=*(++p);
printf(“%d”,a[2]);
}
15、如下程序的运行结果是
123。Main()
{intn=0;
while(n++<=1)
printf(“%3d”,n);
printf(“%3d\n”,n);
}
16、设for(k=0;k<10;k++)++k;则该循环共执行
次。
17、结构化程序由三种基本控制结构组成,它们分别是
顺序结构
、选择结构
和
循环结构。18、初始化值是的双精度变量a的定义形式为
doublea=。19、若有以下定义和语句:struct{intx;chary;floatz;}a,*b;b=&a;
则
sizeof(a)的值是__
__,而
sizeof(b)的值是。20、语句printf(“\%d%d”,123);
执行后将输出:
123285。21、如下程序段的输出是
BCD。staticchara[]=”ABCD”;
char*p=a;
printf(“%s”,++p);
22、如下函数用于求出一个2x4矩阵中的最
小值。
Max_value(arr)
Intarr[][4];
{intI,j,max=arr[0][0];
for(I=0;
I<2;I++)
for(j=0;
j<4;j++)
if(arr[I][j]>max)max=a[I][j];
return(max);
}
23、设单链表的结点含三个域:data1和data2是数据域,next是指针域,请填
空。structlink{intdata1;chardata2;
structlink*next
;}node;
24、字符串″ABCD\t\\\123″的长度是。25、表达式a=1,a+1,a++的值是。27、被调函数在执行结束时,这个函数中定义的静态储存
类型的变量不被释放。
28、设inta[2][3]={{2},{3}};则数组元素a[1][0]
的值为3。
29、下列程序
intx=3;
do{printf(″%d″,--x);}
while(!x);
循环执行的次数是1。30、若函数定义为
intdata()
{floatx=;
return(x);
}
则调用后函数返回的值是9。十四、判断题
1、函数可以分为两个部分:函数说明部分和函数体。(√)
2、函数的定义和函数的调用均可以嵌套。(×)
3、在C语言中,当我们定义了数组inta[5];则数组元素的下标从1到5。(×)
4、在C语言中,“A”占两个字节,而‘A’占一个字节。(√)
5、程序中定义的整型变量的初值都为0。(×)
6、若有说明intc;则while(c=getchar());是错误的C语句。(×)
7、C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。
(×)
8、在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。(√)
9、C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。(√)
10、使用continue和break语句,都可以使得C程序的执行直接从循环中跳出。(×)
《C语言程序设计》试题一
一、填空题
1、C语言中基本的数据类型有:
、、。
2、C语言中普通整型变量的类型说明符为,在内存中占
字节,有符号普通整型的数据范围是。3、整数-35在机内的补码表示为。4、执行下列语句inta=8;a+=a-=a*a;后,a的值是。5、有如下语句:charA[]={”Iamastudent”};
该字符串的长度是,A[3]=。6、符号”a”和’a’的区别是。7、所谓“指针”就是。“&”运算符的作用是。“*”运算符的作用是。8、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是。二、选择题
1、设整型变量a为5,使b不为2的表达式是(C)。
A.b=a/2B.b=6-(--a)
C.b=a%2D.b=a>3?2:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与(C)组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的ifC.在其之前未配对的最近的if
D.同一行上的if3、以下程序的输出结果是(D)。
intx=10,y=10;
printf(“%d
%d\n”,x--,--y);
A.101B.C.D.194、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址
为(B)。
A.P+i*2B.P+(i-1)*2C.P+(i-1)
D.P+i5、选出下列标识符中不是合法的标识符的是(D)。
A.hot_do
B.cat1C._pri
D.2ab6、以下程序的输出结果是(A)。
inta=5;floatx=3.14;a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
A.62.00000B.62.80000C.63.00000D.627、设有说明double(*p1)[N];其中标识符p1是(C)。
A.N个指向double型变量的指针。
B.指向N个double型变量的函数指针。
C.一个指向由N个double型元素组成的一维数组的指针。
D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。
8、在C程序中有如下语句:char*func(intx,inty);它是(C)。
A.对函数func的定义。
B.对函数func的调用。
C.对函数func的原型说明。
D.不合法的。
9、以下程序的输出结果是(D)。
charstr[15]=”hello!”;
printf(“%d\n”,strlen(str));
A.15B.14C.D.610、分析以下程序的输出结果是(A)。
main(){inta=5,b=-1,c;
c=adds(a,b);
printf(“%d”,c);
c=adds(a,b);
printf(“%d\n”,c);
}intadds(intx,inty){staticintm=0,n=3;
n*=++m;
m=n%x+y++;
return(m);
}
A.2,3B.2,2C.3,2D.2,411、下列描述中不正确的是(C)。
A.字符型数组中可能存放字符串。
B.可以对字符型数组进行整体输入、输出。
C.可以对整型数组进行整体输入、输出。
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
12、以下程序的输出结果是(C)。
#definef(x)
x*xmain(){inta=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}A.B.6C.36D.1813、设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是(D)。
A.1B.C.4D.314、定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则语句for(i=0;i<3;i++)
printf("%d
",x[i][2-i]);的输出结果是(C)。
A.15B.147C.35D.36915、以下对二维数组a进行正确初始化的是(B)
A.inta[2][3]={{1,2},{3,4},{5,6}};
B.inta[][3]={1,2,3,4,5,6};C.inta[2][]={1,2,3,4,5,6};
D.inta[2][]={{1,2},{3,4}};16、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是(C)。
intx;scanf("%d",&x);if(x++>5)
printf("%d",x);else
printf("%d\n",x--);A.7和5B.6和3C.7和4D.6和417、设有如下定义:char*aa[2]={"abcd","ABCD"};则以下说法中正确的是(D)。
A)aa数组成元素的值分别是"abcd"和ABCD"B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符"a"和"A"的地址
18、下列程序的输出结果是()。
char*p1="abcd",*p2="ABCD",str[50]="xyz";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);A.xyabcAB
B.abcABz
C.ABabcz
D.xycdBCD19、下列程序的输出结果是(C)。
inta[5]={2,4,6,8,10},*P,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);A.44B.2220、不能把字符串:Hello!赋给数组b的语句是(A.charb[10]={"H","e","l","l","o","!"};
C.charb[10];strcpy(b,"Hello!");D.charb[10]="Hello!";三、读程序题
1、floatf=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);
则程序的输出结果是。2、intx=6,y=7;
printf(“%d,”,x++);
printf(“%d\n”,++y);
程序的输出结果是。3、a=3;
a+=(a<1)?a:1;
printf(“%d”,a);
结果是。4、for(a=1,b=1;a<=100;a++){if(b>=20)
break;if(b%3==1)C.24D.46B)。
b="Hello!";
B.charb[10];
{b+=3;continue;}b-=5;
}程序的输出结果a的值为。5、inty=1,x,*p,a[]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);
程序的输出结果y的值是。四、程序填空题
1、从键盘上输入10个数,求其平均值。
main()
{inti;floatf,sum;for(i=1,sum=0.0;i<11;i++)
{
;
;
}printf(“average=%f\n”,sum/10);
}2、以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。
#include
main()
{FILE*fp;charc;fp=fopen(“myfile”,w)
;do{c=getchar();fputs(c,fp);}while(c!=EOF);
fclose(fp)}3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.main()
{floatx,amax,amin;scanf("%f",&x);amax=x;
amin=x;while(){if(x>amax)
amax=x;if()
amin=x;scanf("%f",&x);
}printf("\namax=%f\namin=%f\n",amax,amin);}五、编程题
1.三个整数a、b、c,由键盘输入,输出其中最大的一个数。
2.输出1900~2000年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)
3.请编一个函数intfun(inta),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。
4.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。
《C语言程序设计》试题一答案
一、填空题
(1)整型、实型、字符型。
(2)int,2,-32768~+3276(3)1111111111011101(4)-112(5)14,’m’
(6)”a”是字符串常量,而’a’是字符常量。
(7)存放地址值的变量或常量,或者答地址。
(8)取运算对象的地址。
取指针变量所指的内容。
二、选择题
1、C
2、C
3、D
4、B
6、A
7、C
8、C
9、D
11、C
12、C
13、D
14、C
16、C
17、D
18、D
19、C三、阅读程序题
(1)3.141593,3.1416,3.142(2)6,4(4)22(5)19四、程序填空题
1、scanf(“%f”,&f);
sum+=f;
2、fopen(“myfile”,w)
fclose(fp);
3、x>=0.x<=amin五、编程题
1、main()
{inta,b,c;printf(“请输入三个整数:”);
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
if(b
printf(“max=%d\n”,c);
else
printf(“max=%d\n”,b);
elseif(a
printf(“max=%d\n”,c);
else
printf(“max=%d\n”,a);
}2、#include”stdio.h”
main()
{intI,n;
5、D
10、A
15、B
20、B(3)(9)a=1,b=3,c=2for(n=0,I=1900;I<=2000;I++){if(I%4==0&&I%100!=0||I%400==0)
{printf(“%d
”,I);
n++;}if(n%3==0)
printf(“\n”);
}}
}、#include”stdio.h”
intfun(inta){intI;
if(a==2)
return1;
I=2;
while((a%I)!=0&&I<=sqrt((float)a))
I++;
if(a%I==0)
{printf(“%disnotaprime!”,a);
return0;
printf(“%disaprime!”,a);
return1;
}main(){intx;
printf(“\npleaseenteranumber:”);
scanf(“%d”,&x);
printf(“%d\n”,fun(x));
}4、#include"stdio.h"#defineN3structstudent{longstu_num;
charsex;
charname[15];
intscore[4];
floataverage;
};main(){intI,j,index;
floatsum,max;
structstudentstuarr[N];
for(I=0;I
{printf("pleaseinput%dstudentinformation:\n",I+1);
scanf("%ld,%c,%s",&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);3}
for(j=0;j<4;j++)
scanf("%d",&stuarr[I].score[j]);
}
for(I=0;I
{sum=0.0;
for(j=0;j<4;j++)
sum+=stuarr[I].score[j];
stuarr[I].average=sum/4.0;
}max=stuarr[0].average;index=0;for(I=1;I
if(stuarr[I].average>max)
{max=stuarr[I].average;
index=I;
}
printf("总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.1f\n",stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].average);
制度说明
制度是以执行力为保障的。“制度”之所以可以对个人行为起到约束的作用,是以有效的执行力为前提的,即有强制力保证其执行和实施,否则制度的约束力将无从实现,对人们的行为也将起不到任何的规范作用。只有通过执行的过程制度才成为现实的制度,就像是一把标尺,如果没有被用来划线、测量,它将无异于普通的木条或钢板,只能是可能性的标尺,而不是现实的标尺。制度亦并非单纯的规则条文,规则条文是死板的,静态的,而制度是对人们的行为发生作用的,动态的,而且是操作灵活,时常变化的。是执行力将规则条文由静态转变为了动态,赋予了其能动性,使其在执行中得以实现其约束作用,证明了自己的规范、调节能力,从而得以被人们遵守,才真正成为了制度。
数论基础
1、求两个数的最大公约数
原理:欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b)=gcd(b,amodb)
证明:a可以表示成a=kb+r,则r=amodb
假设d是a,b的一个公约数,则有
d|a,d|b,而r=a-kb,因此d|r
因此d是(b,amodb)的公约数
假设d是(b,amodb)的公约数,则
d|b,d|r,但是a=kb+r
因此d也是(a,b)的公约数
因此(a,b)和(b,amodb)的公约数是一样的,其最大公约数也必然相等,得证
参考代码:
intgcb(inta,intb){if(b==0)returna;
else
{
returngcb(b,a%b);
}2、求最小公倍数
intlcm(inta,intb){
intt,p;
if(b>a){t=a;a=b;b=t;}
p=a;
while((p%b)!=0)p=p+a;
returnp;
}
3、求素数
1)小范围内判断一个数是否为质数
intprimc(inta){
inti,p;
p=sqrt(a);
for(i=2;i<=p;i++)
if(a%i==0)break;
if(i<=p)return0;
else
return1;
}2)判断
longint范围内的数是否为素数(包含求50000以内的素数表)
intprc[50000],prim[50000];voidgetprimc(){
longinti,j;
for(i=2;i<50000;i++)
prc[i]=1;
prc[1]=0;
i=2;
while(i<50000)
{
if(prc[i]){
j=i*2;
while(j<50000){
prc[j]=0;
j=j+i;
}
}
i++;
}
j=0;
for(i=2;i<50000;i++)
{
if(prc[i]){j++;prim[j]=i;}
}
prim[0]=j;
/*for(i=1;i<=j;i++)
{
printf("%ld",prim[i]);
if(i%1000==0){printf("\n");getch();}
}
//7751519334603*/
}intprimc2(longinta){
longinti,p;
getprimc();
p=prim[0];
printf("pnum=%ld\n",p);
for(i=1;i
if(prim[i]==a)return1;
elseif((a%prim[i]==0)||(a
}
南华大学C语言试题
一、单项选择题(共20题,每小题2分,共40分)
1、用高级程序设计语言编写的程序,________。
A、计算机能直接执行
B、具有良好的可读性和可移植性
C、执行效率高,但可读性差
D、依赖于具体机器,可移植性差
2、若有定义语句:inta=10;doubleb=3.14;,则表达式‘a’+a+b值得类型是________。
A、char
B、int
C、double
D、float3、下面程序的输出是________?("□"表示一个空格)inta=3366;printf("|%-08d|",a);
A、|-0003366|
B、|00003366|
C、|3366□□□□|
D、输出格式非法
4、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为
#include<stdio.h>
main(){intv1=0,v2=0;charch;while((ch=getchar())!="#")switch(ch){case"a":case"h":default:v1++;case"o":v2++;}printf("%d,%d\n",v1,v2);}
A、2,B、5,C、5,5/12D、2,55、有以下程序:#include<stdio.h>
main(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是______。
A、7,4,2B、8,7,5,2C、9,7,6,4D、8,5,4,26、有如下函数定义;voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则变量x和y的值分别是________。
A、0和1B、1和1C、0和2D、1和27、设有intx=11;则表达式(x++*1/3)的值是________。
A、3B、4C、11/12D、128、设有如下定义:charaa[2][20]={"abcd","abcd"};则以下说法中错误的是__________.
A、aa是个二维数组,可以存放2个19个字符以下的字符串
B、aa是个二维数组,每行中分别存放了字符串"abcd"和"ABCD"
C、aa[0]可以看作是一维数组名
D、aa[0][0]可以看作是一维数组名
9、下列内容是异常的含义的是________。
A、程序编译或运行中发生的异常事件
B、程序的语法错误
C、程序编译错误
D、程序预先定义好的异常事件
10、字符串"\\\"abc\"\\"的长度是______。
A、11B、C、5D、311、以下对一维数组a的正确说明是________。
A、chara(10);
B、inta[];
C、intk=5,a[k];
D、chara[3]={‘a’,’b’,’c’};
12、以下程序的输出结果是________。
#include<stdio.h>
voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf(1%d%d,*p,*q);}
A、23/12B、34C、35D、4513、若有定义:"int*p,x=0,*p,p=&x;",则语句"printf("%d\n",*p);"的输出结果是________。
A、随机值
B、C、x的地址
D、P的地址
14、设函数定义如下:floatf1(floata,floatb){return(a+b);}若有floatx=1.1,y=2.2;,则以下语句中正确的函数调用是________。
A、printf("%f",f1();
B、printf("%f",f1(&x,);
C、printf("%f",f1(*x,*);
D、printf("%f",f1(x,);
15、有以下程序:#include<stdio.h>
main(){charcl,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1l列开始)123<回车>45678<回车>
则输出结果是________。
A、126B、1256C、127D、124516、执行循环语句后,i变量的值是________i=4;while(i--);printf("%d",i);
A、/12B、-1C、1D、有错误
17、下面定义结构变量的语句中错误的是________。
A、structstudent{intnum;charname[20];}s;
B、struct{intnum;charname[20];}s;
C、structstudent{intnum;charname[20];};structstudents;
D、structstudent{intnum;charname[20];};students;18、以下程序的输出结果是____________.#include<stdio.h>
fun(intx,inty,intz){z=x*x+y*y;}voidmain(){inta=31;fun(5,2,a);printf("%d",a);}
A、B、2C、31D、无定值
19、以下能正确定义二维数组的是______。
A、inta[][3]={1,2,3,4,5,6};
B、inta[][3]={2*3};
C、inta[][3]={};
/12D、inta[2][3]={{1},{2},{3,4}};20、变量a所占的内存字节数是______。
unionu{charst[4];inti;longl;};structA{intc;unionu;}a;
A、4B、5C、6D、8二、判断题(共10题,每小题2分,共20分)
()1、宏定义的作用域为从源程序开始起到源程序结束止。
()2、下列条件:-3-3&&x<3。()()3、定义在main函数后的任何函数都需在main中进行函数声明
()4、以下程序段中,当i大于10或者s大于20时,循环结束。
s=0;i=1;while(i<=10){s=s+i;if(s>20){break;}i++;}
/12()5、若有说明语句char*p="itismine"则p变量中存放的是整个字符串
()6、fseek函数一般用于二进制文件。
()7、指针变量可以指向数组,但不允许指向数组元素。
()8、main()函数也是c语言的关键字()()9、在c语言中,字符数组可以存放字符串?()()10、文本文件和二进制文件都可以用eof作为文件结束标志。()三、编程题(共3题,共40分)
1、请编一个函数intfun(inta),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。a的值由主函数从键盘读入。
(本题10分)
2、一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时,共经过了多少米,第10次反弹多高?
(本题14分)
3、有以下职工信息,使用结构体数组存储这些信息,从键盘输入5条记录,之后在屏幕上依次输出职工信息。
structstuff{intstuffID;//职工编号
floatbonus;//工资
};【输入形式】5条职工信息,分行输入,数据间空格隔开
【输出形式】分行输出5条职工信息和最低工资,每行数据均使用1个空格分隔
【输入样例】
10018540.5910026345.4510033500.6510044898.8610055345.80【输出样例】每行数据均使用一个空格分割,分五行输出
10018540.5/1210026345.4510033500.6510044898.8610055345.80minBonus=3500.65(本题16分)
/12参考答案
一、单项选择题
1、B【解析】用高级程序设计语言编写的程序具有良好的可读性和可移植性。
2、C3、C4、C5、D【解析】本题考查for循环语句。x=8,for循环条件为真,8%3=2,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值8,然后将x的值减1,此时x=7。然后执行continue语句结束本次循环。执行x--表示式,得x=6,for循环条件为真.6%3=0,则if条件表达式为假,执行第二个输出语句,先将x的值减1得x=5,然后输出x的值5。执行x--表示式,得x=4,for循环条件为真,4%3=1,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值4,然后将x的值减1,此时x=3。然后执行continue语句结束本次循环。执行x--表示式,得x=2,for循环条件为真,2%3=2,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值2,然后将x的值减1,此时x=1。执行x--表示式,得x=0,for循环条件为假,循环结束。
6、C【解析】本题考查的知识点是:函数参数的传递方式。C的默认参数传递方式是传值,即将实参值的副本传递(拷贝)给被调用函数的形参。如果需要传地址,可通过传递指针、引用或数组类型的参数来实现。传值时,对形参的改变不会影响到实参;而传地址,则会同时改变实参。本题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参x的值;而形参b是引用,即传址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果是0和2,应该选择C。
7、A【解析】当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x++*1/3)相当于(11*1/3),取整后为3。
8、D9、A【解析】异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,它会引起程序的中断,影响程序正常运行。
10、B11、D
/1212、C【解析】本题主要考查的是函数参数的传递。在C语言中,函数参数的传递是“传值”的,即复制一份实参给形参,形参和实参是完全没有关系的两个变量。所以在函数内部改变形参变量,并不会影响到函数外部的实参。要实现“传址”调用,必须通过指针。因为将实参指针内容复制给了形参指针后,两个指针变量虽然没有任何关系,但它们指向的却是同一个内存地址,当改变形参指针所指向的那个内存地址的内容时,实参指针所指向的内容也就同时被改变了,从而实现了“传址”调用。但是,并不是说只要函数参数是指针,那肯定就是“传址”调用。故选择C)。
13、B14、D15、D16、B17、D18、C19、A20、C【解析】结构件变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量a中成员c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。
二、判断题
1、错误
2、正确
3、错误
4、正确
5、错误
6、正确
7、错误
8、错误
9、正确
10、错误
三、编程题
1、#include"stdio.h"intfun(inta){inti;if(a==2)return1;
/12i=2;while((a%i)!=0&&i<=sqrt((float)a))i++;if(a%i==0){printf("%disnotaprime!",a);return0;}printf("%disaprime!",a);return1;}main(){intx;printf("\npleaseenteranumber:");scanf("%d",&x);printf("%d\n",fun(x));}2、#includevoidmain(){inti;floatsum=100.0,h=50;for(i=2;i<=10;i++){sum=sum+2*h;h=h/2;}printf("%f,%f\n",sum,h);}3、#include
structstuff{intstuffID;floatbonus;}a[5];
intmain()
11/12{inti;floatmin;for(i=0;i<5;i++)scanf("%d%f",&a[i].stuffID,&a[i].bonus);min=a[0].bonus;for(i=1;i<5;i++){
if(min>=a[i].bonus)min=a[i].bonus;}for(i=0;i<5;i++)printf("%d%.2f\n",a[i].stuffID,a[i].bonus);
printf("minBonus=%.2f",min);
}
12/12
c语言%i
%i的作用与%d一致,详情可见man3printf
d,i
Theintargumentisconvertedtosigneddecimalnotation.
Theprecision,
ifany,givestheminimumnumberofdigitsthatmustappear;
iftheconvertedvaluerequiresfewerdigits,itispaddedontheleftwithzeros.
Thedefaultprecisionis1.When0isprintedwithanexplicitpre‐cision0,theoutputisempty.
扩展阅读文章
推荐阅读文章
推荐内容
老骥秘书网 https://www.round-online.com
Copyright © 2002-2018 . 老骥秘书网 版权所有