本文目录一览:
- 1、C语言字符串
- 2、C语言中string指令是什么?
- 3、c++语言用reserve实现逆序的用法 要举例
- 4、c语言程序设计 用链表编写商品库存管理。
- 5、倒置函数 reserve(s.begin(),s.end()),有C++的代码示例吗?
- 6、求解,C语言中的ReserveByte0_L = 0x00, ReserveByte0_H, ReserveByte1_L, ReserveByte1_H, 有什么用处?
C语言字符串
代码功能:
1、输入任意行数的内容(如果你想限制最多10行,自己加个变量计数好了)。
2、不想输入时,新行直接回车,会刷新显示统计个数。
#include stdio.h
#include stdlib.h
#include string.h
#include malloc.h
typedef struct strs
{
char str[100];
struct strs *next;
}STRS;
void contWord(char *str);//对字符串大小写字母计数
void intput(STRS **strsHead,STRS **strsTail);//输入字符串,并显示统计结果(每输入完一行回车时,刷新数据)
void prfStrs(STRS *strsHead,int tj);//打印字符串及统计结果
int dCon=0;//大写字母计数
int nCon=0;//数字计数
int main()
{
STRS *strsHead=(STRS *)malloc(sizeof(STRS));
strsHead-next=NULL;
STRS *strsTail=NULL;
intput(strsHead,strsTail);
return 0;
}
void prfStrs(STRS *strsHead,int tj)//tj=1输出统计结果;tj=0不输出统计结果
{
while(strsHead-next!=NULL)
{
printf("%s\n",strsHead-next-str);
strsHead=strsHead-next;
}
if(tj==1)
{
printf("大写字母个数:%d\n",dCon);
printf("数字输入个数:%d\n",nCon);
}
}
void contWord(char *str)
{
int len=strlen(str),i;
for(i=0;ilen;i++)
{
if(str[i]='A' str[i]='Z')
dCon++;
if(str[i]='0' str[i]='9')
nCon++;
}
}
void intput(STRS **strsHead,STRS **strsTail)
{
STRS *strsNew;
char c;
while(1)
{
strsNew=(STRS *)malloc(sizeof(STRS));
memset(strsNew-str,0,100);
if(strsNew-str[0]==0)
{
c=0;
c=getchar();
if(c=='\n')
{
system("cls");
prfStrs(*strsHead,1);
break;
}
else
{
strsNew-str[0]=c;
}
}
gets(strsNew-str[1]);
strsNew-next=NULL;
if((*strsHead)-next==NULL)
(*strsHead)-next=strsNew;
else
(*strsTail)-next=strsNew;
*strsTail=strsNew;
contWord(strsNew-str);
}
}
C语言中string指令是什么?
string 是 c++的,不是 c 的
stirng 是C++里面一个用来处理字符串的类。包含了字符串处理掉一下常用方法,如:
Constructors 构造函数,用于字符串初始化
Operators 操作符,用于字符串比较和赋值
append() 在字符串的末尾添加文本
assign() 为字符串赋新值
at() 按给定索引值返回字符
begin() 返回一个迭代器,指向第一个字符
c_str() 将字符串以C字符数组的形式返回
capacity() 返回重新分配空间前的字符容量
compare() 比较两个字符串
copy() 将内容复制为一个字符数组
data() 返回内容的字符数组形式
empty() 如果字符串为空,返回真
end() 返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
erase() 删除字符
find() 在字符串中查找字符
find_first_of() 查找第一个与value中的某值相等的字符
find_first_not_of() 查找第一个与value中的所有值都不相等的字符
find_last_of() 查找最后一个与value中的某值相等的字符
find_last_not_of() 查找最后一个与value中的所有值都不相等的字符
get_allocator() 返回配置器
insert() 插入字符
length() 返回字符串的长度
max_size() 返回字符的最大可能个数
rbegin() 返回一个逆向迭代器,指向最后一个字符
rend() 返回一个逆向迭代器,指向第一个元素的前一个位置
replace() 替换字符
reserve() 保留一定容量以容纳字符串(设置capacity值)
resize() 重新设置字符串的大小
rfind() 查找最后一个与value相等的字符(逆向查找)
size() 返回字符串中字符的数量
substr() 返回某个子字符串
swap() 交换两个字符串的内容
c++语言用reserve实现逆序的用法 要举例
#include iostream
#include string
using namespace std;
string reserve(string arg)
{
string result = "";
for (int i = arg.length() - 1; i = 0; --i)
{
result += arg[i];
}
return result;
}
int main()
{
coutreserve("abcd")endl;
return 0;
}
c语言程序设计 用链表编写商品库存管理。
#include stdio.h
#include stdlib.h
#include string.h
typedef struct node{
char no[20];//存放编号
char name[40];//存放名称
int reserve;//库存
struct node *next;
}NODE;
typedef struct link{
NODE *front;//头指针
NODE *rear;//尾指针
}LINK;
NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("请输入货物编号:");
gets(node-no);
printf("请输入货物名称:");
gets(node-name);
printf("请输入货物名称:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",node-reserve);
node-next = NULL;
return node;
}
void init_link(LINK *link){
link-rear = NULL;
link-front = NULL;
}
int link_empty(LINK *link){
return link-front == NULL ? 1: 0;
}
int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link-front;
while(node != link-rear){
node = node-next;
++num;
}
return num;
}
/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num n){
printf("公有节点%d个,无法找到第%d个节点\n",num,n);
}
else{
}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link-front == NULL){
link-front = node;
link-rear = node;
node-next = NULL;
}
else{
link-rear-next = node;
link-rear = node;
node-next = NULL;
}
}
void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link-front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("链表为空,将建立链表!\n");
node_push(link);
}
else{
if( n = 1){
printf("在链表头插入数据\n");
new_node = create_node();
new_node-next = link-front;
link-front = new_node;
}
else if( n= num = node_num(link) ){
printf("节点数少于%d,将在末尾插入节点.\n",n);
node_push(link);
}
else{
printf("在第n个节点后插入数据\n");
if(num = n){
while( i != n){
node = node-next;
++i;
}
new_node = create_node();
new_node-next = node-next;
node-next = new_node;
}
}
}
void find_node_insert(LIKNK *link,const char *name){
NODE *node = link-front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node-name,name) != 0){
if(node != link-rear)
node = node-next;
else break;
}
if(node != NULL){
NODE *new_node = create_node();
new_node-next = node-next;
node-next = new_node;
}
else {
printf("没有找到相关货物,将在头节点插入数据\n");
intsert(link,0);
}
}
/*由于我不知到你对货物统计具体实现的要求,关于货物数量统计就你自己写了,应该比较简单。*/
/* 代码没有具体运行过,如果你学过C结构体与指针,就这个代码思路应该看得明白,真正的实现你自己实现吧
这样对你会更好写。可能会有错误的地方,请谨慎。 */
倒置函数 reserve(s.begin(),s.end()),有C++的代码示例吗?
#includeusingnamespacestd;charstrend(char*s,char*t);intmain(){char*s;char*t;s=newchar[100];t=newchar[100];cout"输入s的值"endl;cin.getline(s,100);cout"输入t的值"endl;cin.getline(t,100);coutstrend(s,t)endl;return0;}charstrend(char*s,char*t){intsize1=0,size2=0;if(s!=NULL)while(s[size1]!='\0')size1++;returnNULL;if(s[size1-1]==*t)return'1';elsereturn'0';}只要最后一个字符相同,就会输出1,否则输入0.
求解,C语言中的ReserveByte0_L = 0x00, ReserveByte0_H, ReserveByte1_L, ReserveByte1_H, 有什么用处?
char是字符型byte是字节型(0-255)在参与算术运算是char类型会自动转为整型;如字符A会转为对应ASCII码65.char是用来表示一个字符,而不是一个字,因为一个字要占用两个字节。而存储一个ANSI字符只需一个字节。注意,强调是ANSI字符,而不是Unicode字符。因为Unicode要占用两个字节。byte类型是最自由的一种。它就占用一个字节,但没有定义这个字节拿来干什么。char定义为一个UnsignedByte类型。也就是无符号的一个字节。它将一个字节的8位全占用了。可以表示的数据范围是0到255之间。如果你确定处理的字符串是标准的ANSI字符串,那不必转换也可以直接一个字节一个字节地处理。如果要处理的字符串不定或是统一的Unicode字符串则要进行转换后进行处理。