C语言乘法口诀,清屏 Day01

C语言学习Day01

最简单的乘法口诀实现
#include"stdio.h"
int main()
{
		int i, j;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
}

定义multiply()函数来生成乘法口诀

int multiply()
{
	int i, j;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
	return 0;
}

在这里插入图片描述
添加清屏函数system("cls");
要添加该函数,需要增加头文件#include"stdlib.h"

#include"stdio.h"
#include "stdlib.h"
int multiply()
{
	int i, j;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
	return 0;
}
int main()
{

	multiply();
	printf("输入c清屏");
	int c;
	c = getchar();
	if (c == c) {
		system("cls");
	}

}

有了清屏功能,可以实现一些界面的转换效果。
做个简单的页面转换实验一下

需要退出功能exit()
扩展知识
函数名: exit()
所在头文件:stdlib.h
功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。
stdlib.h: void exit(int status);
参 数 : status //程序退出的返回值.

exit(0):正常运行程序并退出程序。
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。
拓展知识:

  1. return返回函数值,是关键字; exit 是一个函数。

  2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。

  3. return是函数的退出(返回);exit是进程的退出。

  4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。

  5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS(操作系统),这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。

  6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。

拓展知识
C语言中exit()与return的区别
————————————————
版权声明:本文为CSDN博主「春卷同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Rex_WUST/article/details/88372481

在这里插入图片描述scanf函数报错
原因:在ANSI C中没有scanf_s(),只有scanf(),但是scanf()在读取时不检查边界,所以可能会造成内存泄露。于是Microsoft公司在zhidaoVS中提供了scanf_s(),如果想继续使回用scanf这个不安全的函数以下方法可以解决

方法一:在文件顶部添加代码:#pragma warning(disable:4996) 即可

方法二:错误提示的原因在与vs中的SDL检查;关闭步骤答右键单击工程文件–>属性--------> c/c++ ------>所有选项------------> SDL检查选项改为 否

主界面

void Userinterface()
{
	printf("*********欢迎进入数据管理系统*********\n");
	printf("*********登录请按1*********\n");
	printf("*********注册请按2*********\n");
	printf("*********退出请按0*********\n");
	int k;
	scanf_s("%d", &k);
	if (k == 1)
		enter();
	else if (k == 2)
		signin();
	else if (k == 0)
		exit(0);
}

在这里插入图片描述
问题是,整个界面挤在左上角不好看,太丑了吧
经了解,要改变到中间,需要图像模式,需要这个头文件<graphics.h>
但是好像VS没有这个库
暂时先用笨办法

void Userinterface()
{
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	printf("\t\t\t\t\t*********登录请按1*********\n");
	printf("\t\t\t\t\t*********注册请按2*********\n");
	printf("\t\t\t\t\t*********退出请按0*********\n");
	int k;
	scanf_s("%d", &k);
	if (k == 1)
		enter();
	else if (k == 2)
		signin();
	else if (k == 0)
		exit(0);
}

强行安排哈哈哈(就不截图了,太麻烦,自行脑补)
然后简单添加了几个页面

#include"stdio.h"
#include "stdlib.h"
void Userinterface();
void enter();
void signin();
void contral();
int multiply();
void Userinterface()
{
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	printf("\t\t\t\t\t*********登录请按1*********\n");
	printf("\t\t\t\t\t*********注册请按2*********\n");
	printf("\t\t\t\t\t*********退出请按0*********\n");
	int k;
	scanf_s("%d", &k);
	if (k == 1) {
		system("cls"); enter();
	}
	else if (k == 2) {
		system("cls"); signin();
	}
	else if (k == 0) {
		system("cls"); exit(0);
	}
}
void contral()
{
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	printf("\t\t\t\t\t*********查询请按1*********\n");
	printf("\t\t\t\t\t*********插入请按2*********\n");
	printf("\t\t\t\t\t*********删除请按0*********\n");
	printf("\t\t\t\t\t*********输出乘法口诀表请按3*********\n");
	int k;
	scanf_s("%d", &k);
	if (k == 1) {
		system("cls"); enter();
	}
	else if (k == 2) {
		system("cls"); signin();
	}
	else if (k == 0) {
		system("cls"); exit(0);
	}
	else if (k == 3) {
		system("cls"); multiply();
	}
}
int multiply()
{
	int i, j;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
	return 0;
}
 void enter()
{
	 int k, p;
	 printf("\n\n\n\n\n\n\n\n");
	 printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	 printf("\t\t\t\t\t*********请输入账号*********\n");
	 scanf_s("%d", &k);
	 printf("\t\t\t\t\t*********请输入密码*********\n");
	 scanf_s("%d", &p);
	 system("cls"); contral();

}
 void signin()
 {
	 printf("*********请输入密码*********");

 
}
 

int main()
{
	Userinterface();
	

}

还没怎么着呢,就八十多行代码了,不行,这if else太占地方
用case试试

if (k == 1) {
		system("cls"); enter();
	}
	else if (k == 2) {
		system("cls"); signin();
	}
	else if (k == 0) {
		system("cls"); exit(0);
		}

变为

switch (k){
	case 1:system("cls"); enter(); break;
	case 2:system("cls"); signin(); break;
	case 0:system("cls"); exit(0); break;
	}

一下就简单了不少还短了
好了累了,今天做到这。

今天最终代码:

#include"stdio.h"
#include "stdlib.h"
void Userinterface();
void enter();
void signin();
void contral();
int multiply();
void del();
void Userinterface()
{
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	printf("\t\t\t\t\t*********登录请按1*********\n");
	printf("\t\t\t\t\t*********注册请按2*********\n");
	printf("\t\t\t\t\t*********退出请按0*********\n");
	int k;
	scanf_s("%d", &k);

	switch (k){
	case 1:system("cls"); enter(); break;
	case 2:system("cls"); signin(); break;
	case 0:system("cls"); exit(0); break;
	}
}
void contral()
{
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	printf("\t\t\t\t\t*********查询请按1*********\n");
	printf("\t\t\t\t\t*********插入请按2*********\n");
	printf("\t\t\t\t\t*********删除请按3*********\n");
	printf("\t\t\t\t\t*********输出乘法口诀表请按4*********\n");
	printf("\t\t\t\t\t*********退出请按0*********\n");
	int k;
	scanf_s("%d", &k);
	/*if (k == 1) {
		system("cls"); enter();
	}
	else if (k == 2) {
		system("cls"); signin();
	}
	else if (k == 0) {
		system("cls"); exit(0);
	}
	else if (k == 3) {
		system("cls"); multiply();
	}*/
	switch (k) {
	case 1:system("cls"); enter(); break;
	case 2:system("cls"); signin(); break;
	case 3:system("cls"); del(); break;
	case 4:system("cls"); multiply(); break;
	case 0:system("cls"); exit(0); break;
	}
}
int multiply()
{
	int i, j;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
	return 0;
}
 void enter()
{
	 int k, p;
	 printf("\n\n\n\n\n\n\n\n");
	 printf("\t\t\t\t\t***欢迎进入数据管理系统!***\n");
	 printf("\t\t\t\t\t*********请输入账号*********\n");
	 scanf_s("%d", &k);
	 printf("\t\t\t\t\t*********请输入密码*********\n");
	 scanf_s("%d", &p);
	 system("cls"); contral();

}
 void signin()
 {
	 printf("*********请输入密码*********");

 
}
 

int main()
{
	Userinterface();
	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值