课程设计总结+C++学习总结

课程设计总结+C++学习总结

前言:放暑假三周以来,写了许多程序,零零散散总结了许多,但从未汇总,此次就一并汇总并发出来吧!

1、C++界面设计

控制弹出窗口的颜色

void setcolor()
{
	pf("请根据需要选择背景以及字体颜色\n");
	pf("   0     黑色  \n");
	pf("               \n");
	pf("   1     蓝色  \n");
	pf("               \n");
	pf("   2     绿色  \n");
	pf("               \n");
	pf("   3     湖蓝色  \n");
	pf("               \n");
	pf("   4     红色  \n");
	pf("               \n");
	pf("   5     紫色  \n");
	pf("               \n");
	pf("   6     黄色  \n");
	pf("               \n");
	pf("   7     白色  \n");
	pf("               \n");
	pf("   8     灰色  \n");
	pf("               \n");
	pf("   9     淡蓝色  \n");
	pf("                 \n");
	pf("   A     淡绿色  \n");
	pf("                 \n");
	pf("   B     淡浅绿色  \n");
	pf("                 \n");
	pf("   C     淡红色  \n");
	pf("                 \n");
	pf("   D     淡紫色  \n");
	pf("                 \n");
	pf("   E     淡黄色  \n");
	pf("                 \n");
	pf("   F     亮白色  \n");
	pf("                 \n");
    getchar();
    pf("请输入背景颜色\n");	
	char command[] = "color 07";
	scanf("%c", &command[6]);
	getchar();
	pf("请输入字体颜色\n");
	scanf("%c", &command[7]);
	getchar();
	system(command);
	pf("即将更改颜色,请稍候...");
	pause;
	cls;
}

附加:使用此函数时必须添加头文件<windows.h>,否则无法识别下面的指令。system(“color 07”)是系统自带的指令,且07是自带命令,指的是黑底白字,0前一个代表背景颜色是黑色,后面7代表字体颜色为白色。系统提供了这么多的颜色供我们选择:(一下列出对应的颜色)

    0 = 黑色     
    1 = 蓝色    
    2 = 绿色   
    3 = 湖蓝色   
    4 = 红色    
    5 = 紫色    
    6 = 黄色   
    7 = 白色       
    8 = 灰色       
    9 = 淡蓝色     
    A = 淡绿色     
    B = 淡浅绿色    
    C = 淡红色     
    D = 淡紫色    
    E = 淡黄色    
    F = 亮白色

同时还要注意此处为什么代码区运用了多个getchar()函数,这是因为我们在输入我们所选的颜色之后往往会按一个回车键,而这个回车键会被系统给接收到这也就造成了可能会出现混乱,所以要用getchar()来接受这个回车。

控制界面的大小

话不多说,先上代码

#include <Windows.h>
void modeset(int w,int h) {
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD size = {w, h};
	SetConsoleScreenBufferSize(hOut,size);
	SMALL_RECT rc = {1,1, w, h};
	SetConsoleWindowInfo(hOut ,true ,&rc);
	system("cls");
	return;
}

这里直接提供函数借口,可以直接调用函数modeset(w,h),实现调整控制台界面大小。具体大小还需个人根据自身的需求进行调节。注意此函数仍需要包含头文件<windows.h>

2、C语言易出错处总结

  1. 每一个接收数据的地方都可能出现用户输入的数据不在我给出的数据范围之内,因此需要考虑到这种情况,防止整个程序崩盘或者出现混乱。解决办法:尽可能的多考虑到这种情况,在每个输入数据的时候,增加判断,解决上述问题。
  2. 在用fopen,fclose函数时由于文件比较多,一不小心可能忘记关闭文件,导致数据文件丢失。解决办法:在写完某个函数之后对于整个函数进行比对,对于每一个函数都做到一一对应。
  3. 进行文件删除时如果想让文件内容消失但文件不消失,本来很难。解决办法:用w方式进行写操作,因为文件已存在,如果这是打开文件,会把原文件删除,进而间接实现了目的。
  4. 在每次修改完信息之后,会对文件进行一次重新录入操作,保证文件内容为全新内容
  5. 以文件形式读取数据时注意输入正确文件的名称,包括文件的后缀名,如果输入错误,该功能无法实现。

