C语言一道题 求详解!

2024-05-16

1. C语言一道题 求详解!

单个字符进行算术运算时,实际上是用其ASCII码值进行运算,所以当以十进制输出结果时输出的是字符对应的ASCII码值,而以字符输出的时候就是字符
char
a='a';
//此时a
为字符'a'
十进制代码为97
a--;//执行完毕后,a十进制代码为96
printf("%d,%c\n",a+'2'-'0',
a+'3'-'0');
先执行a+'3'-'0'
=
a
+
3
=
96+3
=99
,此时a为字符'c'
再执行a+'2'-'0'
=
a+2
=
96+2
=98,此时a为字符'b',十进制值为98
故而打印的结果为:
98
c

C语言一道题 求详解!

2. 求教C语言的一道题!谢谢!

a*a=144,a-=a*a时a=12得到a=-132,a+=()此时,()=-132,a=-132,最后a =-264

3. C语言习题,请高人指导解答!

1.  sizeof(float)是(B)。

    A. 双精度型表达式

    B.一个整型表达式

    C. 一个函数调用

    D. 一个不合法的表达式

      满分:5  分

2.  对于条件表达式(M)?(a++):(a--),其中的表达式M等价于(B)。

    A. M==0

    B. M==1

    C. M!=0

    D. M!=1

      满分:5  分

3.  若有定义:intx=7;floata=2.5,b=4.7;则表达式a+x%3*(int)(a+b)%2/4的值是(A)。

    A. 2.5

    B. 2.75

    C. 3.5

    D. 0

      满分:5  分

4.  下面四个选项中,均是C语言关键字的选项是(B)。

    A. auto enumin clude

    B. switch typedef continue

    C. signedunionscanf

    D. if struct type

      满分:5  分

5.  下列关于switch语句和break语句的结论中,只有(B)是正确的。

    A.break语句是switch语句的一部分

    B. 在switch语句中可以根据需要使用或不使用break语句

    C. 在switch语句中必须使用break语句

    D. "以上三个结论有两个是正确的"

      满分:5  分

