




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机C语言期末(一)
(总分150分,考试时长120分钝)
一、单项选择题(每小题2分,共40分)
1、与二进制小数0.1等值的十六进制小数为o
A、0.1
B、0.2
C、0.4
D、0.8
2、假设int类型的变量x、y和z,它们的初始值分别为10、20和30,则布尔表
达式xV10IIy>10&&z<10的值为o
A、false
B、1
C、true
D、无法判断
3、有如下说明:inta[10]={0,1,2,3,4,5,6,7,8,9};则数值不为9的
表达式是.
A、a[10-l]
B、a[8]
C、a[9]-0
D、a[9]-a[0]
4、c语言对嵌套if语句的规定是:else总是与()。
A、其之前最近的述配对
B、其之前最近的且尚未配对的if配对
C、缩进位置相同的if配对
D、第一个if配对
5、下列c语言程序段中关于while循环体正确的说法是
inti=l;
while(b)
(
i++;
if(i>3)break;
}
A、三次循环
B、四次循环
C、五次循环
D、六次循环
6、若执行fopen函数时发生错误,则函数的返回值是()。
A、地址值
B、0
C、1
D、EOF
7、若变量已正确说明为float型,要通过语句scanf(〃%f%f%f〃,&a,&b,&c);给
a赋予10,0,b赋予22.0,u赋予33.0,下列不正确的输入形式是_______。
A、10V回车>22〈回车>33V回车》
B、10.0,22.0,33.0V回车)
C、10.0V回车>22.033.0V回车,
D、1022V回车>33V回车〉
8、有以下程序
main()
(
chars[]="\nl23\\";
printf(z,%d,%d\n”,strlen(s),sizeof(s));
)
执行后输出结果是O
A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6
9、在c语言中,数字029是一个()
A、八进制数
B、十进制数
C、十六进制数
D、非法数
10、设char*s二〃\ta\017bc〃;
则指针变量S指向的字符串所占的字节数是O
A、9
B、5
C、6
D、7
11、下列对C语言字符数组的描述中正确的是O
A、任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型
常量
B、一维数组的元素实质上就是一个变量,代表内存中的一个存储单元
C、如果要引用数组中的每一个元素,则直接使用该数组名称即使
D、以上都不对
12、有以下程序:
intf(intn)
(
if(n-1)return1;
elsereturnf(n-l)+l;
)
main()
(
inti,j=0;
for(i=l;i<3;i+-)j+=f(i);
printf(,,%d\n,\j;;
)
程序运行后的输出结果是________。
A、4
B、3
C、2
D、1
13、下列运算符中,不属于关系运算符的是o
A、+二
B、!=
C、<=
D、=
14、若有以下的定义:intt[3][2];
能正确表示t数组元素地址的表达式是。
A、&t[3][2]
B、t[3]
C、&i[l]
D、t[2]
15、执行下列语句后,a和b的值分别为()。
inta,b;
a=l+'a';
b=2+7%-4-'A';
A、-63,-64
B、98,-60
C、1,-60
D、79,78
16、设n为整型变量,则循环语句for(n=10;n>0;n-)的循环次数为
A、10
B、9
C、11
D、12
17、设有结构体的定义如下:
structdata
(
charcl;
charc2;
)
f
则sizeof(structdata)的值是。
A、2
B、3
C、4
D、5
18、下述程序的运行结果是o
#include<stdio.h>
voidfun(intx)
(
putchar('O'+(x%10));
fun(x/10);
)
main()
(
printf(''\n'');
fun(1234);
)
A、4321
B、321
C、21
D、1
19、设charstr[100];inti=5;则引用数组元素的错误形式的是_____
A、str[I+10]
B、*(srr+
C^(str+I-1)
D、*(&(str++)+
20、下面程序的输出是o
main()
(
structcmplx
(
intx;
inty;
)
cnum[2]={l,3,2,7};
printf(〃%d\n〃,cnum[0].y/cnum[0].x*cnum[l].x);
)
A、0
B、1
C、3
D、6
二、判断题(每小题2分,共20分)
()1、变量被定义后,它的作用域和寿命就被确定了,并且不可•改变。
()2、c语言中非标准输入输出设备指的是键盘和显示器。
()3、if语句不可以嵌套使用。
()4、while语句和do-while语句的一般形式分别如下,其主要区别
是:while语句先判断循环条件,只有条件满足才进入循环,如果一开始条件就不
满足,则循环一次都不执行。而do-while语句先执行循环体,后判断循环条
件,所以无论循环条件的值如何,至少会执行一次循环体。
()5、c语言约定''0'计入字符串的长度。
()6、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内
容:
^include<stdio.h>
或
ttincludc^stdio.h"。
()7、数组名作为函数参数,传送的是地址.
()8、函数一次可以返回两个以上的值。
()9、fseck函数一般用于文本文件。
()10、非静态全局变量的作用域可以扩展到构成该程序的其他源程序文件
中。
三、填空题(每小题4分,共20分)
1、全局的外部变量与函数体内定义的局部变量同名时,在函数体内,________变
量起作用。
2、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,的值为________,a[2][1]得到的值为。
3、下列程序段的运行结果是____o
main()
(
inti=l,s=0;
for(;;)
(
s=s+i;
i++;
if(i>4)break;
)
printf(级d\n〃,s);
)
4、将arr传参到子函数,接受处()内函数定义该怎么写?
5、有一输入函数scanf(〃姒l〃,k);
则不能使用float变量k得到正确数值的原因是和o
scanf语句的正确形式应该是:o
四、程序分析题(每小题5分,共20分)
1、下面程序的运行结果是o
#include<stdio.h>
main()
inty=2,a=l;
while(y-!=~1)
(
do
(
a+-y;
a++;
)
while(y-);
)
printf(飞d,%d〃,a,y);
)
2、下面函数func的功能是o
#include<math.h>
longfunc(longnum)
(
longk=l;
num=labs(num);
do
(
k*=num%10;
num/=10;
}
while(num);
returnk;
)
main()
(
longn;
printf(z,\npleaseenteranumber:;
scanf&n);
printf(z,\ntheproductofitsdigitsis%ld./z,func(n));
}
3、已知"floatx=0.5;inty=8;〃,则算术表达式"(int)(x+y/5)〃的值是
4、^include<stdio.h>
ttinclude<string.h>
voidmain()
(
chara[10]={'a','b','c','d',''0','f','g','h',''0'};
inti,j;
i=sizeof(a);
J-sLrlen(a);
printf("%d,%d\n”,i,j);
)
五、编程题(每小题分,共50分)
1、输入3个学生4门课的成绩{(60,70,65,75),
(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果
保留一位小数。(本题12分)
2、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印
出来。(本题18分)
3、若有以下银行卡信息:
structcard{
intid;〃银行卡号
intbonus;〃金额
};
请编写程序,从键盘输入5条银行卡记录,使用结构体数组存
储这些数据,并按金额升序排序,输出排序后的结果。
【输入形式】5条银行卡记录分行输入,每行数据用空格间隔
【输出形式】分5行输出数据,每行数据均使用空格间隔
【输入样例】
100120
100280
100350
100410
100640
【输出样例】
100410
100120
100640
100350
100280(本题20分)
参考答案
一、单项选择题
1、D
【解析】此题属于综合题。首先,把二进制小数0.1转化成十进制小数:
(0.1)2=1X2-l=(0.5)10;然后把十进制小数0.5转化成十六进制小数:
0.5X16=8,而整数部分为0,所以(0.1)2=(0.5)10=(0.8)16
2、A
3、B
4、B
5、A
6、B
7、B
【解析】在C语言中,当一次输入多个数据的时候,数据之间要用间隔符,合
法的间隔符可以是空格、制表符和回年符。逗号不是合法的间隔符。
8、C
【解析】本题在定义字符数组时没有定义数组长度,但是给数组赋了初值,这
时初值的个数即为数组的长度,故数组长度为6(包括'\0')。字符串的长度为
有效字符的个数5。因此printf语句中输出的结果为5,6。
9、D
10、C
11、B
【解析】本题考查了字符数组的基本概念。选项A,因为数组元素的下标只能
为整数,所以选项A错误。选项C,引用数组中的元素,可以通过数组名和下
标的方式来引用,只使用数组名不可以。
12、B
【解析】第一次调用f()函数,返回值为1,第二次调用f()函数,牵涉到函
数的递归调用,返回值为2。
13、A
【解析】+二是算术赋值运算符。
14、D
15、B
16、A
17、A
18、A
19、D
20、D
二、判断题
1、正确
2、错误
3、错误
4、正确
5、错误
6、正确
7、正确
8、错误
9、错误
10、正确
三、填空题
1、函数体内定义的局部
2、「0','6']
3、10
4、int*arr
5、未指明变量k的地址,格式控制符与变量类型不匹配,scanf(〃%f〃,&k);
O
四、程序分析题
1、1,-2
2、计算一个数的各位数字之积。
3、1
4、10,4
【解析】sizeof运算符判断数据类型所占内存字节大小,故i=10,该数组匕
10个字节的内存;strlen函数则判断字符串实际长度,不包含“\0”,该函数
遇到“\0”就会返回,故数组a的长度为4,即只计算了abed这四个字符。
五、编程题
1、^include
voidmain()
(
inta[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65)};
inii,j;
floataverage,sum=0.0;
printf("三个学生的总分和平均成绩依次为:\n〃);
for(i=0;i<3;i++)
sum=0.0;
for(j=0;j<4;j++)
sum=sum+a[i][j];
average=sum/4;
printf("%.2f,%.2f\n〃,sum,average);
}
)
2、^include<stdio.h>
intmain()
(
inti=5;
voidpalin(intn);
printf(〃请输入5个字符\40:\40〃);
palin(i);
printf(〃\n〃);
)
voidpalin(n)
intn;
(
charnext;
if(n<=l){
next=getchar();
printf(〃相反顺序输出结果\40:\40〃);
putchar(next);
1else{
next=getchar();
palin(n-1);
putchar(next);
}
)
3、Sinclude<stdio.h>
ttinclude<stcllib.h>
structcard
(
intid;〃银行卡号
intbonus;〃金额
}a[5],tamp;
intmain()
inti,j;
for(i=0;i<5;i++)
scanf(〃%d%d”,&a[i].id,&a[i].bonus);
for(i=1;i<5;i++)
(
for(j=0;j<5-i;j++)
(
if(a[j].bonus>a[j+l].bonus)
(
tamp=a[j];
a[j]=a[j+l];
a[j-l]=tamp;
)
for(j=0;j<5;j++)
printf(z,%d%d\n,\a[j].id,a[j].bonus);
)
}
计算机C语言期末(二)
(总分150分,考试时长120分钟)
一、单项选择题(每小题2分,共40分)
1、一个字长为8位的无符号二进制整数能表示的十进制数值范围是______
A、0-256
B、0-255
C、1-256
D、1-255
2、下列数据中,为字符串常量的是()。
A、A
B、“house”
C、Howdoyoudo.
D、$abc
3、设有条件表达式::EXP)i++;j-,则以下表达式中(EXP)完全等价的是
A、(EXP=0)
B、(EXP!=0)
C、(EXP=1)
D、(EXP!=1)
4、若inti=10;
执行下列程序后,变量i的正确结果是
switch(i)
(
case0:i+=l;
case10:i+=l;
case11:i+=l;
default:i+=l;
)
A、10
B、11
C、12
D、13
5、若有以下程序
#include<stdio.h>
main(){
inta=6,b=0,c=0;
for(;a;){
b+二a;
a-=++c;
)
printf(〃%d,%d,%d\n,/,a,b,c);
)
则程序的输出结果是______。
A、0,14,3
B、1,14,3
C、0,18,3
D、0,14,6
6、以下叙述中正确的是o
A、在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地
表示
B、C程序由主函数组成
C、C程序由若干函数组成
D、C程序中只允许包含一个函数
7、假设i和j是整型变量,以下语句()的功能是在屏幕上显示形如i*j二
i*j的一句乘法口诀。例如,当i=2,j=3时,显示2*3=6。
A^printf(〃d*%d=%d\n”,i,j,i*j);
B、printf(z,%d*刎=%d\n〃,i,j,i*j);
C、printf(z,%d*%d=%d\n,z,i,j):
D、printf(〃%d=%d*%d\n〃,i,j,i*j);
8、下列数组说明中,正确的是o
A、intarray[][4];
B、intarray[][];
C、intarray[][][5];
D、intarray[3][];
9、下列各进制的整数中,值最大的一个是o
A、T六进制数78
B、十进制数125
C、八进制数202
D、二进制数10010110
10、在下列各项中,运算级别最低的为。
A、算术运算符
B、关系运算符
C、逻辑运算符
D、圆括号()
11>下列描述中,正确的一条是。
A、关系表达式的值是一个逻辑值,即“真”或“假”,可以赋给一个逻辑
变量
B、在C语言中,判断一个量是否为:真”时,以0代表“假”,以1代表
“真”.
C、设a=3、b=4、c=5,则表达式!(x;&&(y二&&0的值为0
D、一个数组的各人数组元素可属于不同的数据类型
12、关于c语言的符号常量,以下叙述中正确的是o
A、符号常量的符号名是标识符,但必须大写
B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
C、符号常量在整人程序中其值不能再被重新定义
D、符号常量的符号名必须是常量
13、char型常量在内存中存放的是_______o
A、二进制代码值
B、十进制代码值
C、十六进制代码值
D、ASCII代码值
14、以下叙述正确的是o
A、C程序总是以main。作为程序执行的起始行
B、mainO函数若天带参数,其后面的一对圆括号可省略
C、函数体内的定义语句和可执行语句允许任意交替出现
D、C语言中的语句之间必须用分号作为分隔符
15、设有如下程序段:
union
(
inti;
charc;
}a;
a.i=12;
a.c-'a';
printf(z/\n%d/z,a.i);
这段程序执行后,屏幕输出的结果是..............................()
A、12
B、97
C、65
D、A
16、下列for循环的次数为—
for(inti=0,x=0;!x&&iV=5;i++)
A、5
B、6
C、1
D、无限
17、下面结构体的定义语句中,错误的是—
A、structord{
intx;inty;intz;};structorda;
B、structord(
intx;inty;intz;}structorda;
C^structord(
intx;inty;intz;}n;
Dsstruct(
intx;inty;intz;}a;
18、以下程序段的输出结果是()。
char*alp□={"ABC",'"DEF〃,〃GHI〃};intj;puts(alp[l]);
A、A
B、B
C、D
D、DEF
19、下列关于c语言字符数组描述正确的是。
A、字符数组可以存放字符串
B、字符数组的下标是从0开始的
C、字符数组不能输出字符串
D、字符数组可以没有‘'0'
20、在c语言中,系统为一个结构体变量分配的内存是
A、各成员所需内存量的总和
B、结构体第一个成员所需的内存量
C、成员中占内存量最大者所需的容量的整数倍
D、结构体中最后一个成员所需的内存量
二、判断题(每小题2分,共20分)
()1、当函数的实参与形参同名时,它们将共占内存单元。()
()2、一个c程序要经过编译链接才能执行。
()3、switch语句中的default必须出现在所有case之后。
()4、循环语句中如果包含若干条语句,则必须用大括号括起来
()5、比较两个字符串是否相等不能通过条件运算符〃二二〃。
()6、可以在一个函数中定义另一个函数。
()7、在用数组名作为函数实参时,传递的是数组的起始地址,所以就不允许
使用形参数组的形式
()8、c语言函数返回类型的默认定义类型是
void。
()9、函数形参的存储单元是动态分配的。
()10、若不希望其他源文件引用本文件中定义的全局变量,可在定义全局变
量时加上sbaLico
三、填空题(每小题4分,共20分)
1、循环语句for(i=0;iV3;i++)printf(〃*");
表达式i=0执行【1】次,表达式i++执行[2]________次。
2、有intx=3,y=-4,z=5;
则表达式(x&&y)=(x|z)的值为________。
3、结构化设计中的三种基本结构是顺序,选择,_____o
4、若变量a,b已定义为int类型并赋值21和55,要求用printf函数以
a=21,b=55的形式输出,请写出完整的的输出语句。
5、c语言中对文件读写之前必须先打开文件,文件的打开是通过调用_______
函数来实现。
四、程序分析题(每小题5分,共20分)
1、有以下程序
ttinclude<string.h>
main()
chara□={'a','b','c','d','e','f',''0');
intj;
j=strlen(a);
printf("%d\n",j);
)
程序运行后的输出结果是O
2、以下程序的输出结果是_____________。
main()
(
inta;
printf("%d\n〃,(a=3*4,a*5,a+5));
}
3、下面程序段的运行结果是o
i=l:
a=0;
s=l;
do
(
a=a+s*i;
s=-s;
i++;
)
while(i<=10);
printf(〃a=%d”,a);
4、程序运行结果是o
voidswap(inta[2])
(
intt;
l-a[0];
a[0]=a[l];
}
voidmain0
(
intx[2]={5,8};
swap(x);
printf(z,x[O]=%d,x[l]=%d\n,,,x[0],x[l]);
}
五、编程题(每小题分,共50分)
1、编写程序:计算1到100之间的奇数之和及偶数之和(本题12分)
2、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该
字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:产2345()(本题18分)
3、计算n名学生成绩的平均分并通过函数返回。要求:
结构体代码如下:
structStudentScore(
doublescore;
);(本题20分)
参考答案
一、单项选择题
1、B
【解析】无符号数,即自然数。8位无符号的二进制数的范围是00000000〜
11111111,转换成十进制就是0〜255。
2、B
3、B
【解析】条件表达式的形式为:“表达式1表达式2:表达式3”o其含义为:
当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值
就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的
值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达
式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句卜
这等同于条件表达式“(EXP!=0)i++:i++;”
4、D
5、A
【解析】循环执行3次,使a为0,循环结束,最终abc分别为0143,所
以选择A。
6、C
7、B
8、A
9、D
【解析】不同进制数之间的比较,必须统一转换成同一进制的数。一般,转换
成十进制数比较方便。十六进制数78转换成十进制数是120;二进制数
10010110转换成十进制数是150;八进制数202转换成十进制数是130o
10、C
【解析】如果在同一个表达式中出现不同的运算符,其优先顺序为:先执行算
术运算、字符串运算和日期时间运算,其次执行关系运算,最后执行逻辑运
算。如果在表达式中包含圆括号,首先应该计算出圆括号中的结果,其优先级
最高。
11、D
12、B
【解析】在C语言中可以用一个标识符来代表一个常量称为符号常量。这个标
识符必须在程序中进行特别的指定并符合标识符的命名规则。用作符号常量的
标识符通常采用大写字母表示在主函数中其值不能再被定义。所以选择B选
项。
13、D
14、A
15、C
16、B
17、B
18、D
19、C
20、C
二、判断题
1、错误
2、正确
3、错误
4、正确
5、正确
6、错误
7、错误
8、错误
9、正确
10、正确
三、填空题
1、[1]1[2]3
2、1
3、循环
4、['printf("a=%d,b=%d”,a,b)]
5、fopen#fopen()Sfopen()
四、程序分析题
1、6
2、17
3、a=-5
4、x[0]=8,x[l]=5
五、编程题
1、^include<stdio.h>
main()
(
inta,b,c,i;
a=0;
c=0;
for(i=0;i<=100:i+=2)
a+=i;
b=i+l;
c+=b;
}
printf(z/sumofevensis%d\n〃,a);
printf(''sumofoddsis%d\n,z,c-101);
)
2、^include“stdio.h〃
main()
(
chars[10];
inti;
longintn=0;
scanf(〃/s〃,s);
for(i=0;i<strlen(s);i++)
n=n*10+s[i]-,O';
printfCn=%ld\n",n);
}
3、doubleFun(structStudcntScore*a,intn){
inti;
doublesum=0.0;
for(i=0;i<n;i~+)
(
sum十二aFil.score:
}
returnsum/n;
)
intmain()
(
structStudentScorea[100];
intn;〃学生数量
inii;
printf(〃请输入学生数量:〃);
scanf(〃%d〃,&n);
for(i=0;i<n;i-+)
(
printf(〃请输入第%d个学生的成绩:〃,i+1);
scanf&a[i].score);
)
printf("机f〃,Fun(a,n));
return0;
}
请输入学生数量:3
请输入第1个学生的成绩:90
请输入第2个学生的成绩:100.0
请输入第3个学生的成绩:80
90.000000
计算机C语言期末(三)
(总分150分,考试时长120分钟)
一、单项选择题(每小题2分,共40分)
1、程序运行输出了错误的结果,可以排除下列哪一个因素。
A、算法错误
B、运行时输入数据错误
C、未通过编译
D、系统资源配置穴当
2、下列标识符,不合法的是o
A、abc
B、_d
C、123
D、el
3、已知i、j、k为int型变量,若要从键盘输入2、3、4<cr>,使i、j、k
的值分别为2、3、4,下列正确的输入语句是o
A、scanf(〃%3d,%o3d,%3d〃,&i,&j,%k);
B、scanf(〃%d,%d,%d〃,&i,8Lj,&k);
C、scanf(〃%d%d%d〃,&i,&j,&k);
D、scanfCi=%d,j=%d,k=%d〃,&i,&j,&k);
4、当从键盘上输入字符〃12134211〃下面程序的输出结果是o
main()
(
chars;
intvl=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k-+)
(
scanf&s);
switch(s)
(
default:v4++;
case'1':vl++;
case'3':v3++;
case'2':v2++;
printf(z,vl=%d,v2=%d,v3=%d,v4=%d\n〃,vl,v2,v3,v4);
}
A、vl=4,v2=2,v3=l,v4=l
B>vl=4,v2=9,v3=3,v4=l
C、vl=5,v2=8,v3=6,v4=l
D、vl=8,v2=8,v3=8,v4=8
5、在C语言中,为了结束由while语句构成的循环,while后一对圆括号中
表达式的值应该为
A、0
B、1
C、TRUE
D、非0
6、在c语言中,不允许有常量的数据类型是o
A、整型
B、结构型
C、字符型
D、字符串
7、与十进制数96等值的二进制是o
A、01100000
B、10010110
C、01100001
D、01100011
8、下列选项中,能够正确定义数组的语句是。
A、intnum[0..2008];
intnum[];
C、intN=2008;
D、SdefineN2008
intnum[N];intnum[N]
9、以下标识符中,不能作为合法的c用户定义标识符的是o
A、For
B、pririLf
C、WORD
D、sizeof
10、下列选项中,值为1的表达式是_______o
A、1-'0'
B、
C、'1'-0
D、'\0','0'
11>下面程序输出数组中的最大值,由S指针指向该元素.
voidmain()
(
inta[10]=(6,7,2,9,1,10,5,8,4,3,},*p,xs;
for(p=a,s=a;p-a<10;p++)
if()s=p;
printf("themax:%d”,*s):
)
则在if语句中的判断表达式应该是o
A、p>s
B、*p>*s
C^a[p]>a[s]
D、p-a>p-s
12、下列程序的输出结果是________。
intfl(intx,inty)
(
returnx>y?x:y:
)
intf2(intx,inty)
(
returnx>y?y:x:
}
main()
(
inta=4,b=3,c=5,d=2,e,f,g;
e=f2(fl(a,b),fl:c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n,z,e,f,g);
)
A、4,3,7
B、3,4,7
C、5,2,7
D、2,5,7
13>有输入语句:scanf("a=%d,b=%d,c=%d〃,&a,&b,&c);
为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是
________。(注:-表示空格)
A、132V回车,
B、1,3,2V回车〉
C、a=l1—1b=3LJc=2V回车〉
D、a=l,b=3,c=2V回车〉
14、下列一维数组定义正确的是o
Axx=5;intnum[x];
B、constihtx=5;floatnum[x];
C、constfloatx=5;intnum[x];
D、constinLx;x-5;iriLnum[x];
15、有以下程序
voidfun(char**D)
(
++P:
printf("%s”,*p);
)
mainO
(
char*a[]={MMornin9,>,AfternoonEvening",Nightw);
fun(a):
)
程序的运行结果是_______。
A、Afternoon
B、fternoon
C、Morning
D、orning
16、有以下程序
#include<stdio.h>
intmain()
(
intm[][3]={1,4,7,2,5,8,3,6,9};
inti,j,k=2;
ror(i-0;i<3;i+-)prinLrC%2d\m[k][i]);
)
执行后输出结果是o
A、456
B、258
C、369
D、789
17、有以下程序
ttinclude<stdlib.h>
structnode
(
intnum;
structnode*next;
};
main()
(
structnode*p,xq,*「;
intsum=0;
p=(structnodex)malloc(sizeof(structnode));
q=(structnodex)malloc(sizeof(structnode));
r=(structnodemalloc(sizeof(structnode));
p->num=l;
q->num=2;
r->num=3;
p->ncxt=q;
q->next=r;
r->next=null;
sum+=q->next->num;
sum+=p->num;
printfsum):
)
执行后的输出结果是。
A、3
B、4
C、5
D、6
18、有以下程序:
main()
(
intx=102,y=012:
printf(〃%2d,%2d\n〃,x,y);
)
执行后输出结果是O
A、10,01
B、02,12
C、102,10
D、02,10
19、下面关于数组的初始化正确的是o
A、charstr[]={'a','b','c'}
B、charstr[2]={'a','b','c'}
C、charstr[2][3]={{,a,,5b),},{'c','d'},{'e','f'}}
D、charstr()='b','c'}
20、有以下程序
#include<stdio.h>
main()
(
structstu
(
charname[9];
charsex;
doublescore[2];
)
structstua={"zhao",'m,85.0,90.0),b={"qian",'f',95.0,92.0};
b二a;
printf(/z%s,%c,%2.Of,%2.0f\n〃,b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是_____o
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
二、判断题(每小题2分,共20分)
()1、c语言中,当:nt型与double型数据进行算术运算时,数据类型由
double型向int型转换。
()2、表达式0195是一个八进制整数。
()3、switch语句中的case和default的出现次序是任意的。
()4、while语句的一般形式如下,其中的循环体语句只能是一条语句。
while(表达式)循环体语句
()5、chars="CLanguage";表示s是一个指向字符串的指针变量,把字
符串的首地址赋予s
()6、在一个函数中调用另一个被调函数时,如果被调用函数在主调函数之前
定义,可以不进行说明。
()7、用字符串常量给数组赋初值时,如果提供的字符个数小于数组的长度,
则在最后一个字符后加'\0'作为字符串结束标志。
()8、在c语言程序设计中函数是允许嵌套定义的。
()9、函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针
变量赋值
()10、c语言程序是从源文件的第一条语句开始执行的
三、填空题(每小题4分,共20分)
1、数学表达式lOOVa或者aV-20改写为c语言表达式是。注:表达
式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
2、C语言提供的三种逻辑运算符是o
3、c语言三个循环语句分别while语句语句和语句。
4、以下函数值的类型是[1]0
fun(floatx)
(
floaty;
y=3*x-4;
returny;
)
5、全局变量又称外部变量,是在函数定义的变量。
四、程序分析题(每小题5分,共20分)
1、Sinclude<stdio.h>
voidmain()
(
inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i+-)s+=a[i][i]+a[i][3-i-l];
printf("%d\n〃,s);
)
2、有一下程序
#include<stdio.h>
main()
(
intf,fl,f2,i;
fl=0;
f2=l;
printf(,z%d%d〃,门,f2);
for(i=3;i<=5;i-+)
(
f=fl+f2;
printf(级d〃,f);
fl=f2;
f2=f;
}
printf(〃\n〃);
}
程序运行后的输出结果是O
3、以下程序可求出所有的水仙花数。(水仙花数是三位正数,其各位数字的立
方和等于该正数,如:407=4*4*4+0*0*0+7*7*7)main()
(
intx,y,z,a[8],n,i=0;
printf(z/thespecialnumbersare:\n");
for([1]________;ni++)
x=m/100;
y=[2]
z=m%10;
if(m=x*x*x+y*y*y+z*z*z)
(
[3];
i++;
}
}
for(x-0;x<i;x-+)prinIf(%6d,z,a[x]);
}
4、下面程序的功能是求出用数字0至9可以组成多少个不重复的三位偶数。
请分析程序填空。
#include<stdio.h>
main()
(
inin-0,i,j,k;
for(i=l;i<=9;i-+)
for(k=0;k<=8;[1]________)
if(k!=i)for(j=0:j<=9;j++)
if([2])n++;
printf(〃n=%d\rT,n);
}
五、编程题(每小题分,共50分)
1、打印楼梯,同时在楼梯上方打印两个笑脸。(本题12分)
2、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小
写字母的个数及其它字符的个数,以*作为字符输入结束标志。(本题18分)
3、输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按
照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入格式:
输入第一行给出正整数n(<10)o随后n行,每行按照“姓名生日电话号
码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组
成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位
的数字及+、-组成的字符串。
输出格式:
按照年龄从大到小输出朋友的信息,格式同输出。
输入样例:
3
zhang1985040313912345678
wang19821020+86/p>
qian1984061913609876543
输出样例:
wang19821020+86/p>
qian1984061913609876543
zhang1985040313912345678(本题20分)
参考答案
一、单项选择题
1、C
2、C
【解析】123不是合法的标识符,标识符不能以数字开头。
3、B
4、C
5、A
6、B
7、A
8、D
9、D
10、B
【解析】在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要
将字符转换为对应的ASCII码值再参与整数运算。字符'1'对应的ASCTT码值是
49,字符'0'对应的ASCII码值是48,字符'\0'是字符串结束标识符NULL,其
对应的ASCII码值是0。
11、B
12、A
【解析】根据函数intfl(intx,inty){
returnx>yx:y;}和intf2(intx,inty){
returnx)>y:x;}的定义可知,如果x>y成立,则函数fl返回x的值,函
数f2返回y的值。所以fl(a,b)=4,fl(c,d)=5,f2(a,b)=3,f2(c,d)=2,故
e=f2(4,5),f二门⑶2)=3,g=4+3+5+2-4-3二7。
13、D
14、B
【解析】数组的卜标不能是变量,不能为非整数,定义为常量的标识符不能再
用来赋值,只能在定义时初始化。
15、A
16、C
【解析】变量k的初值为2,循环执行了3次,分别输出口[2][0]、成2][1]和
m[2][2],其值分别为3,6,9。
17、B
18、C
19、A
【解析】本题考查的是字符数组的初始化。选项B)中用3个元素初始化大小为
2的数组,越界了;选项C)中应该是2行3列的数组,题中使用3行2列初始
化;选项D)中数组合后应用方括号。
20、D
二、判断题
1、错误
2、错误
3、正确
4、正确
5、正确
6、正确
7、正确
8、错误
9、正确
10、错误
三、填空题
1、100<alla<-20#a<-2011100<a#a>10011a<-20#a<-2011a>1008100<
all-20>a#-20>alll00<a#a>10011-20>a#-20>alla>100
2、&,//,!
3、['(10,力"2语句‘,'1'0『语句’]
4、int
5、夕卜部#夕卜
四、程序分析题
1、30:该程序的作用是将数组的对角线上的数字相加。
2、「01123']
3、【1】m=100;
m<1000[2]m/10%10或m%100/10[3]a[i]=m
4、【1】k+=2[2]i!=j&&k!=j
五、编程题
1、程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的
个数。
程序源代码:
#include"stdio.h"
main()
inti,j;
printf(〃\l\l\n〃);/*输出两个笑脸*/
for(i=l;i<ll;i+-)
for(j=l;j<=i;j++)
printfC%c%cz,,219,219);
printf(〃\n");
)
2、voidmain()
(
inti,x,m=0,n=0,k=0,j=0;
chara[20];
printf(〃请输入字符串:〃);
gets(a);
x=strlen(a);
for(i=0;i='O'&&a[i"二'9')
m++;
elseif(a[i]>=,A*&&a[i]<=,7!)
n++;
elseif(a[i]>=,a&&a[i]<=,z)
k++;
else
j++;
}
printf(*%d,%d,%d,%d\n,z,m,n,k,j):
)
3、Sinclude<stdio.h>
structmessage
(
charnamel[30];
charname2[30];
charname3[30];
doubleprice;
};
structmessaged[10];
intmain()
intN;
scanf(〃%d”,&N);
inti,j;
for(i=0;i<N;i++)
{
scanf(,z%s%s%s*,d[i].namel,d[i].nane2,d[i].name3);
scanf&d[i].price);
)
intt,r;
doublemax,min;
niax-iiiin-d[O].price;
for(j=0;j<N;j++)
(
if(min>d[j].price)
(
min=d[j].price;
t=j;}
if(max<d[j].price)
(
max=d[j].price;
r二j;
)
}
printf(,z%.21f,%s%s%s\nz,,max,d[r].namel,d[r].name2,d[r].name3);
printf(/z%.21f,%s%s%s\nz\min,d[t].namel,d[t].name2,d[t].name3);
return0;
}
计算机C语言期末(四)
(总分150分,考试时长120分钟)
一、单项选择题(每小题2分,共40分)
1、若ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97),
则以下程序段的执行结果是och=,a;
k=12;
printf("%x,%o,ch,ch,k);
printfCk=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为零值或不定值
C、61,141,k=%d
D、61,141,k=%12
2、设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是。
A、12
B、18
C、16
D、21
3、若有以下数组说明,则i=10;a[a[i]]元素数值是—o
inta[12]={l,4,7,10,2,5,8,11,3,6,9,12);
A、10
B、9
C、6
D、5
4、与〃y=(x>0?l:xVO?T:0)〃;的功能相同的if语句是。
A、if(x>0)y=l;
B、if(x)
elseif(x>0)y=l;
elsey=0;elseif(x%0)y=-l;
elsey=0;
C、y=-l
y=0;
if(x)if(x>=0)
if(x>0)y=l;if(xi>=0)y=l;
elseif(x-0)y=0;elsey=-l;
elsey=-l;
5、下列程序的运行结果是o
voidmain()
(
ints=0,k;
for(k=7;k>l;k-)
(
switch(k)
(
case1:case4:case7:s++:break;
case2:case3:case6:break;
case0:case5:s+=2:break;
}
}
printf("s=%d",s);
)
A^s=3
B、s=4
C、s=5
D、无输出结果
6、以下程序中函数scmp的功能是返回形参指针si和s2所指字符串中较小字
符串的首地址
ttinclude<stdio.h>
#include〈string.h>
char*scmp(char*sl,char*s2)
(
if(strcmp(sl,s2;<0)return(si);
elsereturn(s2):
)
main()
(
inii;
charstring[20],str[3][20];
for(i=0;i<3;i+~)gets(str[i]);
st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 互联网医疗平台用户体验优化-全面剖析
- 民族传统手工艺与现代生活结合研究-全面剖析
- 微信群营销策略-全面剖析
- 实验教学创新方法-全面剖析
- 数字化油田技术应用-全面剖析
- 案例解析-建筑咨询品牌成功策略-全面剖析
- 屏气运动康复策略-全面剖析
- 2025年成人高考《语文》古诗词鉴赏专项题库-古诗词与哲学思考试题
- 2025-2030全球及中国爆破片固定器行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球及中国海上帆船夹克行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- CHT 8023-2011 机载激光雷达数据处理技术规范(正式版)
- 2024年演出经纪人考试必背1000题附答案(黄金题型)
- 《人类起源的演化过程》阅读测试题及答案
- JB-T 8532-2023 脉冲喷吹类袋式除尘器
- 第11课《送东阳马生序》(课件)九年级语文下册
- (正式版)SHT 3045-2024 石油化工管式炉热效率设计计算方法
- 2024年中储粮集团招聘笔试参考题库附带答案详解
- 基于大概念的高中历史大单元教学
- (2024年)保安培训图文课件
- 《养老护理员》-课件:协助卧床老年人使用便器排便
- 统编版语文八年级下册全册大单元整体教学设计表格式教案
评论
0/150
提交评论