一、选择题
- 若以下选项中的变量已正确定义,则正确的赋值语句是(D)
A) x1=26.8%3; B) 1+2=x2; C) x3=0x12;
D) x4=1+2=3;
常量不赋值运算
- 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是 (C)
A) x=x100+0.5/100.0 B) x=(x100+0.5)/100.0
C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0
B选项由隐式性格式转换
- 下列C语言中运算对象必须是整型的运算符是 (A)
A) %= B) / C) = D) *=
求模等式两边必须是整形,如果是实型,编译器会报错
- 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 (A)
A) 0 B) 0.5 C) 1 D) 2
除号优先级大于乘号
- 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是 (D)
A) 把x和y按从大到小排列 B) 把x和y按从小到大排列
C) 无确定结果 D) 交换x和y中的值
第一步:把总和赋值给x
第二部:把X的值赋给Y
第三部:把Y的值赋给X
6.以下十六进制数中不合法的是 (A)
A)oxff B)0Xabc C)0x11 D)0x19
A选项是‘o’
- 设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=i<j)&&(b=j>k)&&(c=i,j,k)后,c值是(D)
A)0 B)1 C)2 D)3
小于号的优先级大于等于号的
短路原则(第二个括号内不成立 逻辑与 短路,后续不执行)
所以值不变
- 有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值为( )。
(A)17 (B)17.500000 (C)17.5 (D)16
最后算完,记得最后是以整形变量X接收执行后的值,是有隐式转换
- 若给定条件表达式(M)?(a++):(a–),则其中表达式(M) (C)
A.和(M0)等价 B.和(M1)等价
C.和(M!=0)等价 D.和(M!=1)等价
目前存在争议,希望及时指正
- 以下程序的输出结果是 (D)
short i=65535; printf ("%d\n",i);
A.65535 B.0
C.语法错误,无输出结果 D.-1
11.有变量说明语句int a,b ,c;,顺序执行下面语句: a=b=c=1;
++a||++b&&++c;
那么,变量b的值应是( B)
A.2 B.1 C.0 D.3
++的优先级最高,执行完++后,值非负,逻辑或的短路原则,后面不执行,值不变
- 以下程序的输出为 。
#include<stdio.h> void main( ) {
double x=213.82631; printf("%-6.2e\n",x); }
A.213.82 B.21.38e+01
C.2.14e+002 D.-2.14e2
输出修饰符:“#”,“0”,“-”,“+”,“m”,“n”,“h”,“l”
#:表示自带格式方式输出,八进制十六进制用,“%#o”,“%#x”
0:输出域宽不足时自动补零
-:左对齐/输出过程对于负数自带负号
+:右对齐/输出过程对于正数自带正号
m.n: m:输出过程中的数据宽度
n:输出过程中小数点后有效位/字符串中的输出个数
h:短整型
l:长整形
结合本题:“-”表示左对齐,“6”表示域宽,“.2”表示小数点后两位有效字符“e“表示科学记数法输出
只剩下B,C科学记数法一般是C的形式,不会整数位剩下两个数
- 下列关于单目运算符+ +、- -的叙述中正确的是 (D)
A)它们的运算对象可以是任何变量和常量
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D)它们的运算对象可以是char型变量、int型变量和float型变量
知识点:除“字符串”,“常量”之外的形式基本都可以++。--运算
- 若有以下变量说明和数据的输入方式,则正确的输入语句为( B )。
变量说明:float x1,x2; 输入方式:4.52<回车> 3.5<回车>
A)scanf (“%f,%f”,&x1,&x2);
B)scanf (“%f%f”,&x1,&x2);
C)scanf (“%3.2f %2.1f”,&x1,&x2);
D)scanf (“%3.2f%2.1f”,&x1,&x2);
没啥好解释的好像
- 下面程序的运行结果是( )。
#include <stdio.h> #define DATA 20+7 void main( )
{
printf(“DATA=%d”,DATA/3); }
A)DATA=22 B)DATA=21
C)DATA=9 D)以上都不对
宏定义只是做替换,过程中不做任何运算
- 有以下程序
#include <stdio.h>
void main( )
{ int x=102,y=012;
printf(“%2d,%2d\n”,x,y); }
执行后输出结果是 ()
(A)10,01 (B)02,12
(C)102,10 (D)02,10
”y = 012“这里y是八进制数字,要转换过后才能进行运算
17.量a是int类型,并执行了语句:a= ’ A ’ +1.6;,则正确的叙述是 。
(A)a的值是字符C
(B)a的值是浮点型
(C)不允许字符型和浮点型相加
(D)a的值是字符'A'的ASCII值加上1
因为接收数据的a是整型数据,所以1.6转为整形数是1,计算机里是'A'的ascii码加一
18.下列符号中,不属于转义字符的是 。
(A)\ (B)\x12 (C)\013 (D)\05
‘\’不属于转义字符
19语句:printf("%03d,%-3d\n",4,5);的输出为 ()
(A)004,5 (B)004,5
(C)4,5 (D)4,5
”%03d“ :
打印前面三位,不够用零补
”%-3d“ :
左对齐,域宽为3
20.有以下程序段:
#include <stdio.h> void main() {
int a=2,b=5;
printf(“a=%%d,b=%%d\n”,a,b); }
其输出结果是 (D)
A) a=%2,b=%5
B) a=2,b=5
C) a=%%d,b=%%d
D) a=%d,b=%d
printf里面用两个%打印 一个 %
两个/打印一个/
21若变量c定义为float类型,当从终端输入283.1900 (代表回车键),能给变量c赋以283.19的输入语句是 (D)
A)scanf(“%f”,c); B)scanf(“%8.4f”,&c);
C)scanf(“%6.2f”,&c); D)scanf(“%8f”,&c);
22设有如下程序段
int x=2002,y=2003; printf("%d\n",(x,y));
则以下叙述中正确的是 (D)
A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B)运行时产生出错信息
C)输出值为2002
D)输出值为2003
逗号运算符,直接看最后面,后面如果和前面的表达式有关系再
算前面的
23以下程序的输出结果是 。
#include <stdio.h> void main()
{
int i=010,j=10;
printf("%d,%d\n",++i, j–);
} (B)
A)11,10 B)9,10 C)010,9 D)10,9
24下面的程序 ()
#include <stdio.h> void main( ) {
int x=3,y=0,z=0;
if(x=y+z)
printf("* * * *");
else
printf("# # # #"); }
A)有语法错误不能通过编译
B)输出 * * * *
C)可以通过编译,但是无法连接,因而不能运行
D)输出# # # #
+号的运算符再=号之上
25.已知i、j、k为 int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是 (C)
A) scanf("%2d%2d%2d", &i, &j, &k);
B) scanf("%d %d %d", &i, &j, &k);
C)scanf("%d,%d,%d", &i, &j, &k);
D)scanf(“i=%d,j=%d,k=%d”, &i, &j, &k);
26.已知char a; int b; float c; double d; 则表达式a+b * c-d的结果为___D____型。
A)char B)int C)float D)double
向最大的数据类型靠近
- 若x、a、b、c均 为int型变量,则执行表达式x= (a = 4, b = 8, c = 12)后,x的值为____C___。
A)4 B)8 C)12 D)24
逗号运算符,只看最后
28、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处代表换行,代表空格):D
1 2
A B C
则能给X赋整数1,给Y赋数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()
A) scanf(“x=%d y=%d”,&x,&y); a=getchar(); c=getchar();
B) scanf("%d%d",&x,&y); a=getchar(); b=getchar(); c=getchar();
C) scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
D) scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
scanf接受字符型时,用%c再接收”空格“和'\n'
二、填空题
1、如果想输出字符“%”,则应该在“格式控制”字符串中用_%%_表示。
2、printf函数的“格式控制”包括两部分,他们是 格式说明 和_普通字符 。
3、符号’&’是___按位与或取址___运算符,&a是指_取a的地址.
4、goto语句的主要用途是 .
5、while语句的特点是 先判断条件再循环 ,do-while语句的特点是 先循环在判断循环条件 。
6、分析下面程序
main()
{ int x,y;
x=16;y=(x++)+x; printf(“%d ”,y);
x=15;printf(“%d,%d ”,++x,x);
x=20;y=x--+x; printf(“%d ”,y);
x=13;printf(“%d,%d”,x++,x);
}
程序的输出结果是__32 16,15 40_13,13__。
7、下列程序的输出结果是__GFEDCB__:
#include”stido.h”
main()
{ char b[]=”ABCDEFG ”;
char *chp=&b[7];
while(–chp>&b[0])
putchar(*chp);
putchar (‘\n’);
}
三、编程题:
1、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321).
#include <stdio.h>
int main(int argc, char *argv[])
{
int num = 0;
loop: printf("请输入一个三位数\n");
scanf("%d",&num);
if(num >= 100 && num <= 1000)
{
printf("%d%d%d\n",(num/1)%10,(num/10)%10,(num/100)%10);
}
else
{
printf("请按照要求输入\n");
goto loop;
}
return 0;
}
2、输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 0,b = 0,c = 0;
int jiflag = 0,ouflag = 0;
printf("输入三个整数,用以判断\n");
scanf("%d %d %d",&a,&b,&c);
(a % 2 == 0)?(ouflag += 1) : (jiflag += 1);
(b % 2 == 0)?(ouflag += 1) : (jiflag += 1);
(c % 2 == 0)?(ouflag += 1) : (jiflag += 1);
(jiflag == 2 && ouflag == 1) ? (printf("YES\n")) : (printf("NO\n"));
return 0;
}
~

这篇博客主要介绍了C语言中的运算符和输入输出操作。内容涵盖选择题,涉及赋值语句、浮点数处理、整型运算符、算术运算以及I/O操作。还讲解了转义字符、格式化输出和变量类型的转换规则。
448

被折叠的 条评论
为什么被折叠?



