本文目錄一覽:
- 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字元串則要進行轉換後進行處理。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/158477.html