网协安全组二面试题

二面题链接
二面题链接

一、算法题

1.棋盘问题

设有一个N×M方格的棋盘(1≤N≤100,1≤M≤100)

求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。

例如:当 N=2, M=3N=2,M=3时:

正方形的个数有8个:即边长为1的正方形有6个;

边长为22的正方形有2个。

长方形的个数有10个:

2×1的长方形有4个
1×2的长方形有3个:
3×1的长方形有2个:
23×2的长方形有1个:

如上例:输入:2,3
输出:8,10

#include<stdio.h>
int main(void)
{
	int m,n,zheng,chang,bi,i,j;
	zheng=chang=0;
	scanf("%d,%d",&m,&n);
	bi=(m>n)?n:m;
	for(i=0;i<bi;i++)
		zheng=zheng+(m-i)*(n-i);
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			chang=chang+(m-i)*(n-j);
	chang=chang-zheng;
	printf("%d,%d",zheng,chang);
	
	return 0;
}

2、倒计时

设计一个倒计时的程序。

#include<stdio.h>
int main(void)
{
	int fen,miao,i,j;
	scanf("%d %d",&fen,&miao);
	for(i=fen;i>=0;i--)
		for(j=miao;j>=0;j--)
		{
			printf("%02d:%02d\n",i,j);
			miao=60;
		}
		
		return 0;	
}

二、C语言基础

代码问题

1、找出下面代码的问题

#include<stdio.h>
char *f();
int main(void)
{
	f();
	return 0;
}
char *f()
{
	char s[]="hello,world!";//需要声明为static char s[]=
	return s;
}

三、读代码

阅读下面语句,写出输出结果

1.执行语句printf(“%c”,‘A’+32);屏幕显示____(“a”)
A的ASC2是65 ,a的ASC2是97,在这里将A作为65与32做加法运算,然后将97对应的字符输出,就是a。
2.执行语句printf(“%d”,-1 > sizeof(int));屏幕显示____(“1”)
sizeof的返回值是无符号数,-1是有符号数,计算机先将有符号数转化为无符号数再进行比较,-1转化为无符号数时由于溢出,结果为4294967295,比4大所以-1 > sizeof(int)的值为真(1)。
3.执行语句printf(“%x”,-1);屏幕显示____(“ffffffff”)
%x输出的是十六进制的无符号数,-1转化为无符号数后因为溢出故结果为ffffffff。
4.执行语句printf(“%d”,!9);屏幕显示____(0)
c语言中非零为真,9代表真,!9代表假(0)。
注意:sizeof()和strlen返回的都是无符号长整型,格式控制符%lu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值