[整理]C语言试题及答案.
C语言试题(答案仅供参考)
1.分析下面的C语言代码:char ch; while((ch=getchar())!=’e’) printf(“*”);若
输入字符串:abcde,则以上while循环体将执行(D)次。(选择一项)
A)0
B)1
C)5
D)4
2.下列C程序段的输出结果是(C)。(选择一项)
void main()
{
int a[4] = {5,2,3,4};
int *p;
p = a;
p += 2;
printf(“%d”,*p);
}
A) 1
B) 2
C) 3
D) 4
3.在C语言中,假设:char w; int x; float y; double z; 则表达式:w*x+z-y值
得数据类型为(D)。(选择一项)
A) float
B) char
C) int
D) double
4.已知十六进制数1A的十进制数为26,请问十六进制数2B的十进制数表示是(D)。(选择一项)
a)27
b)37
c)42
d)43
5.在C语言中,下列代码输出的结果是(D)。
#include
void main()
{
int i;
int bookNum=4;
int totalPrice=0;
int bookPrice[4]={10,20,30,40};
for(i=0;i<4;i+=2)
{
totalPrice+=bookPrice[i];
i--;
}
printf(“%d”,totalPrice);
}(选择一项)
A)30
B)40
C)60
D)100
6.在C语言中有如下定义:int a[10];则对a数组元素的正确引用是(AD)。(选
择二项)
a)a[10]
b)a[3+1]
C语言期末考试试题及详细答案
选择练习题
1、C 语言中最简单的数据类型包括( B )。
A 、整型,实型,逻辑型
B 、整型,实型,字符型
C 、整型,字符型,逻辑型
D 、整型,实型,逻辑型,字符型 2、C 语言中,运算对象必须是整型数的运算符是(A )。
A 、%
B 、/
C 、%和/
D 、*
3、为表示关系x <y <z ,应使用C 语言表达式( A )。
A 、(x <y)&&(y <z)
B 、(x <y)AND (y <z)
C 、(x <y <z)
D 、(x <y) &(y <z)
4、C 语言程序的基本单位是( C )。
A 、程序行
B 、语句
C 、函数
D 、字符
5、C 语言的程序一行写不下时,可以( D )。
A 、用逗号换行
B 、用分号换行
C 、用回车符换行
D 、在任意一空格处换行
6、下述标识符中,( C )是合法的用户标识符。
A 、A&
B B 、void
C 、_student
D 、ab* 7、在C 语言中,字符型数据在内存中以( B
A 、补码
B 、ASCII 码
C 、反码
D 、原码
8、一个程序由若干文件组成,共用同一变量,则此变量的存储类别应该为( B
)。
A 、auto
B 、extern
C 、static
D 、Register 9、以下关于switch 语句和break 语句的描述中,只有(B A 、在switch 语句中必须使用break 语句
B 、在switch 语句中,可以根据需要使用或不使用break 语句
C 、break 语句只能用于switch 语句中
D 、break 语句是switch 语句的一部分
10、C 语言规定:调用一个函数时,实参变量和形参变量之间的数据传递是(B )。
C语言程序设计试题及参考答案
C语言程序设计
一、选择题(共40分,每小题2分)
1、以下叙述不正确的是(D)
A、一个C源程序可由一个或多个函数组成
B、一个C源程序必须包含一个main函数
C、C程序的基本组成单位是函数
D、在C程序中,注释说明只能位于一条语句的后面
2、下列四个选项中,是不合法的用户标识符的选项是(B)
A、abc
B、12AC
C、sun
D、A
3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A)
A、-24
B、0
C、4
D、16
4、下列运算符中优先级最高的是(B)
A、<
B、+
C、&&
D、==
5、在C语言中,运算对象必须是整型数的运算符是(A)
A、%
B、/
C、%和/
D、+
6、以下关于运算符的优先顺序的描述正确的是(C)
A、关系运算符<算术运算符<赋值运算符<逻辑与运算符
B、逻辑与运算符<关系运算符<算术运算符<赋值运算符
C、赋值运算符<逻辑与运算符<关系运算符<算术运算符
D、算术运算符<关系运算符<赋值运算符<逻辑与运算符
7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C)
sum=pad=5;pAd=sum++,pAd++,++pAd;
printf(“%d\n”,pad);
A、7
B、6
C、5
D、4
8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)
A、INPUTx、y、z;
B、scanf(“%d%d%d”,&x,&y,&z);
C、scanf(“%d%d%d”,x,y,z);
c语言基础试题及答案
c语言基础试题及答案
一、选择题
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A、整型常量
B、整型表达式
C、整形常量或整形表达式
D、任何类型的表达式
2、以下对一维整型数组a的正确说明是____
A、int a(10) ;
B、int n=10,a[n];
C、int n;
scanf(“%d”,&n);
int a[n];
D、#define SIZE 10
int a[SIZE];
3、若有定义:int a[10],则对数组a元素的正确引用是
A、a[10]
B、a[3.5]
C、a(5)
D、a[10-10]
4、以下能对一维数组a进行正确初始化的语句是。
A、int a[10]={0,0,0,0,0};
B、int a[10]={} ;
C、int a[ ] = {0} ;
D、int a[10]={10*1} ;
5、若有定义:int a[3][4],则对数组a元素的正确引用是________
A、a[2][4]
B、a[1,3]
C、a(5)
D、a[10-10]
6、以下能对二维数组a进行正确初始化的语句是_______
A、int a[2][]={{1,0,1},{5,2,3}} ;
B、int a[][3]={{1,2,3},{4,5,6}} ;
C、int a[2][4]={{1,2,3},{4,5},{6}} ;
D、int a[][3]={{1,0,1},{},{1,1}} ;
7、若有说明:int a[3][4]={0};则下面正确的叙述是_______
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C语言200道练习试题和答案
A) (c1>=0)&&(c1<=9) B) (c1>=’0’)&&(c1<=’9’)
C) ’0’<=c1<=’9’
D)
(c1>=’0’)||(c1<=’9’)
38.若有语句int a=1,b=2,c=3; 则以下值为0的表达式是【 d 】。 A)’a’&&’b’ B)a<=b C)((a>b)||(b<c) )
'\\'
'\'
'\f'
'\101'
'\xf‘
'\a‘
'\}'
'xlf'
41.以下符合C语言语法的赋值表达式是【 B 】 A) d=9+e=d+9 B) d=9+e,f=d+9 C) d=9+e,e++,d+9 D) d=9+e++=d+7
answer
42.若已定义:float aa=1234.5678; 则执行 printf(“%6.2f%d/n”,aa,(int)(aa));
A)’A’<=c<=’Z’ B)(c>=’A’) & (c<=’Z’)
C语言程序设计试题试题及答案
C语言程序设计试题试题及答案
C语言程序设计试卷,C++语言程序设计试题及答案
一、单项选择题(每题1分,共20分)
1.C语言规定:在一个源程序中,main函数的位置(C)。
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
2.下面四个选项中,均是合法浮点数的选项是(B)。
A.+1e+15e-9.403e2
B.-.6012e-4-8e5
C.123e1.2e-.4+2e-1
D.-e3.8e-45.e-0
3.若a=-14,b=3,则条件表达式a<ba:b+1的值为(a)。< bdsfid="75" p=""></ba:b+1的值为(a)。<>
A.-14
B.-13
C.3
D.4
4.已知:intn,i=1,j=2;执行语句n=i<ji++:j++;则i和j的值是(c).< bdsfid="81" p=""></ji++:j++;则i和j的值是(c).<>
A.1,2
B.1,3
C.2,2
D.2,3
5.为了判断两个字符串s1和s2是否相等,应当使用(D)
A.if(s1==s2)
B.if(s1=s2)
C.if(strcmp(s1,s2))
D.if(strcmp(s1,s2)==0)
6.以下正确的描述是(B)。
A.函数的定义可以嵌套,但函数的调用不可以嵌套。
B.函数的定义不可以嵌套,但函数的调用可以嵌套。
C.函数的定义和函数的调用均不可以嵌套。
D.函数的定义和函数的调用均可以嵌套。
7.在C语言中,下面对函数不正确的描述是(D)。
(整理)C语言试题及答案.
这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。
B、*(a[1]+1)的值为2
为8,故B不正确
C、**(a+1)+2的值为8
这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;
5、do……while和while……do有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环
6、请写出下列代码的输出内容
#include <stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf( "b,c,d:%d,%d,%d ",b,c,d);
D对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换
3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少?
①20②9③8④19
//strlen函数计算char*型字符串的长度的时候,并不包含末尾的\0;
4、以下哪一个表达式取值是正确的?
C语言期末试题及答案
C语言期末考试题及答案
一. 单选题(共20题,每题2分,共40分)
1. 以下运算符中优先级最高的是()
A.<
B.+
C.&& D .!
2. 下列说法正确的是()
A. 在执行C语言程序时不是从main函数开始的
B. C语言程序书写格式严格,一行内必须写一个语句
C. C语言程序书写格式自由,一个语句可以分写在多行上
D. C语言程序书写格式严格,一行内必须写一个语句,并要有行号
3. 下面的符号常量定义中,正确的是()
A.#define PI 3.14;
B.#include PI 3.14;
C.#define PI=3.14
D.#define PI 3.14
4. 以下程序的输出结果是 ( )
fun(int x, int y, int z)
{ z=x*x+y*y; }
main()
{ int a=31;
fun(5,2,a);
printf("%d",a);
}
A.0
B.29
C.31
D.无定值
5. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回实参
D.传递方式由用户指定
6. 假设int型变量占两个字节的存储单元,若有定义:
int x[10]={0,2,4};
则数组x在内存中所占字节数为______。
A.3
B.6
C.20
D.10
7. 下列合法的数组定义是_________。
A.int a[]=”string”;
B.int a[5]={0,1,2,3,4,5};
C.char a=”string”;
D.char a[]={0,1,2,3,4,5};
C语言试题及答案
《C语言程序设计》试题四一.单项选择题
1.运算符___________的优先级最高。
A.[ ]
B.+= C.?: D.++
2.main( )
{ int n;
( n=6*4,n+6),n*2;
printf(―n=%d\n‖,n); }
此程序的输出结果是
______________.
A.30 B. 24 C.
60 D. 48
3.若有如下定义,则
__________是对数组元素
的正确的引用。.
int a[10] , *p ;
p=a ;
A. *&a[10]
B.
a[11] C. *(p+11) D. *p *p *p
4.设整型变量n的值为2,执行语句―n+=n-=n*n;‖后,n的值是__________
A. 0
B. 4
C. - 4
D. 2
5.各种基本数据类型的存贮空间正确的长度排列为
__________。
A.Char
B.Double
C.Char
D.Float
_____________是正确的。
A.char:a, b, c;
B.char a; b; c; C.char
a, b, c; D.char a, b, c
7.表达式
y=(13>12?15:6>7?8:9)的值
为____________ 。
A9 B 8
C 15 D. 1
8.若x=5,y=3 则y*=x+5; y
的值为_______________.
A. 10
B. 20
C. 15
D. 30
9.能正确表示a和b同时
为正或同时为负的逻辑表
达式是_________。
A.a>=0||b>=0)&&(a<0
||b<0) B.(a>=0 &&
b>=0)&&(a<0 && b<0)
c语言笔试试题及答案
c语言笔试试题及答案
一、
1、一个完整的计算机系统包括
A)主机与外部设备
B)主机与操作系统
C)硬件系统与软件系统
D)CPU、存储器与外部设备本题的正确答案是:C)
2、计算机的存储器完整的应包括
A)内存储器与外存储器
B)磁盘、磁带与光盘
C)RAM与ROM
D)软盘与硬盘
本题的正确答案是:A)
解析:
存储器包括内部存储器和外部存储器,而选项B,D只能统称为外部存储器,选项C 属于内部存储器。
3、十进制数927的十六进制值表示形式为
A)39F
B) 39E
C) 3AE
D) 361
本题的正确答案是:A)
解析:
本题考查不同进制数之间的转换.
4、WPS字处理软件属于
A)系统软件
B)应用软件
C)管理软件
D)多媒体软件
5、在计算机内部,一切信息的存取、处理与传送均采用
A)二进制
B)十六进制
C)BCD码
D)ASCII码
本题的正确答案是:A)6、计算机中,能够用来与外存交换信息的是
A)键盘
B)RAM
C)显示器
D)ROM
本题的正确答案是:B)
解析:
RAM中存储着当前使用的程序、数据、中间结果和与外存交换的数据,CPU根据需要可以直接读/写RAM中的内容。
7、微机的主机与外设相连的设备是
A)磁盘驱动器
B)输入/输出接口电路
C)总线
D)内存
本题的正确答案是:B)
解析:
外部设备是通过接口电路连至主机。总线是CPU、存储器和输入输出接口之间的通道。
8、在多媒体计算机系统中,不能存储多媒体信息的是
A)光盘
B)磁盘
C)磁带
D)光缆
解析:
光缆是多媒体信息的传输通道,不能存储多媒体信息。
9、要将当前盘当前目录下一个文本文件内容显示在屏幕上,正确的命令形式是
C语言测试题及答案
C语言测试题及答案
古今来许多世家,无非积德。天地间第一人品,还是读书。以下是店铺为大家搜索整理的C语言测试题及答案,希望能给大家带来帮助!
C语言测试题及答案篇1
1.(A )是构成C语言程序的基本单位。
A、函数
B、过程
C、子程序
D、子例程
2.C语言程序从 C 开始执行。
A、程序中第一条可执行语句
B、程序中第一个函数
C、程序中的main函数
D、包含文件中的第一个函数
3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main( )函数中定义
C、C语言程序总是从main( )函数开始执行
D、C语言程序中的main( )函数必须放在程序的开始部分
4.下列关于C语言的说法错误的是( B ) 。
A、 C程序的工作过程是编辑、编译、连接、运行
B、 C语言不区分大小写。
C、 C程序的三种基本结构是顺序、选择、循环
D、C程序从main函数开始执行
5.下列正确的标识符是(C )。
A、-a1
B、a[i]
C、a2_i
D、int t
5~8题为相同类型题
考点:标识符的命名规则
只能由字母、数字、下划线构成
数字不能作为标识符的开头
关键字不能作为标识符
选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)
6.下列C语言用户标识符中合法的是(B )。
A、3ax
B、x
C、case
D、-e2 E)union
选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);
7.下列四组选项中,正确的C语言标识符是( C )。
c语言试题及答案
c语言试题及答案
c语言试题及答案
C语言是一门通用计算机编程语言,应用广泛。小编收集了c语言试题及答案,欢迎阅读。
c语言试题
一选择题(7分,每小题0.5分)
1.C语言源程序的基本单位是( )。
A 过程
B 函数
C 子程序
D 标识符
2.下列程序的输出结果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5
B 1
C 0 D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7
B 8
C 9
D 2
4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1
B 125,1,20
C 125,31,20
D 125.534,2,20
5.设有如下程序段,下面描述中正确的是 ( )。
int k=10; while(k=0) k=k-1;
A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D 循环体语句执行一次
6.以下程序的输出结果为( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",'*');
printf(" ");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A ***
B *** *** *** ***
C *** ***
D * * *
7.在C语言程序中,以下说法正确的是( )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
c语言试题及答案大全
c语言试题及答案大全
一、选择题
1. 下列关于C语言的说法中,正确的是:
A. C语言是一种高级编程语言。
B. C语言可以被编译成机器语言执行。
C. C语言的语法和C++完全相同。
D. C语言不支持面向对象的编程。
答案:B. C语言可以被编译成机器语言执行。
2. C语言中,以下哪个是合法的标识符?
A. 123abc
B. abc_123
C. int
D. function()
答案:B. abc_123
3. 在C语言中,以下哪种循环结构是先判断条件后执行循环体?
A. for循环
B. while循环
C. do-while循环
D. switch语句
答案:C. do-while循环
二、编程题
1. 编写一个C程序,计算并输出1到n之间所有整数的和。其中,n由用户输入。
答案:
#include
int main() {
int n;
int sum = 0;
printf("请输入一个整数n:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("1到%d之间所有整数的和为%d\n", n, sum);
return 0;
}
2. 编写一个C程序,判断一个整数是否为素数。素数是指除了1和自身外,无法被其他整数整除的整数。
答案:
#include
#include
bool is_prime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
C语言试题及答案
C语言试题及答案
C语言试题及答案
讷讷寡言者未必愚,喋喋利口者未必智。以下是店铺为大家搜索整理C语言试题及答案,希望能给大家带来帮助!
一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 一个完整的计算机系统包括
A.主机、键盘与显示器
B.计算机与外部设备
C.硬件系统与软件系统
D.系统软件与应用软件
(2) 十六进制数1000转换成十进制数是
A.4096
B.1024
C.2048
D.8192
(3) 十进制数269转换成十六进制数是
A.10E
B.10D
C.10C
D.10B
(4) 如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是
A.-127到+127
B.-128到+128
C.-127到+128
D.-128到+127
(5) 下列设备中,既可作为输入设备又可作为输出设备的是
B.打印机
C.键盘
D.磁盘驱动器
(6) 下列各叙述中,正确的是
A.正数十进制原码的补码是原码本身
B.所有的十进制小数都能准确地转换为有限位二进制小数
C.汉字的计算机内码就是国标码
D.存储器具有记忆能力,其中的信息任何时候都不会丢失
(7) 在下列操作中,能导致DOS系统重新启动但不进行系统自检的是
A.加电开机
B.按+
C.按++
D.按RESET按钮
(8) 如果给定一个带有通配符的文件名F*.?,则在下列各文件中,它能代表的文件名是
A.FA.EXE
B.F.C
C.EF.C
C语言编程测试题及答案
一、选择题:
1.设i为整型变量,原来i=3,执行语句printf("%d",-i++)后i的值为:
A.3 B.-3 C.4 D.-4
2.设i、j为整型变量,原来i=3,j=5,执行语句printf("%d",i+++j)后j的值为: A.4 B.5 C.8 D.9
3.若有定义int a[9],*p=a;,则p+5表示:
A.数组元素a[5]的值 B.数组元素a[5]的地址
C.数组元素a[6]的地址 D.数组元素a[0]的值加上5
4.以下程序段中与语句 k=a>b?(b>c?1:0):0; 功能等价的是:
A. if((a>b)&&(b>c))k=1;
B. if((a>b)||(b>c))k=1;
else k=0; else k=0;
C. if(a<=b)k=0;
D. if(a>b)k=1;
else if(b<=c)k=1; else if(b>c)k=1;
else k=0;
5.设有以下定义 #define d 2
int a=0; double b=1.25; char c=’A’;
则下面语句中错误的是
A. a++
B. b++
C. c++
D. d++ 注:需要逻辑0或非0在main函数中。
6.设a为整型变量,原来a=10,表达式a=--a+a--运算后a的值为:
A.16 B.17 C.18 D.19
7.设有定义 float a=2, b=4, h=3;
则以下语句表达式中与代数式1/2(a+b)h计算结果不相符的是
A.(a+b)*h/2
c语言试题及答案
c语言试题及答案
一、填空题
1、C语言中基本的数据类型有:__________、__________ 、__________ 。
2、C语言中普通整型变量的类型说明符为__________,在内存中占__________字节,有符号普通整型的数据范围是__________。
3、整数-35在机内的补码表示为__________。
4、执行下列语句int a=8; a+=a-=a*a; 后,a的值是__________ 。
5、有如下语句:char A[ ]={”I am a student”}; 该字符串的长度是__________,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/2
B. b=6-(--a)
C. b=a%2
D. b=a>3?2:1
2、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( )组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D.同一行上的if
3、以下程序的输出结果是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
①6>5结果为6②6&&5结果为7
③6||5结果为7④6<5结果为0
5、如定义
enum weekday{one, two, thr, fou, fiv};
enum weekday working;
以下哪个是不正确的枚举变量的使用?
①working = thr;②working =2;
③working = (enum weekday)2;
(1)main()
{unsigned a,b,x
int n;
a=0x763输出结果:
n=6;
b=a<<(12-n);
x=(a>>n-2)^b; //+,-,的优先级比<<,>>高。
printf(“\nb=%x,\nx=%x”,b,x);
}
在用2个字节表示整数的系统中
结果为
d8c0
d8b6
在用4个字节表示整数的系统中
D对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换
3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少?
①20②9③8④19
//strlen函数计算char*型字符串的长度的时候,并不包含末尾的\0;
4、以下哪一个表达式取值是正确的?
E、静态局部变量只赋一次初值
4、下列描述正确的是(A,C)。
A、由main函数及其参数argc和* argv[]可以实现命令行方式
B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中
//先写缓冲区数据到文件中,再释放文件指针
C、字符数组并不要求它的最后一个字符是‘\0’
//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。
D、‘A’和“A”都是字符串常量
E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7
5、在缓冲文件系统中用于读写的函数有(A,B,D)
A、putchar () B、fread() C、rewind () D、purw() E、fseek()
二、程序阅读,并给出运行结果
【答案】
写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的要求。
#include<stdio.h>
main()
{
FILE *fp,*fq,*fr;
1、下列程序的输出是什么?
# include <stdio. h>
void main ()
﹛
char * aplha [6] =﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜;
2、对宏定义不正确的描述是哪一个?
A在进行宏定义时,可以引用已经定义的宏名,可以层层置换
//可以引用已经定义了的宏名,可以层层置换
B宏名的有效范围包括本文件的任何位置
//宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域
C宠定义不是语句,不必在行末加分号
//是预处理定义语句
5、do……while和while……do有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环
6、请写出下列代码的输出内容
#include <stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf( "b,c,d:%d,%d,%d ",b,c,d);
{
p=b;输出结果:
printf(“%d\n”,++p->x); //->的优先级高于++,因此等于是++(p->x),为11
printf(“%d\n”,(++p)->x); //p后移一个元素,其x值为9;
printf(“%d\n”,++(*p->y));
//->的优先级高于*,此时p已指向b[1],故*(p->y)为a[3]为100.自加后为101;
8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
9、设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf( "%d\n ",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
答:110
二、C语言部分
一、选择题(每小题2分,共10分)
1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有(A,C,D,E)
exit(0);
}
fr=fopen("c.txt","w+");
while(!feof(fp))
{
ch=fgetc(fp);
fputc(ch,fr);
if(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
}
}
while(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
④working = (enum weekday) (5-3);
//不能对其赋值
6、下列说法中正确的是哪一个?
①sizeof (char)是结果为整型的表达式
②sizeof (char)是一个不合法的表示形式
③sizeof (char)是一种函数调用
④sizeof (char)是结果为实型的表达式
二、阅读程序,并回答问题
C、形参数组长度可以不指定D、形参数组长度可以大于实参数组长度
E、数组名做参数属于值传递
3、对静态变量的正确描述(A,B,D,E)
A、静态局部变量在静态存储区内分配单元()
B、静态外部变量可以赋初值,也可以不赋初值
C、静态外部变量的作用与外部变量相同
D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
结果为
1d8c0
1d8b6
故以上两种结果都正确。
(2) #include〈stdin.h〉
struct m{int x;
int *y;
}*p;
int a [4]={12,33,-40,100};
struct m b [4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}'
main()
从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
所以结果是20 + 32 = 52.
当然...在某些16位编辑器下, int可能是2字节,那么结果是int2 + DATE10 + double8 = 20
10、队列和栈有什么区别?
队列先进先出,栈后进先出
11、写出下列代码的输出内容
#include <stdio.h>
int inc(int a)
{
A、*(a+1)为元素6的地址
这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。
B、*(a[1]+1)的值为2
为8,故B不正确
C、**(a+1)+2的值为8
这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;
DATE max;
则语句printf( "%d ",sizeof(struct date)+sizeof(max));的执行结果是:___52____
答:DATE是一个union,变量公用空间.里面最大的变量类型是int[5],占用20个字节.所以它的大小是20
data是一个struct,每个变量分开占用空间.依次为int4 + DATE20 + double8 = 32.
}
故输出结果为:
11
9
101
三、程序设计
设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“bababaa”,)并将结果存入文件a.txt中。
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
答:可以,在不同的C文件中以static形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
4、语句for(;1;)有什么问题?它是什么意思?
答:和while(1)相同。
}
rewind(fp); rewind(fr);
while(!feof(fr))
{
ch=fgetc(fr);
fputc(ch,fp);
}
fclose(fp); fclose(fq); fclose(fr);
}
一、单项选择题
1、‘ห้องสมุดไป่ตู้t’表示什么?
A字符串常数B标识符C变量D字符常量(D){注:后面选择题答案均为D}
D、a[0]与a相同
因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。
E、a[1][2]的值为10
它是指第二行的第三个元素,为10,正确
2、对函数的正确使用方法描述(A,C,D)。
A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组
B、实参数组元素和形参数组元素类型可以不一致
2、如何引用一个已经定义过的全局变量?
答:extern
可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
一、问答题
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用":: "
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
return 0;
}
答:10,12,120
7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
char ch;
if((fp=fopen("a.txt","r+"))==NULL)
{ printf("cannot open file a.txt");
exit(0);
}
if((fq=fopen("b.txt","r"))==NULL)
{ printf("cannot open file b.txt");