zzu day10 video

这篇博客介绍了字符串与数字之间的转换方法,包括从字符串转数字的动态计算和数字转字符串的实现。还讨论了如何在C++中找到最短的字符串,并探讨了引用和指针在编程中的应用,以及string类和vector动态数组的使用。此外,提到了队列和优先队列的概念。
摘要由CSDN通过智能技术生成


1.3日:字符串与数字相互转换

原理——数字字符(本质就是ASCII码)减去0的ASCII码值得到的数值大小就是数字本身

int m=0;
	for(int i=lenb-1;i>=0;i--){
		ans+=(b[i]-'0')*pow(10,m);    //字符串转数字
		m++;
	}
long long x=123456789,tem;        //数字转字符串 感觉这个不常用
    tem=x;
    int len=0;
    while(tem){
    	len++;                    //先找数字位数
    	tem/=10;
	}
	for(int i=len-1;i>=0;i--){
		a[i]=(x%10)+'0';
		x/=10;
	}
	puts(a);

对n个字符串输出最短的

(这时候就必须得二维数组派上用场啦

#include <bits/stdc++.h>
using namespace std;
char a[1010][1010];
int main(){
	int n,flag=0;
	cin>>n;                 //经测试这里虽然不是scanf但是依然需要吸收回车。。
	getchar();              
	for(int i=0;i<n;i++){
		gets(a[i]);
		if( strlen(a[i]) < strlen(a[flag]) )
			flag=i;
	}
	puts(a[flag]);
    return 0;
}

1.5日记

昨天打了一天游戏,事实证明果然打游戏没法让我找到快乐。。

继续敲代码,今日flag:刷到两百道(还剩32道)  今晚十一点回来验收

十进制转换二进制并存到字符数组里

void convert(int n, char a[]){
	int num=0,i=0;
	if(n!=0){
		while(n!=0){
			num=n%2;
			n/=2;
			a[i++]=num+'0';	 //注意得将char和int转换 
		}
		int len=strlen(a);
		for(i=len-1;i>=0;i--)
		    cout<<a[i];
	}
	else				//特值判断容易忘。。 
		cout<<"0";
} 

十进制转换成多个不同的k进制:

特别:若用一个数组存放每组答案并输出时,由于数组在在全局定义时候已经初始化,之后没办法再进行整体初始化,调用strlen函数使用则不正确。必须手动加\0结束标志符号来收尾。

void dToK(int n, int k, char a[]){
	int num=0,i=0;        //num最好初始化下 防止编译器版本不同出错
	if(n!=0){
		while(n>0){
			num=n%k;
			n/=k;
			a[i++]=num+'0';	 		//char和int转换 
		}
		a[i]='\0';			//bug关键点 ! (但是为啥不是a[i+1]??)
		int len=strlen(a);
		for(i=len-1;i>=0;i--)
			cout<<a[i];
		cout<<"\n";
	}
	else
		cout<<"0"<<"\n";
} 

1.6日:淦 昨天上午写了没一会就躺床上颓废了一天  打脸诶wc...

引用 和 指针

 用string代替char字符串:

①读字符串出问题时用string(想起了上边那个cin后吸回车的题。。) 

②cin或者getline读入字符串

③string支持int相同的运算符:=(赋值) +(连接)+=(加上自身后连接) 以及 比较大小运算

完全代替strcmp.strcat和strcopy了!

④string里常用的函数  先码住用了再查

注: string::npos是字符串可储存的最大字符数,通常是无符号int或无符号long的最大取值。

 关于find 的具体用法:

string类的find()函数总结__Previous的博客-CSDN博客_string的find函数

 Q:第三行的* 是嘛意思?


vector 动态数组

 

 

 


队列

 队列套结构体

优先队列

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值