printf(\"%d,%d\\n\ }A、2,1B、2,2C、1,1D、2 1
( )4、下列程序的运行结果是________。
#include<stdio.h> void sub(int*s,int*y) {
static int m=4: *y=s[m]; m--;}
void main() {
int a[]={1,2,3,4,5},k,x; printf(\"\\n\"); for(k=0;k<=4;k++) {
sub(a,&x);
printf(\"%d,\ }}
A、5,4,3,2,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,
( )5、以下程序的输出结果是________。
main() {
char ch[3][4]= { \"123\ int i;
for(i==-0; i<3; i++) p[i]=ch[i];
for(i=0; i<3; i++) printf(\"%s\}
A、123456780B、123 456 780C、12345678D、147
( )6、下列说法中不正确的是________。
A、switch语句功能可以由if-else语句实现
B、若用于比较的数据类型为double,则不能用switch语句来实现
第2/11页
C、if-else语句的执行效率总是比switch语句高
D、case子句可以有多个语句,并且不需要用大括号””括起来
( )7、以下能正确定义二维数组的是______。
A、int a[][3]={1,2,3,4,5,6};B、int a[][3]={2*3};C、int a[][3]={};
D、int a[2][3]={{1},{2},{3,4}};
( )8、在标准ascⅱ编码表中,数字码、小写英文字母和大写英文字母的前后次序是________。
A、数字、小写英文字母、大写英文亨母B、小写英文字母、大写英文字母、数字C、数字、大写英文字母、小写英文字母D、大写英文字母、小写英文字母、数字
( )9、下列关于boolean类型的叙述中,正确的是________。
A、可以将boolean类型的数值转换为int类型的数值B、可以将boolean类型的数值转换为字符串
C、可以将boolean类型的数值转换为char类型的数值D、不能将boolean类型的数值转换为其他基本数据类型
( )10、有以下程序:
#include<stdio.h> union pw {
int i;
char ch[2];}a;
main() {
a.ch[0]=13; a.ch[1]=0;
printf(\"%d\\n\}
程序的输出结果是________。
A、13B、14C、208D、209
( )11、在下列关于c语言的局部变量和全局变量所采取的存储类别的叙述中,错误的一条是
________。
A、对于动态局部变量来说,一旦离开函数,其值就消失B、对于静态局部变量来说,离开函数,其值仍保留C、对于寄存器变量来说,一旦离开函数,其值就消失D、静态外部变量既可在本文件中引用,又可在其他文件中引用
( )12、按照标识符的要求,下列选项中,( )符号不能组成标识符。
第3/11页
A、连接符B、下划线C、大小写字母D、数字字符
( )13、若已定义x为int型变量,说明指针变量p的正确语句是________。
A、int p=&x;B、int * p=x;C、int * p=&x;D、* p=* x;
( )14、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
A、可以用TT定义结构体变量B、TT是struct类型的变量C、可以用CIN定义结构体变量D、CIN是struct TT类型的变量
( )15、有下列程序:
main() {
int x=0;
int y=0;
while(x<7 &&++v) {
y--; x++; }
printf(\"%d,%d\}
程序的输出结果是________。A、0,7B、7,7C、0,6D、1,6
( )16、有如下程序
#define N 3#define M N+2
#define NUM 2*M+1main() {
int i;
for(i=1;i<=NUM;i++)printf(\"%d\\n\}
该程序中的for循环执行的次数是______。A、5B、9
第4/11页
C、7D、8
( )17、有以下程序
#include <studio.h>
#include <string.h>struct a {
int a; char b[10]; double c;};
void f(struct a t);main() {
struct a a={1001,"zhangda",1098.0}; f(a);
pringt("%d,%s,%6.1f\\n",a.a,a.b,a.c);}
void f(struct a t) {
t.a=1002;
strcpy(t.b,"changrong"); t.c=1202.0;
}
程序运行后的输出结果是________。A、1001,ZhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0
( )18、下列说法正确的是________。
A、在C程序中,main()函数必须位于程序的最前面B、在C程序中,一条语句只能写一行而不能写多行C、C程序是以行为基本单位的D、C语言本身没有输入输出语句
( )19、有以下程序
main()
{
char s[]=\"\\n123\\\\\";
printf(\"%d,%d\\n\}
执行后输出结果是________。A、赋初值的字符串有错B、6,7C、5,6D、6,6
( )20、定义file *fp; 则文件指针fp 指向的是________。
第5/11页
A、文件在磁盘上的读写位置B、文件在缓冲区上的读写位置C、整个磁盘文件D、文件类型结构体得分
评卷人
二、填空题 (共10题,每题2分,共计20分)
21、共用体类型变量的定义关键字是________。
22、下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:l,1,2,3,5,8,13,21,… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构! 试题程序: long fun(int g) ( switch(g); {
case 0:
return 0;
case 1:case 2: return 1; }
return(fun(g-1)+fun(g-2)); ) void main() {
long fib;
int n;
printf(\"input n:\"); scanf(\"%d\
printf(\"n=%d\\n\ fib=fun(n);
printf(\"fib=%d\\nkn\}
23、下列程序段的运行结果是_____。main( ) {
int n,s=0 ;
for(n=1; n<=5; n++) {
if(n%2==0) continue; s=s+n; }
printf(\"%d\\n\}
24、在c语言中,如果采用printf函数将整个字符串一次输出,那么对应的格式控制符为\"( )\"。 25、下列程序段的运行结果是_____。char a='m' ,*p ;p=&a;
printf(\"%c\
26、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
第6/11页
void main( ){
float x[1000], sum=0.0, ave, a; int n=0, i;
printf(\"enter mark:\\n\"); scanf(\"%f\
while(a>=0.0&& n<1000) {
sum+ ____1_____; x[n]= ____2_____ ; n++;
scanf(\"%f\ }
ave= ____3_____ ; printf(\"output:\\n\"); printf(\"ave=%f\\n\ for (i=0;i<n;i++)
if ____4_____printf (\"%f\\n\}
27、在c语言中,假使x为长整型变量,如果我们采用printf(\"格式控制\控制\"具体表示为\"( )\"。
28、在c语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。
29、以下程序的运行结果是________。main() {
int a = 2, b = 3, c; c = a;
if (a > b) c = 1;
else if (a == b) c = 0; else c = -1;
printf(\"%d\\n\}
30、下列程序段的运行结果是_____。struct student{
long num;
char name[20]; char sex; float score;
}
a={1021103,\"jiang ping\main( ) {
printf(\"%ld\\n\}
得分
评卷人
三、简答题 (共3题,每题分值不等,共计40分)
第7/11页
31、编写程序:查找n在数组a中最后一次出现的位置
例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当n=5时,程序的输出结果为:5 is no.3 当n=10时,程序的输出结果应为:10 not found (本题10分)
32、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。输入输出示例:括号内为说明,无需输入输出输入样例:3 (n=3)1000 851001 901002 75
输出样例:
1001 90 (本题14分)
33、编写程序:利用结构体类型,编程计算一名同学5门课的平均分。 (本题16分)
第8/11页
参考答案
一、单项选择题1、B2、D
【解析】选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C),因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D),C语言规定,不能把共用体变量作为函数的参数。3、A4、A
【解析】本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当mam()函数中的for循环中语句
sub(a,&x);执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。5、B6、C
【解析】并不是所有的if-else语句的执行效率都高于switch语句,在一些特定的情况下, switch语句可以比较简炼,同时容易阅读,因此,选项C的描述是错误的。7、A8、C
【解析】在标准ASCⅡ码表中,数字码、小写英文字母和大写英文字母的前后次序是:数字、大写英文字母、小写英文字母。9、D10、A
【解析】在本题中,首先定义了一个共用体pw,其中有两个域:整型变量i和字符数组ch。因为共用体中的域是共享内存空间的,数组元素由低到高存储:ch[0]在低字节;ch[1]在高字节;整型变量i占两个字节,高位与ch[1]共用存储空间,低位与ch[0]共用存储空间,而高位 ch[1]的值为0,所以输出的成员变量i的值就是ch[0]的值13。11、B12、A
【解析】本题考核的标识符定义。规定标识符由大小写字母、数字字符 (0~9)和下划线组成,并且以字母或下划线开始,后跟0个或多个字母,数字字符或下划线。由此可知A) 选项中的连接符不能用于组成标识符。13、C14、C
【解析】将题目中的定义语句去掉前面的typedef和后面的CIN(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,TT是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,struct TT一起构成一个结构体类型,就好像字符类型char。若只去掉前面的typedef,就是一条结构体定义同时声明个结构体变量CIN的语句,因为CIN的前面部分是struct TT的完整写法,可以看作是struct TT。C语言允许用typedef说明一种新类型名,其语法格式为: typedef 类型名 标识符;
以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给struct TT的定义一个新的名称CIN。所以,此时的CIN是一个结构体类型,它相当于struct TT,即可以和char一样单独用来声明该结构体变量,而TT只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。15、A
第9/11页
16、B17、A18、D
【解析】本题涉及C语言最基本的4个知识点:①C语言程序是由函数构成的,C程序的基本单位是函数;②每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,但是main()函数可以放在程序中的任意位置;③C语言的书写格式是自由的,一行可以写多条语句,一条语句也可以写在不同的行上:④C语言本身不提供输入输出语句,可以通过函数来实现输入和输出操作。19、C
【解析】本题在定义字符数组时没有定义数组长度,但是给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。因此printf语句中输出的结果为5,6。20、B二、填空题21、union
22、(1)错误:switch(g);
正确:switch(g)(2)错误:casel:case2:returnl;正确:casel;case2:returnl;23、924、%s25、m26、(1) =a (2) a (3)sum/n (4)x[i]<ave
【解析】很明显,该程序中使用sum表示总成绩,使用x[1000]数组存储学生成绩,使用n表示学生个数,使用ave表示平均分。弄明白这些变量的含义后,程序该怎么填写,一目了然。27、%ld28、直接29、-130、1021103三、简答题
31、#include <stdio.h>main( ) {
int a[10]={1,5,2,5,6,8,7,4,3,0}; int i,k,n,f=0; scanf(\"%d\ for(i=0;i<10;i++) if(a[i]==n) {
f=1; k=i; }
第10/11页
if(f) printf(\"%d is no. %d\\n\ else printf(\" %d not found !\\n\}
32、#include <stdio.h>#define N 8
typedef struct student{
int no; int score;}student;int main(){
student s[1000]; int n,i; int max;
scanf(\"%d\ for(i=0;i<n;i++) {
scanf(\"%d\ scanf(\"%d\ max=s[0].score; if(max<s[i].score) max=s[i].score; }
for(i=0;i<n;i++) {
if(s[i].score==max) printf(\"%d \ }
printf(\"%d\ return 0; }
33、struct student{ char name[30]; float score[5];};
int main(int argc, const char * argv[]){
struct student a = {\"zhangsan\ float sum = 0;//定义一个5科分数之和变量
float AverageScore = 0;//定义一个平均分变量 for (int i = 0; i < 5; i++) { sum =sum + a.score[i];
AverageScore = sum / 5; }
printf(\" 姓名%s\\n 5科成绩平均分是:%.1f分\ return 0;}
第11/11页
因篇幅问题不能全部显示,请点此查看更多更全内容