[c++]牛客刷题记录2.18

1.c++标签使用

#include<iostream>  
using namespace std;  
int main()  
{  
    http://www.csdn.net  
    cout<<"hello world!"<<endl;  
    return 0;  
}  

这里运行不会报错,http:作为标签label的使用,可以实验goto http;跳转到这里,进行cout语句。

 1 //例子
2 for(int i = 0; i <= 100; i++) 3 { 4 cout < <"Hello:" < <i < <endl; 5 if(i == 4) 6 { 7 goto case; 8 } 9 } 10 11 //中间可以有很多代码 12 13 case: cout < <"Case" < <endl; //这是一个标签 14 15 输出结果: 16 Hello 1 17 Hello 2 18 Hello 3 19 Hello 4 20 Case

来源参考:http://blog.csdn.net/szchtx/article/details/21647159

2.scanf的引用要求和数组的地址

有定义语句:
int b;
char c[10];
则正确的输入语句是______。 B   
scanf("%d%s",&b,&c);
scanf("%d%s",&b,c);
scanf("%d%s",b,c);
scanf("%d%s",b,&c);

解释:scanf需要引入变量地址,变量b的变量地址为&b(取址符+变量),而c[10]是数组,因此c就是数组的地址。
   如果引用c就是对c起一个别名,c内存储的地址还是数组的首地址。
   A也可以,但是优先选B。


3.CPU Cache预读效率
   x是一个行列数均为1000二维数组,下面代码效率执行最高的是(D)
for(int j=0;j<1000;j++) for(int i=0;i<1000;i++) x[i][j]+=x[j][i];
for(int i=0;i<1000;i++) for(int j=0;j<1000;j++) x[i][j]+=x[j][i];
for(int i=0;i<1000;j++) for(int j=0;j<1000;j++) x[j][i]+=x[j][i];
for(int i=0;i<1000;i++) for(int j=0;j<1000;j++) x[i][j]+=x[i][j];

   解释:因为cache会预读当前页的后几页,如果命中,就会继续预读后面的页面,加快速度。

    因为数组的预读是逐行预读的,所以D的情况最快,而其他几个选项有跳列的情况。

 来源:http://blog.sina.com.cn/s/blog_6237dcca0100ffxu.html


原文地址:https://www.cnblogs.com/Faiz-room/p/6412028.html