C++面试题(2)

1.输入一个n ,然后在屏幕上打印出NxN 的矩阵!

例如,输入一个3,则
1 2 3
8 9 4
7 6 5
输入一个4,则
1   2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

解:

#include <iostream>
#include<iomanip>
using namespace std;
int temp,m[30][30]={0,};
void Helix(int min,int max)
{    
 for(int i=min;i<max;i++)
 {
    m[min][i]=temp+i-min;
    m[i][max]=temp+(max-min)+i-min;
    m[max][i+1]=temp+3*(max-min)-(i-min+1);
    m[i+1][min]=temp+4*(max-min)-(i-min+1);
}
temp+=4*(max-min);    
}
int main()
{        
while(1)
{
    int N,min(0),max;
    cout<<" 输入螺旋矩阵的行列数N(1~20),输入字母 退出:";
    cin>>N;        
    if(N<1 || N>30)
        break;
    max=N-1;
    temp=1;
    if(N%2==1)
        m[N/2][N/2]=N*N;
    for(int i=0;i<N/2;i++)
        Helix(min++,max--);
    for(int k=0;k<N;k++)
    {
        for(int j=0;j<N;j++)
            cout<<setw(3)<<m[k][j]<<' ';
        cout<<endl;
    }
}
system("pause");
return 0;
    
}

2.如何打印出当前源文件的文件名以及源文件的当前行号?

 cout <<"FILE:"<<__FILE__<<endl
   <<"Line:"<<__LINE__<<endl
   <<"Time:"<<__TIME__<<endl
   <<"Date:"<<__DATE__<<endl;
3.如何判断一段程序是由C编译程序还是由C++编译程序编译的?

答:

1.检测头文件是否有iostream等使用类功能的文件头
2.检测是否有class等c++专用关键字
3.检测是否有两个同名函数(C++的重载)
4.关于注释,除了TC不支持//注释外,其它的C/C++编译器都支持
5.#ifdef   _cpluscplus这个也算一个标志
6.查看函数参数是否有引用&符号,这个也算C++一特征
7.c编译定义了: __STDC__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值