算法题

棋盘问题

设有一个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;
}

倒计时

设计一个倒计时的程序。

#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

❤️ 转载文章请注明出处,谢谢!❤️