6.  在x值处于-2到2,4到8时值为“真”,否则为“假”的表达式是(全都不是)。

    A. (2>x>-2)||(4>x>8)

    B. ((x=2)||((x>4)||(x>=8))

    C. (x=-2)(x>4)(x<8)

    D. (x>-2)(x>4)||(x<8)(x<2)

      满分:5  分

7.  以下是正确的C语言标识符是(B)。

    A. #define

    B. _123

    C. %d

    D. \n

      满分:5  分

8.  以下叙述中不正确的是(B)

    A. 在C程序中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

    B. 在C程序的函数中,最好使用全局变量

    C. 在C程序中,形参只是局限于所在函数

    D. 在C程序中,函数名的存储类别为外部

      满分:5  分

9.  已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为(B)。

    A. D

    B. 68

    C. 一个不确定的值

    D. C

      满分:5  分

10.  若有定义:intA[3][4];能表现数组元素A[1][1]的是(没有!C有点像,是不是写错了?(*(A+1))[1]正确)

    A. (A[1]+1)

    B. *(A[1][1])

    C. (*(A+1)[1])

    D. *(A+5)

      满分:5  分

11.  设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是(B)。

    A. 0~255

    B. 0~65535

    C. -32768~+32767

    D. -256~+255

      满分:5  分

12.  若x为float型变量,则以列程序段结果是(B)x=1234.6789;printf(“%-2.1f”,x);

    A. 输出格式描述符的域宽度不够,不能输出

    B. 输出为1234.7

    C. 输出为1234.6

    D. 输出为-1234.6

      满分:5  分

13.  下面四个选项中,均是合法转义字符的选项是(A)。

    A. \'' '\\' '\n'

    B. "\''\017''\""'"

    C. \018''\f''xab'

    D. \\0''\101''xlf'

14.  有两个字符数组a、b,则以下正确的输入语句是(没有正确的)。

    A. gets(a,b);

    B. "scanf(""%s%s"",a,b);"

    C. "scanf(""%s%s"",a,b);"

    D. "gets(""a""),gets(""b"");"

15.  下列四组选项中,均不是C语言关键字的选项是(A)。

    A. define IFtype

    B. get cchar printf

    C. include scanf case

    D. whilegopow

C语言习题,请高人指导解答!

4. C语言试题啊,求大神帮忙答案啊!

题号:1
以下正确的说法是( )
选项:
     a、用户若需要调用标准库函数,调用前必须重新定义
     b、用户可以重新定义标准库函数,若如此,该函数将失去原有意义
     c、用户系统根本不允许用户重新定义标准库函数
     d、用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动寻找该文件
本题答案为d,无论是标准库函数还是什么函数,都是函数,都允许用户重新定义和使用,使用的时候只需要用#include 包括进来就可以了,也就是预编译命令。其中#include就是预编译命令。


题号:2
以下正确的函数定义形式是( )
选项:
a、double fun(int x,int y)
b、double fun(int x
c、int y)
d、double fun(int x,int y)
e、doubel fun(int x
f、int y)
函数的定义规则是这样的: (函数参数用逗号隔开){函数体}
函数声明的规则是这样的: (函数参数用逗号隔开);
综上所述,该题没有正确答案,唯一接近正确答案的为ad。

题号:3
以下不正确的说法为( )
选项:
a、在不同函数中可以使用相同名字的变量
b、形式参数是局部变量
c、在函数内定义的变量只在本函数范围内有效
d、在函数内的复合语句中定义的变量在本函数范围内有效
C中有一个关键字为extern,专门把局部变量转为全局变量,所以C是错误的。
本题答案为C
 
题号:4
建立函数的目的之一,以下正确的说法是( )
选项:
a、提高程序的执行效率
b、提高程序的可读性
c、减少程序的篇幅
d、减少程序文件所占内存

本题答案为a,
函数的增加,
b会使得程序的可读性增加,这个可以理解,模块化了,当然可读性增加了
c,多次调用一个函数即可,不用重复的写代码,这个也可以理解
d,重复的代码既然少了,整个程序的大小自然也小了,当然减少了程序文件所占的内存
至于a的效率提高了,这个不对,因为函数多了,会频繁的进行压栈出栈的操作,加大cpu的工作负荷,整个程序的效率变低了。

题号:5
C语言规定,函数返回值的类型是由( )所决定。
选项:
a、return语句中的表达式类型
b、调用该函数时的主调函数类型
c、调用该函数是系统临时指定
d、在定义该函数时所指定的函数类型
这个可以参考第二题,函数的定义规则,当然是由定义的时候确定的了。
本题答案为d。

题号:6
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )
选项:
a、auto
b、static
c、extern
d、register
这个题目容易,没有指定当然是自动指定的了。
本题答案为a。
另外一个小知识,我们平常看到的int a,b,c;实际上省略了auto,全部应该是 auto int a,b,c;

