当前位置: 代码迷 >> 综合 >> 笔记-day02
  详细解决方案

笔记-day02

热度:0   发布时间:2023-12-06 10:58:36.0

整理笔记 day2
1、用printf函数输出一个字符串时,格式字符%s,输出项可以是此字符串或存放字符串的数组或数组名,这个说法是对的吗?

2、若有以下说明和定义,在必要的赋值之后,对fun函数的正确调用语句是()
A.a=a(w);
B.(*a)(&c);
C.b=*b(w);
D.fun(b);

3、以下程序输出是——
struct HAR
{
int x,y;
struct HAR*p;
}h[2];
int main()
{
h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=&h[1];
h[1].p=h;
printf("%d,%d\n",(h[0].p)->x,(h[1].p)->y);

4、具有很多C语言的功能,又称过滤器的是——
A.Csh
B.tcsh
C.awk
D.sed

5、

`union Test
{
char  a[4];
short b;
};
Test test;
test.a[0]=256;
test.a[1]=255;
test.a[2]=254;
test.a[3]=253;
printf("%d\n",test.b);

问题:在80*84架构下,输出什么值?

6、执行下面程序段,给x,y赋值时,不能作为数据分隔符的是:

int x,y;
scanf("%d%d\n",&x,&y);

A.空格 B.Tab键
C.回车 D.逗号

7、C/C++中,下列选项哪些语句可以正确定义数组的是()
A.#define N 2017
int arr[N];

B.#define N 2017
int arr[N*2];

C.int i=2017;
int arr[i];

D.int arr[ ]={1};

8、有以下语句定义

int x=5;
const int* const p=&x;
const int &q=x;
int const *next=&x;
const int *j=&x;

则有语法错误的是()
A. *p=1;
B. q++;
C. next++;
D.(*j)++;

9、一个算法应该具有“确定性”等五个特征,下面对另外4个特征的描述中错误的是()
A.有零个或多个输入
B.有零个或多个输出
C.有穷性
D.可行性

10、设有定义:char *p,以下选项中不能正确将字符串赋值给字符型指针p的语句是()
A.p=getchar();
B.scanf("%s",p);
C.char s[ ]=“china”;p=3;
D.*p=“china”;

答案解析
1、正确

在C语言中,是将字符串作为字符数组来处理的,所以完全可以用数组名来作为输出项

此处建议查看vector和list的介绍

2、B
A中,a(w)调用正确,但将其返回值赋值给a是错误的,因为返回值是整型数,而a是一个函数指针。C中,因为b是一个返回值为整型数指针的函数,*b(w)本身就是错误的。D中,b后面省略了括号,因为b是函数

3、3,2
h是大小为2的结构体数组,对其两个元素进行赋值后得内存映像如图所示

在这里插入图片描述
4、awk
5、-256

80*86下是小端模式,可以编写下测试就可以了,short占2个字节,设左高地址,右低地址;
a[1]
1111 1111

a[0]
0000 0000
short占用的是a[1]a[0]两个字节,最高位是1是一个负数,在计算机中采用补码表示,那么二进制表示为:
1000 0001 0000 0000转化为10进制

6、D
7、ABD
8、ABD

解析:
p是指针常量,p代表x的值,被定义为常量,不可再赋值。
B、&q是对x变量的引用,但被定义为了常量,故p不再是变量,不能自增
C、若const为于
的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量,故x为常量,不能改变,但是next指向x的地址,next++表示改变地址
D、(j)++表示x的值自增,但是const intj=&x;表示x为常量,不能改变

9、B
10、ABD

*p代表p指向内存的内容,这里用p="china"才正确