3、C++格式化输出总结

在程序设计时,往往并非时需要系统本身有的程序进行输出,有时需要自己控制格式,这时就需要我么了解如何进行c++格式下的输出。话不多说,开始正文。
第一种方法:
有关流对象cin、cout和流运算符的定义等信息是存放在C++的输入输出流库中的,因此如果在程序中使用cin、cout和流运算符,就必须使用预处理命令把头文件iostream包含到本文件中:
尽管cin和cout不是C++本身提供的语句,但是在不致混淆的情况下,为了叙述方便,常常把由cin和流提取运算符“>>”实现输入的语句称为输入语句或cin语句,把由cout和流插入运算符“<<”实现输出的语句称为输出语句或cout语句。根据C++的语法,凡是能实现某种操作而且最后以分号结束的都是语句。
输入流与输出流的基本操作
cout语句的一般格式为:
cout<<表达式1<<表达式2<<……<<表达式n;

C++提供了在输入输出流中使用的控制符(有的书中称为操纵符)
1. dec	       设置数值的基数为10
2. hex         设置数值的基数为16
3. oct	       设置数值的基数为8
4. setfill(c)	设置填充字符c,c可以是字符常量或字符变量
5. setprecision(n)	设置浮点数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和 scientific(指数)形式输出时,n为小数位数
6. setw(n)	设置字段宽度为n位
7. setiosflags( ios::fixed)	设置浮点数以固定的小数位数显示
8. setiosftags( ios::scientific)	设置浮点数以科学记数法(即指数形式)显示
9. setiosflags( ios::left)	输出数据左对齐
10. setiosflags( ios::right)	输出数据右对齐
11. setiosflags( ios::skipws)	忽略前导的空格
12. setiosflags( ios::uppercase)	数据以十六进制形式输出时字母以大写表示
13.  setiosflags( ios::lowercase)	数据以十六进制形式输出时宇母以小写表示
14.  setiosflags(ios::showpos)	输出正数时给出“+”号

注意如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。

举例, 输出双精度数:
    double a=123.456789012345;  // 对a赋初值

1) cout<<a;  输出: 123.456
2) cout<<setprecision(9)<<a;  输出: 123.456789
3) cout<<setprecision(6);  恢复默认格式(精度为6)
4) cout<< setiosflags(ios∷fixed);  输出: 123.456789
5) cout<<setiosflags(ios∷fixed)<<setprecision(8)<<a;  输出: 123.45678901
6) cout<<setiosflags(ios∷scientific)<<a;  输出: 1.234568e+02
7) cout<<setiosflags(ios∷scientific)<<setprecision(4)<<a;  输出: 1.2346e02
下面是整数输出的例子:
    int b=123456;  // 对b赋初值
1) cout<<b;  输出: 123456
2) cout<<hex<<b;   输出: 1e240
3) cout<<setiosflags(ios∷uppercase)<<b;  输出: 1E240
4) cout<<setw(10)<<b<<','<<b;   输出:  123456123456
5) cout<<setfill('*')<<setw(10)<<b;  输出: **** 123456
6) cout<<setiosflags(ios∷showpos)<<b;  输出: +123456

注意 如果在多个cout语句中使用相同的setw(n),并使setiosflags(ios::right),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。

第二种方法

用流对象的成员函数控制输出格式

 用于控输出格式的流成员函数
|流成员函数 |	与之作用相同的控制符	      |  作用|
|precision(n) | setprecision(n)  |设置实数的精度为n位|
|width(n)setw(n)  |       设置字段宽度为n位|
|fill(c)setfill(c)	|设置填充宇符c|
|setf()setiosflags()	|设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同
|unsetf()resetioflags()|终止已设置的输出格式状态,在括号中应指定内容

注意 流成员函数setf和控制符setiosflags括号中的参数表示格式状态,它是通过格式标志来指定的。格式标志在类ios中被定义为枚举值。因此在引用这些格式标志时要在前面加上类名ios和域运算符“::”。

