12.5周记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
大数相乘
#include<stdio.h>
#include<string.h>
#define max 1500
int main() {
char c1[max], c2[max];
scanf("%s%s", c1, c2);
int n = strlen(c1), m = strlen(c2);
int a[n], b[m];
int i, j;
//将得到的字符串转化为数字
for (i = 0, j = n - 1; i < n; i++, j--)
{
a[i] = c1[j] - '0';
}
for (i = 0, j = m - 1; i < m; i++, j--)
{
b[i] = c2[j] - '0';
}
int c[max + max];
for (i = 0; i < max + max; i++)
{
c[i] = 0;
}
//将相乘的结果存放在c中
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
c[i + j] += a[i] * b[j];
}
}
//进行进位操作
for (i = 0; i < n + m; i++)
{
if (c[i] >= 10)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
//将多余位数的0跳过 ,开始输出。
for (j = max + max - 1; j > 0; j--)
{
if (c[j] != 0)
{
break;
}
}
for (i = j; i >= 0; i--)
{
printf("%d", c[i]);
}
return 0;
}
快排
#include<stdio.h>
int n;
int a[10000];
void quicksort(int a[], int l,int r)
{
int i=l,j=r;
int x,t;
if(l>=r)
return;
x=(l+r)/2;
while(i<j)
{
while(a[i]<a[x])
i++;
while(a[j]>a[x])
j--;
if(i<j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
quicksort(a,l,j);
quicksort(a,j+1,r);
}
int main()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
quicksort(a,0,n-1);
for(i=0;i<n;i++)
{
printf("%d",a[i]);
}
return 0;
}
归并排序
代码如下(示例):
#include<stdio.h>
void mergesort(int a[],int start,int end);
void merge(int a[],int start,int mid,int end);
int main()
{
int i,n;
int a[100];
scanf("%d",&n);
for(i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
mergesort(a,0,n-1);
for(i = 0; i < n; i++)
{
printf("%3d",a[i]);
}
return 0;
}
void merge(int a[],int start,int mid,int end)
{
int r[100];
int k = 0;
int i = start;
int j = mid + 1;
while(i <= mid && j<=end)
{
if(a[i] < a[j])
{
r[k++] = a[i++];
}
else
{
r[k++] = a[j++];
}
}
if(i == mid + 1)
{
while(j <= end)
{
r[k++] = a[j++];
}
}
if(j == end + 1)
{
while(i <= mid)
{
r[k++] = a[i++];
}
}
for(j = 0,i = start; j < k; i++,j++)
{
a[i] = r[j];
}
}
void mergesort(int a[],int start,int end)
{
int mid;
if(start >= end)
return;
mid = (start + end)/2;
mergesort(a,start,mid);
mergesort(a,mid + 1,end);
merge(a,start,mid,end);
}
文件基本操作
我觉得王博学长的博客写得特别详细,大家可以看看他的。
这是博客链接
总结
这周学习了归并排序和快速排序,学习了文件,然后也有许多问题,会在下周中逐一解决。