其他分享
首页 > 其他分享> > 186-C语言刷题25

186-C语言刷题25

作者:互联网

1.给出以下定义,下列哪些操作是合法的?

const char *p1 ="hello";
char *const p2 = "world";

A.p1++;
B.p1[2] = ‘w’;
C.p2[2] = ‘l’;
D.p2++;

答案:A
p1是指向字符常量的指针,p1本身不是常量,所以p1++合法,A正确,p2本身是指针常量,可以指向非常量的字符,但是"hello"这样声明的字符串是存储在只读存储区的,不可修改,所以B,C错误,p2也是指向字符常量的指针,p2本身是常量,所以p1++不合法,A错误

*2.char s = “\ta\017bc”;指针变量s指向的字符串所占的字节数是多少?

答案:6
’\017’转义字符 ASCII代码值为8进制数17即10进制数15的那个符号

3.三个用户在同一系统中使用同一个编译程序同时对他们的C语言源程序进行编译,此时系统应分别为各用户创建一个C编译进程并各保留一份C编译程序副本,这样的说法正确吗?

答案:不正确
如果三个用户运行同一个程序(编译程序),则系统将创建3个进程,但这3个进程共享C 编译程序的1个副本,而不是3个副本

4.在C语言中,此定义和语句是合法的,请问这句话的说法是正确的吗?

enum aa {
a=5, 
b, 
c
} bb;
bb = (enum aa)5;

答案:正确
enum aa{a=5,b,c} bb;是C语言中定义的枚举类型,意思是:定义aa这个数据类型,其取值范围是a,b,c三个数,其中,a=5,b=6,c=7(如果不给b,c指定数值,就是其前一个数+1),同时定义aa这个数据类型的变量bbbb=(enum aa)5;和你学到的int a = (int)b;功能一样,是把数值5强转成(enum aa)数据类型,同时赋值给变量bb

枚举类型可以向整型自动转换,整型向枚举类型转换需要强制类型转换

5.在C语言中,一个函数一般由两个部分组成,函数首部和函数体

6.auto和register修饰的变量只有在使用时才为该变量分配内存空间

7.fseek(文件类型指针,位移量,起始点)

8.对于下面的代码,哪个是正确的,哪个是错误的?

char * s1 = "Hello world";
char s2[] = "Hello world";
s1[2] = 'E';     // 1
s2[2] = 'E';     // 2
* (s1 + 2) = 'E';  // 3
* (s2 + 2) = 'E';  // 4

答案:s1是一个指针,指向一个常量字符串,这个字符串不能更改,所以1、3错误,s2是一个数组名,里面的数据可以更改,2、4正确

9.以下程序的运行结果是?

#include <stdio.h>
int main(void) 
{
    printf("%s , %5.3s\n", "computer", "computer");
    return 0;
}

答案:computer@,@@com(@表示空格)
%m.ns 表示输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左侧补空格,所以%5.3s 是输出占5列,但只取字符串中左端3个字符,这3个字符输出在5列的右侧,左侧补空格,所以输出的是前三个字符@@com,如果是%5s,5<字符串长度,将会打印全部,如:printf("%5s\n",“abcdefjh”); 结果将是:abcdefjh

10.语句printf(“a\bre\’hi\’y\\bou\n”);的输出结果是re’hi’you,’\b’是退格符,输出时将光标往左边回退一个位置

11.float变量加法不一定满足交换律

标签:aa,25,p1,enum,C语言,char,p2,186,刷题
来源: https://blog.csdn.net/weixin_45964837/article/details/122791973