题号:7
以下程序的运行结果是( )void sub (int x,int y,int *z){*z=y-x;}main(){int a,b,c;sub
(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d",a,b,c);}
选项:
a、5, 2, 3
b、 -5, -12, -7
c、 -5, -12, -17
d、 5, -2, -7

void sub (int x,int y,int *z)
{
    *z=y-x;
}
main()
{
    int a,b,c;
    sub(10,5,&a); 执行完这句a的值为-5;
    sub(7,a,&b);执行完这句b的值为-12;
    sub(a,b,&c);执行完这句c的值为-7
    printf("%4d,%4d,%4d",a,b,c);
}
答案为b;

题号:8
若用数组名作为函数调用的实参,传递给形参的是( )
选项:
a、数组的首地址
b、数组第一个元素的值
c、数组中全部元素的值
d、数组元素的个数
本题答案为a
数组名为数组的首地址,也是数组第一个元素的值的地址。数组名是一个地址。

题号:9
若使用一位数组名作为函数实参,则以下正确的说法是( )
选项:
a、必须在主调函数中说明此数组的大小
b、实参数组类型与形参数组类型可以不匹配
c、在被调函数中,不需要考虑形参数组的大小
d、实参数组名与形参数组名必须一致

本题答案为a,
必须在主调函数中定义该数组的大小。也就是该数组大小应该被提前设定好。
int a[10]可以作为参数,int a[x]不可以作为参数。

题号:10
如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是( )
选项:
a、只在该复合语句中有效
b、只在该函数中有效
c、在本程序范围内均有效
d、为非法变量
答案为

5. 请教两道C语言的题目!

此题的正确答案不应该是C而应该是D。因为y的最大长度为8,sizeof(y)自然是8,向y里拷进8个字符后就把'\0'覆盖了,这个字符串就没有了结束符'\0',所以strlen(y)大于等于8的任何数都是可能的。
此题的正确答案应该是A.1而不是B.2。因为两个4字节的变量紧挨着,地址相差就是1。但有个情况要说明一下:在16位机中,int是2字节,如果编译器的所谓“对齐”方式也是4的话(我还真不知道16位机的变量存放对齐方式是不是4)那就是B.2;这个可以把f函数改成int f(short a, short b)来验证,因为32位机的short是2字节,而对齐方式又是4。

请教两道C语言的题目!

6. C语言题目求解!

对于这类问题,单从语法上分析,程序执行情况会有所不同,
char **pstr;定义的是一个char类型的二级指针;赋值的条件是类型相同,或者类型之间可以自动转换
则有
1)*pstr,用*解除了一级指针,故*pstr是一个指向char类型的指针。即有*pstr类型是char *,与,"hi"它的类型是char [],它可以转换成char *,可以赋值。
同char *p,a[5];p=a类似;语法上说它是对的
2)pstr是一个二级指针,它的类型是char **,"hi"它的类型是char [],它可以转换成char *,但显然char **与char*之间不能相互转换,故其实错误的。
3)**pstr,用**解除了指针,它就是char类型的,与2)同理,char 与 char[]或char *显然是不能相互转换,故其实错误的

7. C语言高手帮忙做这三道题,要详解 谢谢拉!!

1、A
while()是判断括号里的是真还是假,若表达式为0,就是假,若表达式非0,就是真。"!"是非逻辑运算符,简单说就是把非0变成0,把0变成1。。。
"while(!x)”就是"(!x)"取真是进行循环,就是"!x"的值为非0时,就是"x"的值为0时。所以就是x==0.

2、C
这题和上题一样,就是(m)表达式为真时,执行a++;为假时,执行a-。
表达式m的真假与表达式m!=0一样,所以选C。

3、C 
#define是宏定义,这里的效果就是把s(m,n)替换成m/n,所以s(4+2,2+1)进行替换后就成了4+2/2+1=4+1+1=6。所以选C

C语言高手帮忙做这三道题,要详解 谢谢拉!!

8. 一些C语言题目!求高手答疑!谢谢了!!!

我不是高手,但是我也把我的想法说出来看看。
1,int和char虽然可以转换,但是如果互相转换了,想得到的原值就不一样了。
2,第一条语句语法上应该是错误的;第二条把float类型的f模以int类型的i后,把他们的结果转换成(int)
3.double是占8个字节,folat和int都占4个字节,char占一个字节,所以double比她们高位,所以低位向高位进行自动类型提升、
4。
//输出以下结果
4,2
Press any key to continue
我输出的就是4,2
在括号中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
例如:
int a,b,c;
如果这样 c=a,b;,c是a,如果是这样c=(a,b),c就是b 
所以(x--,--y)是4
而x++是输出printf后再执行的,所以是2
5,(!x || y--),!x说明第一个是假了,x才是真,所以会判断下一个,y=1,所以或表达式中有一个语句是true,即整个表达式的逻辑值为true,所以你输出的是整个式子的逻辑值,1表示true,注意,y--是等整个式子运算完后再--不等同于--y;