首页 > 其他分享 >期末复习笔记

期末复习笔记

时间:2024-06-01 15:54:40浏览次数:15  
标签:cout int s2 s1 cin 笔记 期末 getline 复习

常规

1.基本输入输出:

一般用cin型输入输出即可,主要包括一下几种类型:

int a; double a; float a;  //一般需要用浮点数的变量直接用double就行
cin>>a;
cout<<a;
:(特殊的题目要求我们保留几位小数) 
printf("%.3lf",a); //注:里面的.3是根据需要保留几位小数而写的,这里是保留3位小数
//------------------------------//
int a[n]; double a[n]; 
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cout<<a[i];
//------------------------------//
char a;
cin>>a; 
cout<<a;
//------------------------------//
char a[n];
可以: for(int i=0;i<n;i++) cin>>a[i];
      for(int i=0;i<n;i++) cout<<a[i];
或者: cin>>a;
      cout<<a;
//------------------------------//
char a[n];
cin.getline(a,n);
string a;
getline(cin,a);

2.特殊的输入输出:

在输入字符串时,cingetline的关键区别:

cin:以空格或回车为结尾(不包含),但不读入空格或回车
getline:以回车为结尾(不包含),读入回车

下面来举几个例子:

string s1,s2;
cin>>s1>>s2;
cout<<s1<<endl<<s2<<endl;
输入:123
     123
输出:123
     123
string s1,s2;
cin>>s1;
getline(cin,s2);
cout<<s1<<endl<<s2<<endl;
输入:123
     123
输出:123
     
//注:这里s2并不是没有读入,而是读入一个回车后就判断停了,所以s2实际上并没有读进去任何东西
string s1,s2;
cin>>s1;
getline(cin,s2);
cout<<s1<<endl<<s2<<endl;
输入:123 123
输出:123
      123
//注:注意这里和第一个的区别,s2=“ 123”,多了一个空格
string s1,s2;
getline(cin,s1);
getline(cin,s2);
cout<<s1<<endl<<s2<<endl;
输入:123 
     123
输出:123
     123
//注:常规

3.数字与字符相互转换:

int a; char c;
数字转字符:
c=a+'0';
字符转数字:
a=c-'0';

结构体

1.普通结构体:

//定义
struct node {
    int a,b,c;
};
//创造结构体变量
node ak;   node ak[n];
//调用结构体内变量
cin>>ak.a; cout<<ak.a; 
cin>>ak[i].a; cout<<ak[i].a;

2.结合指针:

//申请结构体型指针
node * t;
//申请新的结构体型空间
t=new node;
//调用结构体指针变量
cin>>t->a; cout<<t->a;

指针

除定义链表,其他类型没见过考,这里主要讲指针与字符串的结合:

首先明确,我们定义:char a[n];
那么 a 本身就是一个指针,可以进行正常的指针型使用方法,例如:
a++; *a; *(a+1) 等
相反我们有了指针: char *a;
我们也能当做数组使用,例如:
cin>>a[1];
前提是已经申请好空间!
例如:
void work(char * s) {
    int ans=0;
    for(int i=0;s[i]!='\0';i++) {
        if(s[i]>='0'&&s[i]<='9') ans++;
    }
    return ans;
}
int main() {
    char c[110];
    cin>>c;
    work(c);
}

链表

常规的添加节点遍历节点就不再赘述,这里主要给一个删除特定节点的板子:

node *deletesushu(node *head)
{
/**********Program**********/
	node * h=head,* las=NULL;   // h:当前判断到的节点; las:上一个没有被删除的节点;
	while(h) {
		if(条件) {    //如果要被删
			if(las==NULL) head=h->next;  //如果las不存在,说明h为头
			else las->next=h->next; //反之h不是头
		}
		else {    //如果不被删
			las=h;//更新上一个没有被删除的节点
		}
		h=h->next;  //遍历
	}
	return head;
/**********  End  **********/
}

文件

无非就是改变常规的输入输出形式,其他和普通题目一样,这里主要讲ifstream\ofstream型文件输入输出:

申明:
ifstream filin("文件名",ios::in);   // 文件输入
ofstream filout("文件名",ios::out);  // 文件输出
注: filin 与 filout  可以随便改名字
输入输出:
int a; double a; 
filin>>a;
filout<<a;
//------------------------//
char a[110];
filin>>a;
filout<<a;
值得庆幸的是,文件也满足getline的输入!!!
ifstream filin("文件名",ios::in);   // 文件输入
char a[110];
filin.getline(a,110);
string s;
getline(filin,s);

最后记住:不会就输出样例(o.0)

标签:cout,int,s2,s1,cin,笔记,期末,getline,复习
From: https://www.cnblogs.com/zjxlm/p/18226000

相关文章