分享

C语言程序设计

 答题小伙伴 2019-12-20
    D、c>a或c


13、设a,b,w为整型变量,ch为字符型变量,用if语句改写以下的程序段: switch(ch) { case'+':w=a+b;break; case'-':w=a-b;break; case'*':w=a*b;break; case'/':w=a/b;break;} 在下列写法中,错误的是( )
    A、if(ch= ='+') w=a+b; if(ch= ='-') w=a-b; if(ch= ='*') w=a*b; if(ch= ='/') w=a/b;
    B、if(ch= ='*') w=a*b; else if(ch= ='/') w=a/b; if(ch= ='+') w=a+b; else if(ch= ='-') w=a-b;
    C、if(ch= ='+') w=a+b; else if(ch= ='-') w=a-b; if(ch= ='*') w=a*b; else w=a/b;
    D、if(ch= ='+') w=a+b; elseif(ch= ='-') w=a-b; if(ch= ='*') w=a*b; else if(ch= ='/') w=a/b;


14、以下程序的输出结果是( ) #include main() { int a=0,b=l,c=0,x=0,y=0; if(x<=y) if(y=l0) if(!b) a=1; else if(c) a=10; a=-1; printf("%d",a);}
    A、1
    B、10
    C、-1
    D、不确定的值


第四章测试

1、分析下面的C语言代码: int a=1,b=10; do{ b-=a;a++; }while (b--<0); 则执行循环语句后b的值为( )
    A、9
    B、-2
    C、-1
    D、8


2、C语言中,while和do…while循环的主要区别是( )
    A、while的循环控制条件比do…while的循环控制条件严格
    B、do…while的循环体可以无条件执行一次
    C、do…while允许从外部转到循环体内
    D、do…while的循环体不能是复合语句


3、研究下面的C程序段: int i,j; for (i=5;i;i--) for(j=0;j<4;j++){…} 循环体的总执行次数是( )
    A、20
    B、25
    C、24
    D、30


4、分析下面的C代码段: char str1[15]="Sea View"; char str2[15]="Sea Breeze"; strcpy(str1,str2); printf("%s\n",str1); 则输出结果是( )
    A、Sea View
    B、Sea Breeze
    C、Sea View Sea Breeze
    D、Sea Breeze Sea View


5、下面有关for循环的正确描述是( )
    A、for循环只能用于循环次数已经确定的情况
    B、for循环是先执行循环体语句,后判断表达式
    C、在for循环中,不能用break语句跳出循环体
    D、for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来


6、若i为整型变量,则以下循环执行次数是( ) for(i=2;i==0;) printf(“%d\n”,i--);
    A、无限次
    B、0次
    C、1次
    D、2次


7、以下程序运行后,输出的结果是( ) main() { int i, j ,sum=0; for (i=5;i;i--) for (j=0;j<3;j++) sum++; printf("%d",sum); }
    A、3
    B、5
    C、12
    D、15


