建设网站流程图,网站seo置顶,从化商城网站建设,邢台网络运营中心1.选择#xff1a; 1.使用printf函数打印一个double类型的数据#xff0c;要求#xff1a;输出为10进制#xff0c;输出左对齐30个字符#xff0c;4位精度。以下哪个选项是正确的#xff1f;
A.%-30.4e B.%4.30e C.%-30.4f D.%-4.30 在上一篇文章中#xff0c;提到了…1.选择 1.使用printf函数打印一个double类型的数据要求输出为10进制输出左对齐30个字符4位精度。以下哪个选项是正确的
A.%-30.4e B.%4.30e C.%-30.4f D.%-4.30 在上一篇文章中提到了对于打印字符串时其打印模板%中各个字母的含义对于表示输出的字符串的宽度对于表示在打印时打印左起字符串的前个字符。并且是右对齐且字符不足时会自动补充空格。当字符串长度时失效当字符串长度时直接打印到结尾。 对于本题则是考察对于数字的打印格式。对于打印十进制的采用的格式是%
对于题目中的%是表示按照指数类型打印。 对于对齐问题主要由控制表示右对齐打印个字符。但是题目中要求左对齐因此需要采用的形式。对于主要用于控制打印精度即表示打印到小数点的后位。 因此对于本体题目要求对应答案 2.请找出下面程序中有哪些错误
int main(){ int i 10; int j 1; const int *p1;//(1) int const *p2 i; //(2) p2 j;//(3) int *const p3 i;//(4) *p3 20;//(5) *p2 30;//(6) p3 j;//(7) return 0;
} A.1,2,3,4,5,6,7
B. 1,3,5,6
C.6,7
D.3,5
在正式讲解题目之前首先需要介绍两个概念即指针常量、常量指针。
对于常量指针表示指针指向的内容是常量内容因此指针指向的内容不能被修改也就是说不能通过解引用的方式来改变指针指向的内容但是可以改变指针本身的指向。 对于指针常量表示指针本身就是一个常量指针的指向不能发生更改但是可以通过解引用的方式改变空间中内容。
而对于如何区分指针常量和常量指针可以通过和的相对位置来判断。
例如对于题目中的因为在前面所以表示常量指针即指向的内容不能通过解引用进行修改但是的指向可以修改。
对于题目中的表示常量指针与不同的是,此处进行了对于指针的初始化。
对于题目中的表示改变指针的指向由于是常量指针故正确。
对于题目中的此时在前面表示指针常量即指针是一个常量指针的指向不能被更改但是指向的内容可以修改。
对于题目中的表示对指针解引用更改指针指向的内容由于是一个指针常量因此可以更改指针指向的内容。正确。
对于题目中的表示对指针解引用修改指向的内容由于指针式常量指针即指针指向的内容是常量可以修改指针的指向但是不能更改指针指向的内容因此错误。
对于题目中的表示更改的指向由于指针是指针常量因此指针指向不能被改变所以错误。
因此答案选择 3.下面叙述错误的是
char acX[]abc;
char acY[]{a,b,c};
char *szXabc;
char *szYabc;
A.acX与acY的内容可以修改
B. szX与szY指向同一个地址
C.acX占用的内存空间比acY占用的大
D. szX的内容修改后szY的内容也会被更改 对于代码的前两行都是创建一个常量字符串只不过采取的放肆不同不过需要注意在第一行代码中由于是一个完整的字符串因此在字符串的末尾带有字符串的结束标志\0。但是第二行代码中并不存在这个结束标志因此对于选项的大小大于的大小。 对于选项可以通过数组下标进行更改正确。 对于选项由于两个指针指向的内容相同因此正确。 对于选项需要注意题目说的是改变指针的内容也就是修改指针指向的地址并不是修改其指向的内容。所以错误。
因此选择 4.在头文件及上下文均正常的情况下下列代码的运行结果是
int a[] {1, 2, 3, 4};int *b a;
*b 2;*(b 2) 2;
b;printf(%d,%d\n, *b, *(b 2));
A.1,3
B. 1,2
C.2,4
D.3,2
对于上述代码首秀按创建了一个指针指向了数组的起始地址。随后对于需要注意由于的结合优先级高于因此这句代码表示的含义是解引用拿到数组中第一个数随后对这个数因此此时的数组为
int a[] {3, 2, 3, 4};
对于则是表示针对指针的地址进行加由于指针的类型为因此表示跳过字节对跳过后的地址进行解引用再将这个值修改为。因此此时的数组为
int a[] {3, 2, 2, 4};
对于表示修改指针使得其指向数组中的第二个元素的地址。
因此再打印时指针指向数组中第二个元素的下标此时进行打印打印的值分别为答案选择。 5. 用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
A. int *a[10];
B. int (*a)[10];
C. int (*a)(int);
D. int (*a[10])(int); 本题目涉及到了三个概念数组指针指针数组函数指针对于数组指针。对于前二者的判断只需要知道的结合优先级大于即可。
例如对于选项由于结合性问题因此首先表示一个数组数组的容量为其中保存了个类型的变量因此表示指针数组。
对于选项首先表示一个指针这个指针指向了一个数组数组可以存储个类型的变量因此是数组指针。
对于选项表示一个指针外部的括号是函数指针的标志因此表示一个函数参数为一个整型参数。返回值类型为
对于选项首先表示一个数组这个数组存储的变量为指针且指针为函数指针返回值为整型参数为一个整型参数所以答案选择 6.在32位cpu上选择缺省对齐的情况下有如下结构体定义 struct A
{
unsigned a : 19;unsigned b : 11;unsigned c : 4; unsigned d : 29;char index;
};
则sizeofstruct A的值为
A.9 B. 12 C.16 D.20 需要注意此时的变量是以位断的形式定义的冒号后面的数组表示这个变量占有多少比特位。 对于一个类型的变量大小为字节因此会开辟字节即比特位大小的空间由于占有的比特位小于因此对于二者只会开辟一次字节大小的空间。 对于由于此时第一次开辟的空间大小不足因此会在开辟字节大小的空间。对于由于此时的空间再次不足因此会第三次开辟字节空间。 对于由于类型不同因此会再开辟字节的空间。 最后因为存在内存对齐机制因此总空间大小必须是最大对齐数的整数倍因此答案选择。 7.下面代码会输出()
int main(){ int a[4]{1,2,3,4}; int *ptr(int*)(a1); printf(%d,*(ptr-1));
}
A.4 B. 1 C.2 D.3
对于数组名如果于结合则表示整个数组其他情况下均表示数组首元素地址。因此此处的,表示跳过整个数组长度的内容。即数组最后一个内容的下一个位置。对于,由于指针的类型因此为指向前四个字节的内容也就是指向数组的最后一个元素的地址。因此选择 2. 编程
2.1 倒置字符串
倒置字符串_牛客题霸_牛客网 (nowcoder.com) 原理较为简单首先将给定的字符串整体进行逆置例如对于图中给出的字符串整体逆置后如下 对于本题可采用双指针法进行解决。具体解法如下 创建两个指针分别为在最开始两个指针均指向字符串的开头。这里由于使用类创建一个对象用于存放字符串因此。 建立循环循环的条件是 如果的位置不指向字符串的结束位置即最后一个字符的下一个位置。并且对于即不等于空则让指向下一个位置。 如果则将两个指针区域内的字符串再次逆置。在逆置后这里有两种情况一是则令再令即可。如果则表示已经将整个字符串遍历结束直接令即可。此时循环结束输出字符串即可。对应代码如下
#include iostream
#includestring
#includealgorithm
using namespace std;int main()
{string s1;getline(cin,s1);reverse(s1.begin(),s1.end());auto start s1.begin();while(start ! s1.end()){auto end start;while(*end ! end ! s1.end()){end;}reverse(start,end);if(end ! s1.end()){start end1;}else {start end;}}cout s1;return 0;} 2.2 排序子序列
排序子序列_牛客笔试题_牛客网 (nowcoder.com) 在给出题解之前首先解释以下题目中提出的两个概念即非递增序列非递减序列。
对于非递增序列可以看作不严格的递增序列即存在前后相等元素的递增序列例如 对于非递减序列可以看作不严格的递减序列即存在前后相等元素的递减序列例如 对于本题目的解法首先利用实例化出对象来接收输入元素利用变量接收输入元素数量 如果则表示数组进入了非递增序列。 如果则表示数组进入了非递减序列 对于的情况指向下一个元素即可。不做处理 如果数组进入了上述序列需要继续判断如果出现了相反的情况例如在非递增序列中出现了则表示这部分的数据不再满足非递增性此时前面的数据构成了一个完成的非递增序列因此让记录排序子序列数量的变量再令,作为另一种序列的首个元素。如果没有出现相反的情况则表示目前数据依旧满足非递增行需要检测下一个数据再令即可。 不过对于条件的判断需要注意对于下面的情况因为上面给出的序列是一个递增序列因此当时此时然后令此时,对于会造成越界访问的问题。为了方便的解决这个问题可以在实例化出对象后利用函数扩容数量的空间并且将这些空间初始化为。具体代码如下
#include iostream
#includevector
using namespace std;int main() {int n 0;cin n;vectorint v;v.resize(n1,0);for( int i 0; i n; i){cin v[i];}int count 0;int i 0;while( i n) {//进入非递减if( v[i] v[i1]){while( i n v[i] v[i1]){i;}count;i; }else if( v[i] v[i1]){i;}else{while( i n v[i] v[i1]){i;}count;i;}}cout count;return 0;}