当前位置:首页 > C语言程序设计慕课下编译答案(完美)
.
1 求最大公约数和最小公倍数(15分)
#include
int fun1( int m, int n) //辗转相除法求m/n的公约数 {
int r;
while (n) {
r=m % n; m=n; n=r; }
return m; }
int fun2(int m,int n) //最小公倍数 {
return m*n/fun1(m,n); }
int main() {
int a,b;
scanf(\输入
printf(\最大公约数:%d\\n最小公倍数:%d\\n\ return 0; }
2排序并插入(15分)
#include
void InsertionSort(int* arr, int n) // 插入排序 {
int *last = 0, *next = 0, key = 0, i = 0;
for (i = 1; i < n; ++i) {
next = arr + i, key = *next;
if (key < *arr) // 将待插的数据比第一个数据小,直接插到最前面。 {
for (last = next; next != arr; next = last) *next = *--last;
*arr = key; }
.
.
else // 否则从后往前遍历,找到第一个小于关键字的位置插入。 {
for (last = next; key < *--last; next = last) *next = *last;
*next = key; } } }
void OutPutArray(const int* arr, int n) // 打印一个数组 {
int i;
for (i = 0; i < n; ++i) {
printf(\ if(i printf(\} void InsertNumber(int* arr, int n) { int key = 0, i = 0; InsertionSort(arr, n - 1); // 对之前的n-1个数排序 // OutPutArray(arr, n - 1); // 这里可以打印出来看一下对之前的数据排序是否正确 scanf(\输入一个数 if (key < arr[0]) // 参照之前的插入排序原理,将这个数插入到数组。 { for (i = n-1; 0 < i; --i) { arr[i] = arr[i - 1]; } arr[0] = key; } else { for (i = n-2; key < arr[i]; --i) . . { arr[i + 1] = arr[i]; } arr[++i] = key; } } int main() { int arr[10] = { 0 }; scanf(\输入9个数 , arr + 0, arr + 1, arr + 2, arr + 3, arr + 4, arr + 5, arr + 6, arr + 7, arr + 8); InsertNumber(arr, 10); // 调用函数,将输入的第10个数插进去。 OutPutArray(arr, 10); // 输出 return (0); } 3.最大公约数 #include int fun1( int m, int n) //辗转相除法求m/n的公约数 { int r; while (n) { r=m % n; m=n; n=r; } return m; } int main() { int a,b; scanf(\输入 printf(\ return 0; } 4.奇数球和 . . #include int sum(int n); scanf(\printf(\ } int sum(int n) { int b; if(n>1) b=sum(n-1)+2*n-1; if(n==1) b=1; return b;} 5.巧算自然数 #include void fc(int n)//输出n这个数并按角谷猜想对n做处理以便进入下一步。返回值是总步数。 { if(n == 1) { printf(\ return; } else if(n%2 == 0) { printf(\ fc(n/2); step++; } else { printf(\ fc(n*3+1); step++; } } int main(int argc, char* argv[]) { .
共分享92篇相关文档