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():返回函数,若在主函数中,则会退出函数并返回一值。
拓展知识:
-
return返回函数值,是关键字; exit 是一个函数。
-
return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
-
return是函数的退出(返回);exit是进程的退出。
-
return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
-
return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS(操作系统),这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。
-
非主函数中调用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();
}