- Reverse any integer using c program, for example 21 --> 12
#include <stdio.h>
int main()
{
int num, r, reverse = 0;
printf("Enter any number:");
scanf("%d", &num);
while(num)
{
r = num % 10;
reverse = reverse*10 + r;
num /= 10;
}
printf("Reversed of number: %d\n", reverse);
return 0;
}
- 线性表的简单实现
#include <stdio.h>
#include <string.h>
#define ERROR 0
#define OK 1
// 学生对象
struct STU
{
char name[20];
char stuno[10];
int age;
int score;
} stu[50];
// 线性表
struct LIST
{
struct STU stu[50];
int length;
} L;
// 打印线性表
int printlist(struct LIST L)
{
int i;
printf("name\tstuno\tage\tscore\n");
for(i=0; i<L.length; i++)
printf("%s\t%s\t%d\t%d\n", L.stu[i].name, L.stu[i].stuno, L.stu[i].age, L.stu[i].score);
printf("\n");
}
// 在线性表L的第i(i是从1开始的)个位置插入学生对象e
int listinsert(struct LIST *L, int i, struct STU e)
{
struct STU *p,*q;
if (i < 1 || i > L->length+1) return ERROR;
q = &(L->stu[i-1]); // q指向要插入的位置
for(p = &L->stu[L->length-1]; p>=q; --p)
*(p+1)=*p; // q后面所有的元素往后面移
*q=e;
++L->length;
return OK;
}/*ListInsert Before i */
int main()
{
struct STU e;
L.length=0;
strcpy(e.name,"刘威震");
strcpy(e.stuno,"100001");
e.age=80;
e.score=1000;
listinsert(&L,1,e);
printlist(L);
printf("List length now is %d.\n\n",L.length);
strcpy(e.name,"王小宁");
strcpy(e.stuno,"100002");
e.age=80;
e.score=1000;
listinsert(&L,1,e);
printlist(L);
printf("List length now is %d.\n\n",L.length);
getchar();
return 0;
}
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
#define ERROR 0
#define OK 1
#define EQUAL 1
struct STU{
char name[20];
char stuno[10];
int age;
int score;
}stu[50];
typedef struct STU ElemType;
struct LIST
{
ElemType elem[50];
int length;
};
typedef struct LIST List;
int init(List **L)
{
*L=(List *)malloc(sizeof(List));
(*L)->length=0;
}
int ListLength(List *L)
{
return L->length;
}
void GetElem(List L,int i,ElemType *e)
{
*e=L.elem[i];
}
int EqualList(ElemType *e1,ElemType *e2)
{
if (strcmp(e1->name,e2->name))
return 0;
if (strcmp(e1->stuno,e2->stuno))
return 0;
if (e1->age!=e2->age)
return 0;
if (e1->score!=e2->score)
return 0;
return 1;
}
int LocateElem(List *La,ElemType e,int type)
{
int i;
switch (type)
{
case EQUAL:
for(i=0;i<La->length;i++)
if(EqualList(&La->elem[i],&e))
return 1;
break;
default:
break;
}
return 0;
}
void UnionList(List *La, List *Lb)
{
int La_len,Lb_len;
int i;
ElemType e;
La_len=ListLength(La); Lb_len=ListLength(Lb);
for(i=0;i<Lb_len;i++)
{
GetElem(*Lb,i,&e);
if(!LocateElem(La,e,EQUAL))
ListInsert(La,++La_len,e);
}
}
int printlist(List L)
{
int i;
printf("name stuno age score\n");
for(i=0;i<L.length;i++)
printf("%-10s %s\t%d\t%d\n", L.elem[i].name, L.elem[i].stuno,
L.elem[i].age, L.elem[i].score);
printf("\n");
}
int ListInsert(List *L,int i,struct STU e)
{
struct STU *p,*q;
if (i<1||i>L->length+1) return ERROR;
q=&(L->elem[i-1]);
for(p=&L->elem[L->length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return OK;
}/*ListInsert Before i */
int main()
{
struct STU e;
List *La,*Lb;
printf("\n\n-------------------List Demo is running...----------------\n\n");
printf("First is InsertList function.\n");
init(&La);
strcpy(e.name,"stu1");
strcpy(e.stuno,"100001");
e.age=80;
e.score=1000;
ListInsert(La,1,e);
strcpy(e.name,"stu2");
strcpy(e.stuno,"100002");
e.age=80;
e.score=1000;
ListInsert(La,2,e);
printlist(*La);
printf("List A length now is %d.\n\n",La->length);
getch();
strcpy(e.name,"stu3");
strcpy(e.stuno,"100003");
e.age=80;
e.score=1000;
ListInsert(La,3,e);
printlist(*La);
printf("List A length now is %d.\n\n",La->length);
getch();
init(&Lb);
strcpy(e.name,"zmofun");
strcpy(e.stuno,"100001");
e.age=80;
e.score=1000;
ListInsert(Lb,1,e);
strcpy(e.name,"bobjin");
strcpy(e.stuno,"100002");
e.age=80;
e.score=1000;
ListInsert(Lb,2,e);
strcpy(e.name,"stu1");
strcpy(e.stuno,"100001");
e.age=80;
e.score=1000;
ListInsert(Lb,3,e);
printlist(*Lb);
printf("List B length now is %d.\n\n",Lb->length);
getch();
printf("Second is UnionList function.\n");
printf("Now union List A and List B.....\n");
UnionList(La,Lb);
printlist(*La);
printf("List A length now is %d.\n\n",La->length);
getch();
printf("\n\n\n\n\n\nWelcome to visit http://zmofun.heha.net !\n\n\n\n\n\n\n");
return 0;
}