[C語言]數值轉換問題/迴文判斷/商品貨架管理
阿新 • • 發佈:2018-12-17
最近時間有點緊啊,看來部落格更新速度又要減慢了。
C語言實現數值轉換
- 問題描述 將十進位制數N和其它d進位制數的轉換是計算機實現計算的基本問題,其解決方案很多,其中最簡單方法基於下列原理:即除d取餘法。例如:(1348)10=(2504)8 基本要求:對於鍵盤輸入的任意一個非負的十進位制整數,列印輸出與其等值的八進位制數。
-
程式碼
/* **實驗題二 **數制轉換 **ASORB&201810 */ #include"DataH.h" int main(){ SqStack S[3]; SElemType e; int num,n; for (int i = 0; i < 3;i++) InitStack(&S[i]); //初始化棧 printf("輸入數值:"); scanf("%d", &n); num = n; while (num){ Push(&S[0], num % 2); num /= 2; } num = n; while (num){ Push(&S[1], num % 8); num /= 8; } num = n; while (num){ Push(&S[2], num % 16); num /= 16; } printf("結果:\n"); printf("0b"); while (!StackEmpty(S[0])){ Pop(&S[0], &e); printf("%d", e); } printf("\n0o"); while (!StackEmpty(S[1])){ Pop(&S[1], &e); printf("%d", e); } printf("\n0x"); while (!StackEmpty(S[2])){ Pop(&S[2], &e); switch (e){ case 10:printf("A"); break; case 11:printf("B"); break; case 12:printf("C"); break; case 13:printf("D"); break; case 14:printf("E"); break; case 15:printf("F"); break; default:printf("%d", e); } } for (int i = 0; i < 3;i++) DestroyStack(&S[i]); //銷燬棧 fflush(stdin); getchar(); //防退 return 0; }
-
效果圖
C語言實現迴文判斷
- 問題描述 試寫一個演算法,判斷依次讀入的一個以@為結束符的字母序列,是否為形如‘序列1&序列2’模式的字元序列。其中序列1和序列2 中都不含字元‘&’,且序列2 是序列1的逆序列。例如,‘a+b&b+a’是屬該模式的字元序列,而‘1+3&3-1’則不是。
-
程式碼
/* **實驗題二 **迴文判斷 **ASORB&201810 */ #include"DataH.h" int main(){ SqStack S; SElemType e, e1; int sw = 0; InitStack(&S); //初始化 printf("輸入迴文序列:"); while ((e = getchar()) != '@'&&e != '\n') { if (e == '&'){ sw = 1; continue; } if (sw == 0) Push(&S, e); else{ if (StackEmpty(S)){ sw = 0; break; } Pop(&S, &e1); if (e != e1) { sw = 0; break; } } } if (sw&&StackEmpty(S)) printf("該字串是迴文序列!\n"); else printf("該字串不是迴文序列!\n"); DestroyStack(&S); //銷燬 fflush(stdin); getchar(); return 0; }
-
效果圖
C語言實現商品貨架管理
- 問題描述 商品貨架可以看成一個棧,棧頂商品的生產日期最早,棧底商品的生產日期最近。 上貨時,需要倒貨架,以保證生產日期較近的商品在較下的位置。 基本要求: 針對一種特定商品,實現上述管理過程。 提示: 用棧模擬貨架和週轉空間。
-
程式碼
/* **實驗題二 **商品貨架管理 **ASORB&201810 */ #include"DataH.h" Status PushEnd(SqStack *S, SElemType e){//棧低插入元素 if (StackEmpty(*S)){//棧空時直接入棧 *(S->base) = e; S->top = S->base + 1; } else{//非空,則後移 if (S->top - S->base >= S->stacksize){ //棧滿,追加空間 S->base = (SElemType*)realloc(S->base, sizeof(SElemType)*(S->stacksize + STACKINCREMENT)); if (!S->base)exit(OVERFLOW); S->top = S->base + S->stacksize; S->stacksize += STACKINCREMENT; } for (SElemType *p = S->top; p > S->base; p--) *p = *(p - 1); *(S->base) = e; S->top++; } return OK; } void AddSh(SqStack *S){ SElemType e; printf("輸入商品編號:"); scanf("%d", &e.id); printf("輸入商品名稱:"); fflush(stdin); scanf("%s", e.name); PushEnd(S, e); } void ViewSh(SqStack S){ SElemType e; while (!StackEmpty(S)){ Pop(&S, &e); printf("商品編號:%d\t商品名稱:%s\n", e.id, e.name); } printf("\n\n\n回車鍵返回....."); fflush(stdin); getchar(); } int main(){ int sw; SqStack S; InitStack(&S); //初始化 while (1){ printf("當前商品保有量:%d", StackLength(S)); printf("\n\n\n\n\t[1].新增商品\t[2].檢視貨架\n\t[3].退出"); printf("\n\n\n----------------\n選擇:"); scanf("%d", &sw); if (sw == 3)break; else if (sw == 1)AddSh(&S); else if (sw == 2)ViewSh(S); system("cls"); } DestroyStack(&S); //銷燬 return 0; }
-
效果圖
END
現在感覺一天的時間好短,都不敢睡午覺了。