一、选择题(每题
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.篇三:!(a%i)
篇四:!(a%i)
篇五:!(a%i)
篇六:!(a%i)
扩展阅读文章
推荐阅读文章
推荐内容
老骥秘书网 https://www.round-online.com
Copyright © 2002-2018 . 老骥秘书网 版权所有