程序设计基础练习
程序设计基础练习
学习资料
(41条消息) C语言运算符优先级(超详细)_yuliying的博客-CSDN博客_c语言
HEX、DEC、OCT 和 BIN含义如下:
- HEX,英文全称 Hexadecimal,表示十六进制。
- DEC,英文全称 Decimal,表示十进制。
- OCT,英文全称 Octal,表示八进制。
- BIN,英文全称 Binary,表示二进制。
判断题
long、int和short类型数据占用内存大小,是根据数据的大小来决定所占内存的字节数。【n】
当用户要求输入的字符串中含有空格时,可以使用scanf()函数的%s格式符来输入。【n】
表达式(3.6%2)符合C语言语法。【n】
表达式!(x>0‖y>0)等价于!(x>0)&&!(y>0)。【y】
fscanf函数的正确调用格式为:fscanf (fp, 格式字符串,输入列表);【n】
在C源程序中将语句"if(x==5) y++;"误写成"if(x=5) y++;",将导致编译错误。【n】
C语言规定简单变量作实参时,它与对应形参之间的数据传递方式是实参和形参间来回传递。【n】
设变量定义为char s[]="hello",则数组s中有6个元素。【y】
若打开文件的方式为"w"而该文件已经存在,则文件中原有数据被清空。
A. 正确
B. 错误🆒
在所有的关系运算符(>=、>、、!=、<=、<)中,优先级最低的运算符是"、!="。
【y】
a是一维数组名,数组元素a[1]还可以写作"*(a++)"。
A. 正确
B. 错误🍵
C语言规定简单变量作实参时,它与对应形参之间的数据传递方式是单向的值传递。
A. 正确
在C语言中,一般建议多使用全局变量及GOTO语句。
B. 错误
在C语言所有的运算符中,优先级最低的是"="。
B. 错误
*简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符*
C语言程序中的main()函数,可以放在程序的任意部分。
A. 正确
对于一个字符串ch="AB", sizeof(ch)与strlen(ch)的值相等。
B. 错误
不能用"r"方式打开一个并不存在的文件【√】
C语言中所有函数都是平行的,函数既可以嵌套定义,也可以嵌套调用。【×】
C语言的函数定义是互相平行、独立的,也就是说,在定义函数时,一个函数内不能再定义另一个函数,即不能嵌套定义,但可以嵌套调用函数
在定义int a[5]后,可以引用a[0]到a[5]中的元素。
A. 正确
B. 错误🍵 a0-a4
不能将一个结构体变量作为一个整体进行输入输出[√]
结构体变量一般不能整体进行输入输出。结构体变量一般用于链表中,或作为函数参数(此时可以实现调用函数得到多个返回值。
在ANSI C中,可用缓冲文件系统处理任何数据文件。【√】
在C语言中,所有的输入输出都由语句来完成。【错】
结构体作为构造类型要求其各个成员的类型必须是一样的【错】
在ANSI C中,可用缓冲文件系统处理任何数据文件[对]
结构体变量所占内存长度是各成员占的内存长度之和。【√】
C程序总是从main( ) 函数的第一条语句开始执行的,而且main函数不能带有任何参数。【×】
在C语言中,所有的函数都是平行的,独立的。
A. 正确
要想对一个单元清零,可以找一个数0,然后使二者进行 | 运算即可。
A. 正确
B. 错误🆒
在C语言中,共用体变量中的各个成员占有不同的存储单元。
A. 正确
B. 错误🆒
当函数调用时,实参是一个数组名,则向函数传递的是数组的第一个元素的值。
A. 正确
B. 错误🍵
链表在内存中常常是不连续存储的。
A. 正确🍵
在C语言程序中,若对函数类型未加显式说明,函数的隐含类型为:void。
A. 正确
B. 错误🍵
C中:如果函数未指定返回值类型,则默认为int
c++中:如果一个函数没有返回值,返回值类型必须指定为void
二维数组名是二级指针。
A. 正确
B. 错误:🍵
二维数组名不是二级指针,它只是一个比较特殊的常量指针。包括三维,四维,乃至N 维数组也是如此。只要是数组,那么它就是一个普通的常量指针
不能用"r"方式打开一个并不存在的文件。[√]
在使用函数fgetc()时,文件可以"w"的方式打开。
A. 正确
B. 错误:🆒
设有变量定义char s[]="hello",则strlen(s)的返回值为6
不对 虽然系统会自动添加 字符串结束符 \0 但是strlen计算的时候,不会考虑 \0,而是遇到它就结束,所以是 5
选择题
1.不正确的赋值或赋初值的方式是________。
A. char str[6]={ 's', 't', 'r', 'i', 'n', 'g', '\0'};
B. char str[10]= "string";
C. char str="string";
D. char str[10]; str="string";
//为啥呀
//一维数组;变量的指针和指向变量的指针变量
2.为表示"a和b都不等于0",应使用的C语言表达式是_______。
A. (a!=0) ‖(b!=0)
B. a‖b
C. !(a=0)&&(b!=0) //(==)
D. a&&b
3.执行语句"a=b=3; printf(" %d,%d\n", a<<2, b>>2);"后的输出结果为________。
A. 12,0
B. 12,3
C. false,true
D. true,false
4.合法的用户自定义标识符:
1、首字符为字母或者下划线;
2、其他字符为字母、数字或下划线的名称;
3、不为特殊字符或C/C++关键字
________是合法的用户自定义标识符。
A. b-b
B. float
C. <fr>
D. _isw
D
5.若a是32位int整型变量,判断其最低2个二进位均为1的表达式为________。
A. a&33//A
B. a&311
C. a&113
D. a&1111
6.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是_______。
A. feof(fp)
B. ftell(fp)
C. fgetc(fp)
D. rewind(fp) 🍵
7.以下语句或语句组中,能正确进行字符串赋值的是________。
A. char sp="right!"; :happy:
B. char s[10];s="right!";
C. char s[10];s="right!";
D. char sp;sp="right!";
8.已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是________。
A. 数组a和b的长度相同
B. a数组长度小于b数组长度
C. a数组长度大于b数组长度
D. 上述说法都不对
答案选C。
数组 a 的长度为 4,其内容为 'x'、'y'、'z'、'\0',其中 '\0' 是字符串结束标志。
数组 b 的长度为 3,内容为 'x'、'y'、'z'。
9.以下叙述中正确的是________。
A. 预处理命令行必须位于源文件的开头
B. 在源文件的一行上可以有多条预处理命令
C. 宏名必须用大写字母表示
D. 宏替换不占用程序的运行时间 :happy:
10.以下选项中可作为C语言合法常量的是________。
A. -80. 🆒
B. -080
C. -8e1.0
D. -80.0e
11中央处理器(CPU)能直接识别的是( )。
A. 汇编语言
B. 自然语言
C. 机器语言🆒
D. 高级语言
12.在计算机中,一个字长的二进制位数是( )。
A. 16
B. 8
C. 32
D. 由 CPU的型号决定🆒
13.在计算机中,一个字节的二进制位数为( )。
A. 16
B. 8🍵
C. 32
D. 由 CPU的型号决定
14.通常编写并执行C程序的过程,第一步应该是( )。
A. 使用文本编辑程序,录入源程序,保存文件🆒
B. 使用链接器将目标文件和库文件链接为可执行文件
C. 使用编译程序编译源文件,生成目标文件
D. 执行程序,得到运行结果
15.算法是一个计算过程,是程序设计的基础和精髓。如下关于一个有效算法特点的描述中,
错误的是( )。
A. 零个或多个输入及一个或多个输出
B. 无穷性🈂️
C. 可行性
D. 确定性
16.用C语言编写的可执行程序,总是从( )开始执行。
A. 程序中的第一个函数
B. 程序中第一条可执行语句
C. 第一个包含文件(#include)的第一个函数
D. 程序中唯一的main函数🆒
17.中央处理器(CPU)包含( )。
A. 运算器和控制器 🆒
B. 运算器和存储器
C. 控制器和存储器
D. 运算器、控制器、存储器、输入设备和输出设备
18.以下叙述中,正确的是( )。
A. C程序中注释部分可以出现在程序中任意合适的地方🍵
B. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
C. 花括号"{"和"}"只能作为函数体的定界符
D. 分号是C语句之间的分隔符,不是语句的一部分
19.设变量定义为 char s[ ]= "hello\nworld\n";,则数组s中有________个元素。
A. 12
B. 13🍵
C. 14
D. 15
\n算一个 最后都有\0 12+1=13
20.以下选项中不正确的整型常量是________。
A. 12L 12L表示的是长整型
B. -10
C. 1,900
D. 123U 这个u是unsigned的意思,代表无符号整型
21.C语言源程序文件经过编译连接之后生成一个后缀为________的文件。
A. ".c"
B. ".obj"
C. ".exe" 🍵
D. ".bas"
22.若变量已正确定义,不能使指针p成为空指针的表达式是哪个?
A. p=EOF 🍵
B. p=0
C. p='\0'
D. p=NULL
23.若变量已正确定义并赋值,表达式________不符合C语言语法。
A. 4&&3
B. +a
C. a=b=5
D. int(3.14) 🍵
24.设变量定义为"int x, p=&x;",则&p相当于________。
A. p🍵
B. *p
C. x
D. *&x
25.执行语句 printf(" ________ ", 2); 将得到出错信息。
A. %d
B. %o
C. %x
D. %f🍵
26.若要"为读/写建立一个新的文本文件",在fopen函数中应使用的文件打开方式是_______。
A. "w+"
27._是不正确的字符常量。
A. '\n'
B. '1'
C. "a" 🆒
D. '\101'
29.设有以下语句
typedef struct S
{
int g;
char h;
} T;
则下面叙述中正确的是______。
A. 用S定义结构体变量
B. 可以用T定义结构体变量🍵
C. S是struct类型的变量
D. T是struct S类型的变量
30.在C程序中,用________表示逻辑值"真"。
A. 1
B. 非 0 的数🍵
C. 非 1 的数
D. 大于 0 的数
31.若变量已正确定义并赋值,表达式________不符合C语言语法。
A. a*b/c;
B. 3.14%2 🍵
C. 2, b
D. a/b/c
32.在C语言中,如果要从二进制文件中读取数据,可以使用( )。
A. fwrite函数
B. fread函数🍵
C. fgets函数
D. fputs函数
33.在C语言中,对于实型数组,其每个数组元素的类型是________。
A. 实型 🆒
B. 整型
C. 可以为任何类型
D. 不确定
34.在C语言中,用于表示静态变量的关键字是________。
A. static
执行语句:int b,a; printf("%d", (a=2)&&(b=-2)); 后,输出结果是________。
A. 无输出
B. 结果不确
C. -1
D. 1🍵
不会
35.有如下定义类型语句,若从键盘输入数据,正确的输入语句是________。
int x; char y; char z[20];
A. scanf("%d%c%c",&x,&y,&z);
B. scanf("%d%c%s",&x,&y,&z);
C. scanf("%d%c%c",&x,&y,z);
D. scanf("%d%c%s",&x,&y,z); 🍵
36.在C语言中,函数fgets(str, n, fp)的功能是( )。
A. 从文件fp中读取n个字符串,存入str指向的内存空间
B. 将长度为n的字符串str中的内容写入文件fp中
C. 从文件fp中读取长度为n的字符串,存入str指向的内存空间
D. 从文件fp中读取长度不超过n-1的字符串,存入str指向的内存空间🍵
37.默认情况下,标准输入流stdin和标准输出流stdout直接关联的设备是( )。
A. 麦克风和打印机
B. 鼠标和硬盘
C. 键盘和打印机
D. 键盘和显示器🍵
38.如果需要打开一个已经存在的非空文本文件file.txt进行修改,正确的文件打开语句为( )。
A. fp = fopen("file.txt", "r");
B. fp = fopen("file.txt", "ab+");
C. fp = fopen("file.txt", "w");
D. fp = fopen("file.txt", "r+");🍵
39.若文本文件f.txt中原有内容为:good,则运行下面程序后文件f.txt中的内容为( )。
A. goodabc🍵
B. abcd
C. abc
D. abcgood
40.若有以下语句:
FILE *fp;
int x =123;
fp = fopen("out.txt", "w");
41.如果需要将变量x的值以文本形式保存到文件out.txt中,正确的语句为( )。
A. fprintf("%d", x);
B. fprintf(fp, "%d", x);🍵
C. fprintf("%d", x, fp);
D. fprintf("out.txt", "%d", x);
42.若fp是指向某文件的文件指针,且已经读到文件的末尾,则feof(fp)函数的返回值是( )。
A. EOF
B. -1
C. 非零值🍵
D. NULL
43.当文件打开出现错误时,fopen返回的是( )。
A. 没有返回就导致程序退出了
B. 1
C. NULL🍵
D. -1
44.设fp是指向某文件的文件指针,若函数fclose(fp)操作不成功,返回值是( )。
A. NULL
B. EOF🍵
C. 0
D. 1
45.在C语言中,FILE类型由系统定义,保存在( )头文件中。
A. stdio.h

47.下列关于指针定义的描述,________是错误的。
A. 指针是一种变量,该变量用来存放某个变量的地址值的。
B. 指针变量的类型与它所指向的变量类型一致。
C. 指针变量的命名规则与标识符相同。
D. 在定义指针时,标识符前的"*"号表示后面的指针变量所指向的内容。🍵
设整型变量n的值为2,执行语句:n+=n-=n*n; 后,n的值是________。
A. 0
B. 4
C. -4🍵
D. 2
+=计算是从右到左
能正确表示a和b同时为正或同时为负的逻辑表达式是________。
A. (a>=0||b>=0)&&(a<0 ||b<0)
B. (a>=0 && b>=0)&&(a<0 && b<0)
C. (a+b>0) &&(a+b<=0)
D. a*b>0😎
设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句
s=c1==c2; t=c3>c4; 后,s,t的值为:________。
A. 1,2
B. 1,1
C. 0,1
D. 1,0
1和0
c1==c2是比较,返回1(真),c3>c4返回0(假)
所以s=1,t=0
在定义了数组int a[5][6]; 后,第10个元素是 。
A. a[2][5]
B. a[2][4]
C. a[1][3]🍵
D. a[4][2]
下面哪个程序段可以实现将变量u, s中的最大值赋给变量t的功能 。
A. if(u>s) t=u; t=s;
B. t=u; if(t>s) t=s;
C. if(u>s) t=s; else t=u;
D. t=s; if(u>t) t=u; 🍵
若有说明语句:char c='\72'; 则变量c ________。
A. 包含1个字符 🍵
B. 包含2个字符
C. 包含3个字符
D. 说明不合法,c值不确定
'\72'=58,对应ASCII值为58的字符为冒号,字符常量最大为1个字节
sizeof (float) 是________。
A. 一个双精度型表达式
B. 一个整型表达式🍵
C. 一种函数调用
D. 一个不合法的表达式
有两个字符数组 a、b,则以下正确的输入语句是 。
A. gets(a,b);
B. scanf("%s%s",a,b);🍵
C. scanf("%s%s",&a,&b);
D. gets("a"), gets("b");
“字符数组”!!! 数组名“a、b”就表示地址,所以不需要用“&”地址符。B正确。
D选项应该是ges(a);gets(b);
判断 char 型变量 ch 中的字符是否为大写字母的正确表达式是 。
A. 'A' <= ch <='Z'
B. ('A' <= ch) && (ch <= 'Z')🍵
C. ('A' <= ch) & (ch <='Z')
D. ('A' <= ch) AND (ch <= 'Z')
全局变量的作用范围是:________。
A. 整个源文件
B. 主函数内部
C. 整个程序
D. 从定义位置开始到本源文件结束🍵
若有以下定义和语句,且0≤i<10。
int a[]={1,2,3,4,5,6,7,8,9,0};
int *p,i;
p=a;
则对数组元素的错误引用是________。
A. *(a+i)
B. *a[i] 🍵
C. p[i]
D. *(&a[i])
若有定义:int a[5],*p=a; 则对a数组元素地址的正确引用是________。
A. &a[5]
B. p+2🍵
C. a++
D. &a
概念填空题
求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c的值依次为___4__ 、4 、10 、6_____。
用于printf函数的控制字符常量中,代表"横向跳格"的字符常量是___\t___
为读/写建立一个新的二进制文件,在fopen函数中打开文件的参数是wb+
设a=3,b=2,c=1.则a>b>c的值为0
表达式 !!5的值是________。
!在以中叫“取非”运算符,属于逻辑算符,后面只有两种状态,“真”和“假”。“真”被!一下就成了“假”,而“假”被!一下就成了“真”。C又规定非0为“真”,0为“假”。那么!!5=!(!5)=!0=1
存储'A'要占用________个字节。
一个字节=8个二进制位,“A”在内存中表示为“01000001”.“B”为“01000010”……都是一个字节.
在C语言中,头文件的后缀名是.h
C语言中,continue语句的作用是结束本次循环,然后执行下一循环。
C语言中以追加方式打开一个文件应选择“a”参数。
数组名作为实参传递给形参时,是把数组的首地址|||起始地址传递给形参(用文字表示)。
在C语言中,二维数组元素在内存中的存放顺序是按行 存储。
若定义:char c='\010'; 则变量c中包含的字符个数为
因为是‘ ’ ,而不是“ ”,所以肯定不是\0,所以\010理解为八进制,即char c = ‘8’;
若a是int型变量,则下面表达式的值为
(a=4*5, a*2),a+6
(a=45,a2),a+6,括号优先级最高先算括号里,括号里a=45=20即是(20,202),20+6所以结果26你的想法错在括号里(a=45,a2)右边只是a2但是没有再赋值给任何变量如果括号里是
(a=45,a=a*2)就……明白了吧
以0x开头的C整型常数是十六进制数
假设所有变量均为整型,则表达式(a=2,b=5,b+1,a+b)的值是
++运行符如果在变量后面的话,就会先计算这个表达式的值后再运行++运算,而逗号运算符的值就是最后一个表达式的值,所以结果就是2+5=7,但这个表达式运行之后,A=3,B=6,因为表达式的值计算完成之后会执行++运算有关.
判断字符串a和b是否相等,应当使用if (__strcmp____(a,b))(用字符表示)。
若二维数组a有m列,则数组元素a[i][j]前的数组元素个数为
答:如果二维数组a有m列,则a[i][j]元素前的数组元素个数为:(m*i)+j 个元素
本题目计算步骤如下:
1、二维数组a有m列,则每行有m个元素
2、要求的为a[i][j]元素前的数组元素个数,该元素之前有 i 行,即有 i*m 个元素
3、而在该元素本行之前有 j +1-1=j 个元素
4、总元素数量为 (m*i)+j 个元素
答:如果二维数组a有m列,则a[i][j]元素前的数组元素个数为:(m*i)+j 个元素
本题目计算步骤如下:
1、二维数组a有m列,则每行有m个元素
2、要求的为a[i][j]元素前的数组元素个数,该元素之前有 i 行,即有 i*m 个元素
3、而在该元素本行之前有 j +1-1=j 个元素
4、总元素数量为 (m*i)+j 个元素
已知int i=1; 执行语句while (i++<=4) ;后,变量i的值为【6】
若有定义int k= 7,x =12; 则表达式:((x%=k)-(k%=5)) 的值是 【3】
设x,y,z和k都是int 型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为
【32】
1、将4赋值给y
2、将16赋值给z
3、将32赋值给k
4、将k的值赋值给x
[
在C语言中,函数的隐含存储类别是extern 外部类型
将数学表达式a≥b≥c用C语言表达式表示是a>=b&&b>=c
无符号基本整型的数据类型符为unsigned
编写程序语句:以只读方式打开文件名为file.c的文件(路径不要求)fopen("file.c","r")
填空题
1.扩展的ASCII码可以用一个字节表示,可以表示的ASCII码值个数为256
2.计算机硬件系统由、运算器、存储器、输入设备、输出设备五部分组成
20#30
4.下列程序的功能是输出文件example.txt中的________(填写中文)个数。
字符
5.下列程序执行后,文件example.txt中内容是________。
awesome
6.若定义:int a=6; 则执行表达式 a+=a-=a*a; 后a的值为
+=计算是从右到左
a+=a-=aa
先计算a-=aa
a=a-a*a=6-36=-30
再计算a+=-30
a=a+(-30)=-60
结构是不同数据类型的数据集合。作为数据类型,必须先声明结构________,再声明结构变量。
结构类型

浙公网安备 33010602011771号