***格式标志	作用***
1. ios::left	输出数据在本域宽范围内向左对齐
2. ios::right	输出数据在本域宽范围内向右对齐
3. ios::internal	数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充
4. ios::dec	设置整数的基数为10
5. ios::oct	设置整数的基数为8
6. ios::hex	设置整数的基数为16
7. ios::showbase	强制输出整数的基数(八进制数以0打头,十六进制数以0x打头)
8. ios::showpoint	强制输出浮点数的小点和尾数0
9. ios::uppercase	在以科学记数法格式E和以十六进制输出字母时以大写表示
10. ios::showpos	对正数显示“+”号
11. ios::scientific	浮点数以科学记数法格式输出
12. ios::fixed	浮点数以定点格式(小数形式)输出
13. ios::unitbuf	每次输出之后刷新所有的流
14. ios::stdio	每次输出之后清除stdout, stderr

例子:
用流控制成员函数输出数据。

用流控制成员函数输出数据。
#include <iostream>
using namespace std;
int main( )
{
int a=21
cout.setf(ios::showbase);//显示基数符号(0x或)
cout<<"dec:"<<a<<endl; //默认以十进制形式输出a
cout.unsetf(ios::dec); //终止十进制的格式设置
cout.setf(ios::hex); //设置以十六进制输出的状态
cout<<"hex:"<<a<<endl; //以十六进制形式输出a
cout.unsetf(ios::hex); //终止十六进制的格式设置
cout.setf(ios::oct); //设置以八进制输出的状态
cout<<"oct:"<<a<<endl; //以八进制形式输出a
cout.unseft(ios::oct);
char *pt="China"; //pt指向字符串"China"
cout.width(10); //指定域宽为
cout<<pt<<endl; //输出字符串
cout.width(10); //指定域宽为
cout.fill('*'); //指定空白处以'*'填充
cout<<pt<<endl; //输出字符串
double pi=22.0/7.0; //输出pi值
cout.setf(ios::scientific); //指定用科学记数法输出
cout<<"pi="; //输出"pi="
cout.width(14); //指定域宽为
cout<<pi<<endl; //输出pi值
cout.unsetf(ios::scientific); //终止科学记数法状态
cout.setf(ios::fixed); //指定用定点形式输出
cout.width(12); //指定域宽为
cout.setf(ios::showpos); //正数输出“+”号
cout.setf(ios::internal); //数符出现在左侧
cout.precision(6); //保留位小数
cout<<pi<<endl; //输出pi,注意数符“+”的位置
return 0;

运行结果:

dec:21(十进制形式) 
hex:0x15                 (十六进制形式,以x开头) 
oct:025                  (八进制形式,以开头) 
         China               (域宽为) 
*****China               (域宽为,空白处以'*'填充) 
pi=**3.142857e+00        (指数形式输出,域宽,默认位小数) 
+***3.142857             (小数形式输出,精度为,最左侧输出数符“+) 

注意

  1. 成员函数width(n)和控制符setw(n)只对其后的第一个输出项有效
  2. 输出格式状态分为5组,每一组中同时只能选用一种(例如dec、hex和oct中只能选一,它们是互相排斥的)。在用成员函数setf和控制符setiosflags设置输出格式状态后,如果想改设置为同组的另一状态,应当调用成员函数unsetf(对应于成员函数self)或resetiosflags(对应于控制符setiosflags),先终止原来设置的状态。然后再设置其他状态.
  1. 用setf 函数设置格式状态时,可以包含两个或多个格式标志,由于这些格式标志在ios类中被定义为枚举值,每一个格式标志以一个二进位代表,因此可以用位或运算符“|”组合多个格式标志。
  2. 对输出格式的控制,既可以用控制符,也可以用cout流的有关成员函数,二者的作用是相同的。控制符是在头文件iomanip中定义的,因此用控制符时,必须包含iomanip头文件。cout流的成员函数是在头文件iostream 中定义的,因此只需包含头文件iostream,不必包含iomanip。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值