1.1 求素数1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
bool prime(int n)
{
int i;
for (i = 2; i <= (int)sqrt(n); i++) {
if (n%i == 0)
return false;
else
return true;
}
}
int main()
{
int n, i, j = 0;
printf("n:" );
scanf("%d",&n);
printf("小于等于%d的素数", n);
if (n>2)
{
printf("%4d", n);
j++;
}
for (i = 3; i <= n; i += 2)
if (prime(i))
{
printf("%4d", i);
if (j != 0 && ++j % 10 == 0)
printf("\n");
}
printf("\n");
}
1.2 求正整数各位数字之和1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int func(int num)
{
int s=0;
do{
s+=num%10;
num/=10;
}while(num);
return (s);
}
int main()
{
int n;
printf("输入一个整数:");
scanf("%d",&n);
printf("各位数字之和:%d",func(n) );
}
1.3 求一个字符串是否为回文1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//算法
bool func(char s[])
{
bool flag=true;
int i,j,slen=strlen(s);
for(i=0,j=slen-1;i<j;i++,j--){
if(s[i]!=s[j]){
flag=false;
break;
}
}
return (flag);
}
int main()
{
char s[MAX];
printf("输入一串字符:" );
scanf("%s",s);
if(func(s)){
printf("%s是回文字符串",s);}
else{
printf("%s不是回文字符串",s );}
}
2.1 实现顺序表基本运算*1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134//文件1
typedef char ElemType
typedef struct
{
ElemType date[MaxSize];
int length;
}SqList;
//初始化线性表
void InitList(SqList *& L)
{L=(SqList *)malloc(SqList);
L->length;}
//销毁线性表
void DestroyList(SqList *L)
{free(L)}
//判断线性表是否为空
bool ListEmpty(SqList *L)
{return L->length==0;}
//求线性表的长度
int ListLength(SqList *L)
{return (L->length);}
//输出线性表
void DispList(SqList *L)
{int i;
if(ListEmpty(L))return;
for(i=0;i<n;i++){
printf(" %c",L->data[i] );
}
}
//求线性表中数据元素的值
bool GetElem(SqList *L,int i,ElemType &e)
{if(i<1||i>L->length)
return false;
e=L->data[i-1];
return true;
}
//按元素值查找
int LocatElem(SqList *L,ElemType e)
{int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
//插入数据元素
bool ListInsert(SqList *L,int i,ElemType e)
{int j;
if(i<1||i>L->length+1)
return false;
i--;
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return true;
}
//删除数据元素
bool ListDelete(SqList *&L,int i,ElemType &e)
{int j;
if(i<1||i>L->length)
return false;
i--;
e=L->data[i];
for(j=i;j<L->length;j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
//文件2
typedef char ElemType
typedef struct
{
ElemType date[MaxSize];
int length;
}SqList;
extern void InitList(SqList *& L);
extern void DestroyList(SqList *L);
extern bool ListEmpty(SqList *L);
extern int ListLength(SqList *L);
extern void DispList(SqList *L);
extern bool GetElem(SqList *L,int i,ElemType &e);
extern int LocatElem(SqList *L,ElemType e);
extern bool ListInsert(SqList *L,int i,ElemType e);
extern bool ListDelete(SqList *&L,int i,ElemType &e);
void main()
{
SqList *L;ElemType e;
printf("顺序表的基本运算如下:" );
printf("初始化线性表");
InitList(L);
printf("(2)采用尾插法建表");
ListInsert(L,1,'a');
ListInsert(L,2,'b');
ListInsert(L,3,'c');
ListInsert(L,4,'d');
ListInsert(L,5,'e');
printf("(3)输出顺序表");
DispList(L);
printf("(4)顺序表L的长度=%d\n",ListLength(L));
printf("(5)顺序表为%s\n",ListEmpty(L)?"空":"非空");
GetElem(L,3,e);
printf("(6)线性表L的第三个元素%c\n",e );
printf("(7)元素a的位置=%d\n",LocatElem(L,'a') );
printf("(8)在第四个位置插入f\n" );
ListInsert(L,4.f);
printf("(9)输出顺序表\n" );
DispList(L);
printf("删除L的第三个元素\n" );
ListDelete(L,3,e);
printf("输出线性表\n" );
DispList(L);
printf("释放线性表\n", );
DestroyList(L);
}
2.2 实现单链表各种基本运算方法