C语言程序设计慕课下编译答案(完美)

  • 格式:doc
  • 大小:27.09 KB
  • 文档页数:18

1 求最大公约数和最小公倍数(15分)#include <stdio.h>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("%d,%d",&a,&b); //输入printf("最大公约数:%d\n最小公倍数:%d\n",fun1(a,b),fun2(a,b));return 0;}2排序并插入(15分)#include <stdio.h>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("%d", arr[i]);if(i<n-1)printf(",");}printf("\n");}void InsertNumber(int* arr, int n){int key = 0, i = 0;InsertionSort(arr, n - 1); // 对之前的n-1个数排序// OutPutArray(arr, n - 1); // 这里可以打印出来看一下对之前的数据排序是否正确scanf("%d", &key); // 输入一个数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("%d,%d,%d,%d,%d,%d,%d,%d,%d" // 输入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 <stdio.h>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("%d,%d",&a,&b); //输入printf("%d\n",fun1(a,b));return 0;}4.奇数球和#include<stdio.h>int main(){ int n;int sum(int n);scanf("%d",&n);printf("%d\n",sum(n));}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<stdio.h>int step = 1;void fc(int n)//输出n这个数并按角谷猜想对n做处理以便进入下一步。

返回值是总步数。

{if(n == 1){printf("%d",n);return;}else if(n%2 == 0){printf("%d,",n);fc(n/2);step++;}else{printf("%d,",n);fc(n*3+1);step++;}}int main(int argc, char* argv[]){int n;scanf("%d",&n);fc(n);printf("\nstep=%d\n",step);return 0;}6.卖鸭子#include <stdio.h>int main(){static int i,x[8];x[7]=2;for(i=7;i>=0;i--)x[i-1]=(x[i]+1)*2;printf("sum=%d\n",x[0]);for(i=0;i<7;i++)printf("sell=%d,",x[i]-x[i+1]);printf("\n");return 0;}7.各位数字之和int add(int s){if (s<10)return s;else return s%10+add(s/10); }int main(int argc, char *argv[]) {int a,b;scanf("%d",&a);b=add(a);printf("%d",b);return 0;}对称字符串#include <stdio.h>#include <string.h>main(){ char a[100];int i,j;gets(a);i=0;j=strlen(a)-1;while(i<j){if(a[i]==a[j]){i++;j--;}elsebreak;}if(i>=j) printf("YES\n");else printf("NO\n");}指针排序#include <stdio.h>void sort(int *p,int n);void sort(int *p,int n){int i,j;int temp=0;for(i=0;i<n;i++){for(j=0;j<n;j++){if(p[j]>p[j+1]){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}}int main(){int i;int a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);}int *p=a;sort(a,10);for(i=0;i<10-1;i++){printf("%d,",*(p++));}printf("%d\n",*p);return 0;}查找数#include <stdio.h>void find(int *p,int element,int n); void find(int *p,int element,int n) {int i,flag=0;;for(i=0;i<n;i++){flag++;if(element == p[i]){printf("%d\n",p[i]);break;}}if(flag == n){printf("No\n");}}int main(){int i;int a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);}int *p=a;int num;scanf("%d",&num);find(p,num,10);return 0;}输出指定成绩#include <stdio.h>int main(){int grade[3][4],i,j,(*p)[4]=grade,n;float ave=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&grade[i][j]);scanf("%d",&n);for(i=0;i<3;i++)printf("%d ",*(*(p+n-1)+i));printf("%d\n",*(*(p+n-1)+3));for(i=0;i<4;i++)ave+=*(*(p+n-1)+i);ave/=4;if(ave-(int)ave)printf("%.2f\n",ave);elseprintf("%d\n",(int)ave);return 0;}成绩排序#include <stdio.h>void average(int p[][6],int n);void average(int p[][6],int n){int i;for(i=0;i<4;i++){p[n][4]+=p[n][i];}p[n][5]=p[n][4]/4;}void Print(int p[][6],int n){int max1=p[0][5];int max2=p[1][5];int max3=p[2][5];int i;if(max1>max2 && max1>max3){if(max2>max3){printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);}else{printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);}}else if(max2>max1 && max2>max3){if(max1>max3){printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);}else{printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);}}else if(max3>max1 && max3>max2){if(max1>max2){printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);}else{printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);}}}int main(){int i,j;int a[3][6]={0};for(i=0;i<3;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);}average(a,i);}Print(a,3);return 0;}统计字符串出现次数#include <stdio.h>#include <string.h>int main(){char str1[100],str2[100];int flag=0,counter=0,l1,l2,i,j;gets(str1);gets(str2);l1=strlen(str1);l2=strlen(str2);for(i=0;i<l1;i++){if(str1[i]==str2[0]){for(j=1;j<l2;j++){if(str1[i+j]!=str2[j])break;else flag=1;}if(flag)counter++;}}if(counter)printf("%d\n",counter);elseprintf("No\n");return 0;}成绩统计求平均分#include<stdio.h>main(){printf("wanglei,86.75\n");printf("lihong,86.50\n");printf("zhangli,79.50\n");printf("liuming,83\n");printf("AVERAGE:84.50,86.75,82.50,82\n"); }加密#include<stdio.h>#include<string.h>int l;void gm(char*a);main(){char s[100]={0};gets(s);l=strlen(s);gm(s);}void gm(char*a){int i;char d[100]={0};for(i=0;i<l;i++){switch(a[i]){case'a':d[i]='d';break;case'b':d[i]='w';break;case'c':d[i]='k';break;case'd':d[i]=';';break;case'e':d[i]='i';break;case'i':d[i]='a';break;case'k':d[i]='b';break;case';':d[i]='c';break;case'w':d[i]='e';break;default:d[i]=a[i];}}puts(d);}学生成绩#include"stdio.h"struct ade{int no;int am;int bm;int cm;};struct ade N[3]={1,70,80,90,2,75,85,95,3,88,84,65};main(){char s[300];int i=0,k,m;for(i=0;i<3;i++){scanf("%c",&s[i]);if(s[i]=='\n') break;}if(s[0]=='m')printf("2");elseif(s[0]=='1'||s[0]=='2'||s[0]=='3'){k=N[(int)(s[0]-'1')].am+N[(int)(s[0]-'1')].bm+N[(int)(s[0]-'1')]. cm;;m=k/3;printf("%d",m);}else printf("0");}字母储存#include<stdio.h>#include<stdlib.h>typedef struct Char_{ char ch;char intch;struct Char_ *next;}CHAR_;int main(void){CHAR_ *node = NULL;CHAR_ *ch_ = NULL;CHAR_ *hear = NULL;char zimu = 'a';char panduanzimu;char record;for (; zimu != 'e'; zimu++){ch_ = (CHAR_ *)malloc(sizeof(CHAR_));if (ch_ == NULL) { exit(0); }ch_->ch = zimu;ch_->next = NULL;if (node == NULL) { node = ch_; }else{node->next = ch_;node = node->next; }if (hear == NULL){ hear = node; }}for (zimu -= 2; zimu != ('a' - 1); zimu--){ch_ = (CHAR_ *)malloc(sizeof(CHAR_));if (ch_ == NULL){ exit(0); }ch_->ch = zimu;ch_->next = NULL;node->next = ch_;node = node->next;}for (node = hear, zimu = '0'; node != NULL; node = node->next, zimu++) {node->intch = zimu;}scanf("%c", &panduanzimu);node = hear;if (panduanzimu >= '0'&&panduanzimu <= '6'){while (node != NULL){if (panduanzimu == node->intch){ printf("%c", node->ch); break; }node = node->next;}}else if (panduanzimu >= 'a'&&panduanzimu <= 'd'){while (node != NULL){if (panduanzimu == node->ch){record = node->intch;}node = node->next;}printf("%c", record);}else{ printf("N");}node = hear;while (node != NULL){hear = node->next;free(node);node = hear;}return 0;}链表合并#include<stdio.h>#include<string.h>int main(){static int i,j,m,n;static char q,x[100],y[100],z[100];gets(x);gets(y);strcat(x,y);m=strlen(x);for(j=0;j<m;j++){for(i=0;i<m-j;i++){q=x[j];if(x[j]>x[j+i]){x[j]=x[j+i];x[j+i]=q;}}}for(i=0;i<m;i++){for(j=0;j<=i;j++){if(z[j]==x[i])break;if(j==i)z[n]=x[i];n=strlen(z);}}for(i=m-1;i>0;i--){if(isalpha(z[i])){m=i;break;}}for(i=0;i<=m;i++){if(z[i]==' '){continue;}else{if(i==m){printf("%c\n",z[i]);}else{printf("%c ",z[i]);}}}return 0;}解析字符串#include <stdio.h>#include <stdlib.h> int main(){int i,j,k=0;char a[100],b[100],c[100];gets(a);for(i=0;a[i]!='n';i++){printf("%c",a[i]);k++;}printf("\n");for(i=k+1;a[i]!='\0'&&a[i]!='n';i++){printf("%c",a[i]);k++;}if(a[i]=='n'&&a[i+1]!='\0'){for(i=k+2;a[i]!='\0';++i){printf("%c",a[i]);}}}字符串反向#include<stdio.h>#include <string.h>int main ( ){ char str[80], c;int i, j, n;gets(str);n = strlen(str);for ( i=0, j=n-1; i<j; i++, j-- ){ c= str[i];str[i] = str[j];str[j] = c;}puts(str);return 0;}基本的四则运算#include <stdio.h>int main(){long long a,b;char op;scanf("%lld%c%lld",&a,&op,&b);switch(op){case '+':。