8、下面程序的运行结果是( ) void main() { int i; for(i=1;i<=5;i++) { if(i%2) printf(“*”); else continue; printf(“#”);} printf(“$\n”);}
    A、*#*#*#$
    B、#*#*#*$
    C、*#*#$
    D、#*#*$


第五章测试

1、以下对一维数组a的正确说明是:( )
    A、char a(10);
    B、int a[];
    C、int k=5,a[k];
    D、char a[3]={‘a’,’b’,’c’};


2、已知:int a[10]; 则对a数组元素的正确引用是( )
    A、a[10]
    B、a[3.5]
    C、a(5)
    D、a[0]


3、下述对C语言字符数组的描述中正确的是( )
    A、一维字符数组的第一个元素是其下标为1的元素
    B、一维字符数组的元素在引用时其下标大小没有限制
    C、任何一个一维字符数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
    D、任何一维字符数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间


4、若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( )
    A、2
    B、3
    C、4
    D、无确定值


5、对二维数组的正确定义是( )
    A、int a[ ] [ ]={1,2,3,4,5,6};
    B、int a[2] [ ]={1,2,3,4,5,6};
    C、int a[ ] [3]={1,2,3,4,5,6};
    D、int a[2,3]={1,2,3,4,5,6};


6、已知int a[3][4];则对数组元素引用正确的是( )
    A、a[2][4]
    B、a[1,3]
    C、a[2][0]
    D、a(2)(1)


7、合法的数组定义是( )
    A、char a={'U', 'V', 'W','X', 'Y'};
    B、char a[5]={"A","A", "A","A","A"};
    C、char a[6]= {'A','B','C','D','E'};
    D、char a[5]= "ABCDE";


8、以下程序段的输出结果是( ) char s[]="\113vwxyz\x41"; printf("%d\n",strlen(s));
    A、8
    B、10
    C、3
    D、7


9、以下程序运行后,输出结果是( ) void main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }
    A、0650
    B、1470
    C、5430
    D、输出值不定


10、若有以下定义和语句: char s1[]="abced",s2[]="abcd"; printf("%d\n",strlen(strcpy(s1,s2))); 则输出结果是:( )
    A、4
    B、5
    C、9
    D、10


第六章测试

1、一个C语言程序总是从( )开始执行的。
    A、书写顺序的第一个函数
    B、书写顺序的第一条执行语句
    C、主函数main
    D、不确定


2、在 C 语言中,有关函数的说法,以下正确的是( )
    A、函数不可嵌套定义,但可嵌套调用
    B、函数可嵌套定义,但不可嵌套调用
    C、函数可嵌套定义,也可嵌套调用
    D、函数不可嵌套定义,也不可嵌套调用


3、调用函数的实参与被调用函数的形参应有如下关系( )
    A、只要求实参与形参个数相等
    B、只要求实参与形参顺序相同
    C、只要求实参与形参数据类型相同
    D、上述三点均应具备


4、为了判断两个字符串s1和s2是否相等,应使用( )
    A、if(strcpy(s1,s2))
    B、if(s1=s2)
    C、if(strcmp(s1,s2)= = 0)
    D、if(s1==s2)


5、以下4个字符串函数中,与其他3个所在的头文件不同是( )
    A、putchar
    B、printf
    C、scanf
    D、strcmp


6、若用数组名作为函数调用的实参,传递给形参的是( )
    A、数组的首地址
    B、数组中第一个元素的值
    C、数组中的全部元素的值
    D、数组元素的个数


7、以下正确的说法是( )
    A、实参和与其对应的形参各占用独立的存储单元
    B、实参和与其对应的形参共占用一个存储单元
    C、有当实参和与其对应的形参同名时才共占用相同的存储单元
    D、形参是虚拟的,不占用存储单元


8、关于函数声明,以下不正确的说法是( )
    A、如果函数定义出现在函数调用之前,可以不必加函数原型声明
    B、如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明
    C、函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查
    D、标准库不需要函数原型声明


9、以下叙述中正确的是( )
    A、源程序中所有的行都参加编译。
    B、宏定义常量与const定义常量是一样的。
    C、宏定义可以嵌套定义,即在宏定义中的字符串可以引用另一个宏定义的标识符。
    D、其余选项都不正确。


10、凡在函数中未指定存储类别的变量,其隐含的存储类别是( )
    A、自动
    B、静态
    C、外部
    D、寄存器


11、在源程序的一个文件中定义的全局变量的作用域是( )
    A、在本文件的全部范围
    B、该程序的全部范围
    C、一个函数的范围
    D、从定义该变量的位置开始至该文件的结束


12、下列程序的输出结果是( ) #include int abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w; } return u; } main() { int a=24,b=16,c; c=abc(a,b); printf("%d\n",c); }
    A、8
    B、6
    C、5
    D、4


13、函数调用可以在( )
    A、函数表达式中
    B、函数语句中
    C、函数参数中
    D、以上都是


14、以下不正确的叙述是( )
    A、宏替换不占用运行时间
    B、宏名无类型
    C、宏替换只是字符替换
    D、宏名必须用大写字母表示


15、C语言的编译系统对宏命令的处理( )
    A、在程序运行时进行的
    B、在程序连接时进行
    C、和C程序中的其它语句同时进行编译的
    D、在对源程序中其它语句正式编译之前进行的


16、全局类型的变量作用范围大,因此编程中应尽量使用全局变量,少使用局部变量。( )


17、形参只有在被调用时才分配存储空间。( )


18、形参可以是常量、变量或表达式。( )


19、宏替换时先求出实参表达式的值,然后代入形参运算求值。( )


20、调用函数只能得到一个返回值,而用宏可以得到几个结果。( )


21、在宏定义#define PI 3.l4l59中,如果将1误输成小写的L,则编译时不出错,运行时出错。( )  


第七章测试

1、指针变量是把内存中另一个数据的()作为其值的变量。
    A、变量名
    B、值
    C、地址
    D、标识符


2、有以下程序段,输出结果为()。 #include main() { int a[10]={11,32,43,25,16,71,24,23,80,44}; int *p=a; int *s,; s=p+2; printf("%d,%d ",*p,*s); }
    A、11,32
    B、11,13
    C、0,2
    D、11,43


3、有以下程序段,输出结果为()。 #include main() { int a[10]={5,10,15,20,25,30,35,40,45,50}; int *p=a; int *s, m; s=p++; m=*p++; printf(“%d,%d,%d ”, *p, *s, m); }
    A、5,10,11
    B、15,5,10
    C、5,10,15
    D、10,15,11


4、有以下程序段,输出结果为()。 #include main() {int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]=a; printf("%d\n",*p); }
    A、1
    B、12
    C、语法错误
    D、随机值


5、有以下程序段,输出结果为()。 #include main() {int a=10,*p,**q,***s; p=&a; q=&p; s=&a; printf("%d,%d,%d",*p,**q,***s); }
    A、10,10,10
    B、10,随机值,随机值
    C、10,10,随机值
    D、语法错误


6、在以下程序段的空白处填入(),能够正确输出teacher。 #include main() {char *p[3]={"student","teacher","classroom"}; printf("%s", ); }
    A、*(p+1)
    B、*p+1
    C、*p[1]
    D、*p+7


7、在以下程序段的空白处填入(),能够使程序正确运行。 #include int sum(int x,int y) {return x+y; } main() {int a=3,b=5,c; p=sum; c=(*p)(a,b); printf("%d",c); }
    A、int *p(int,int)
    B、int (*p)()
    C、int (*p)(int ,int);
    D、其余选项都不对


8、有以下程序段,输出结果为()。 #include void swap(int *p1) {int b=20; p1=&b; } main() {int a=10,*pa; pa=&a; swap(pa); printf("%d,%d",a,*pa); }
    A、10,20
    B、20,10
    C、10,10
    D、20,20


9、有以下程序段,在空白处填入(),可以使程序正确运行。 #include int (int x,int y) {if(x>y)return &x; else return &y; } main() {int a=3,b=5,*p; p=f(a,b); printf("%d",*p); }
    A、f
    B、*f
    C、(*f)
    D、其余选项都不对


第八章测试

1、有如下结构体定义,能够正确引用结构体的是()。 struct student { long num; char name[10]; char sex; int age; float score; }stu;
    A、stu.age=20
    B、stu->sex=’f’
    C、stu.num=”40012120”
    D、stu=”lili”


2、有以下程序段,输出结果为()。 #include struct s { int a; char b; double f; }; main() { printf("%d",sizeof(struct s)); }
    A、12
    B、13
    C、16
    D、24


3、有以下程序段,输出结果为()。 #include struct person {char name[20]; int count; }leader[3]={"Li",0,"Zhang",0,"Sun",0}; main() {printf("%s",leader[1].name); }
    A、Li
    B、Zhang
    C、sun
    D、0


4、有以下程序段,输出结果为()。 #include struct student {int num; char name[20]; float score; }; main() {struct student stu[5]; printf("%d",sizeof(stu)); }
    A、140
    B、160
    C、5
    D、随机值


5、以下程序段,在空白处填写()能使程序正确运行并输出结果。 #include struct student {long num; char name[10]; char sex; float score; }; main() {struct student stu={10101,"lili",'m',89.5},*pt; printf("%.2f",pt->score); }
    A、*pt=stu;
    B、pt=stu;
    C、pt=&stu;
    D、*pt=&stu;


6、有结构体声明如下,成员next是一个指针,指向对象的类型是()。 struct node { char ch; struct node *next; };
    A、int
    B、float
    C、char
    D、node


7、有以下共用体声明,赋值错误的是()。 union data { int i; char ch; float f; }
    A、union data a={97};
    B、union data a;a.i=97;
    C、union data a={97,'b',1.5};
    D、union data a;a.i=’a’;


8、以下程序段的运行结果为()。 #include union data { int i; char ch; float f; }; main() {union data a; a.i=98; a.ch='B'; printf("%d",a.i); }
    A、98
    B、66
    C、0
    D、随机值


9、有枚举定义enum sex{m,f} stu;能够正确赋值的是()。
    A、stu={m,f}
    B、stu=f
    C、stu=man
    D、stu=nan


10、有新类型名声明typedef int Num[10];以下各项中与int a[10]含义相同的是()。
    A、Num a[10]
    B、typedef a[10]
    C、Num a
    D、typedef a


第九章测试

1、下列关于C语言数据文件的叙述中正确的是( )
    A、文件由ASCII码字符序列组成,C语言只能读写文本文件
    B、文件由二进制数据序列组成,C语言只能读写二进制文件
    C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
    D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件


2、fwrite函数的一般调用形式是( )
    A、fwrite(buffer,count,size,fp);
    B、fwrite(fp,size,count,buffer);
    C、rite(buffer,size,count,fp);
    D、fwrite(fp,count,size,buffer);


3、C语言文件操作函数fread(buffer,size,n,fp)的功能是( )
    A、从文件fp中读n个字节存入buffer
    B、从文件fp中读n个大小为size字节的数据项存入buffer中
    C、从文件fp中读入n个字节放入大小为size字节的缓冲区buffer中
    D、从文件fp中读入n个字符数据放入buffer中


4、若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是( )
    A、EOF
    B、0
    C、非零值
    D、NULL


5、若要用fopen函数建一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该为( )
    A、"ab+"
    B、"wb+"
    C、"rb+"
    D、"ab"


6、C语言把文件看作是一个( )的序列。
    A、记录
    B、单词
    C、字
    D、字符


7、语句FILE *fp;定义了一个指向( )
    A、FILE类型的指针变量
    B、某一个文件的结构体变量
    C、FILE文件的变量
    D、某一个文件的变量


8、语句 fp=fopen("file1","r"); 表示( )
    A、打开文件file1,可向该文件添加数据
    B、打开文件file1,可向该文件输出数据
    C、打开文件file1,可从该文件输入数据
    D、打开文件file1,可向该文件输入输出数据


9、如果希望向文本文件末尾添加数据,则应以( )方式打开文件。
    A、"a"
    B、"w"
    C、"r"
    D、"ab"


10、从操作系统的角度来看,键盘和打印机是输出文件。( )


11、对设备文件的输入输出操作就是读写设备文件的过程。( )


12、C语言中文件可以顺序存取,也可随机存取。( )


13、gets函数的功能是从文件指针所指向文件中读取一个字符。( )


14、对已打开的文件进行输入输出操作是通过指向该文件结构的指针变量进行的。( )


15、只有通过文件,才能进行大量的原始数据的输入和保存,这些数据甚至可能远远超过内存容量。( )  


第十章测试

1、语句:printf("%d\n",12&012);的输出结果是( )
    A、12
    B、8
    C、6
    D、012


2、设 int b=2;表达式(b>>2)/(b>>1)的值是( )
    A、0
    B、2
    C、4
    D、8


3、有如下程序段 int a=14,b=15,x; char c=‛A’; x=(a&&b)&&(c<‛B’); 执行该程序段后,x的值为( )
    A、ture
    B、false
    C、0
    D、1


4、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是( )
    A、x || y
    B、x | y
    C、x & y
    D、x ^ y


5、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是( )
    A、10101001
    B、01010101
    C、11111101
    D、10101000


6、请读程序片段: char x=56; x=x&056; printf(“%d,%o\n”,x,x) 以上程序片段的输出结果是( )
    A、56,70
    B、0,0
    C、40,50
    D、62,76


7、若有以下程序段: int x=1,y=2; x=x^y; y=y^x; x=x^y; 则执行以上语句后x和y的值分别是
    A、x=1,y=2
    B、x=2,y=2
    C、x=2,y=1
    D、x=1,y=1


8、设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是( )
    A、00010100
    B、00011011
    C、00011100
    D、00011000


9、表达式a     A、~,&,<,||
    B、~,||,&,<
    C、~,&,||,<
    D、~,<,&,||


10、将一个数左移一位,相当于该数乘以2;右移一位相当于除以2。( )


11、~运算符的优先级低于算术运算符,高于关系运算符、逻辑运算符。( )


12、位运算的运算量可以是整型、字符型或实型数据。( )


13、要将一个存储单元i清零,可以实施如下运算:i&0。( )


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多