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

上传人:scccc 文档编号:12098931 上传时间:2021-12-01 格式:DOC 页数:18 大小:61KB
返回 下载 相关 举报
C语言程序设计慕课下编译答案 (完美).doc_第1页
第1页 / 共18页
C语言程序设计慕课下编译答案 (完美).doc_第2页
第2页 / 共18页
C语言程序设计慕课下编译答案 (完美).doc_第3页
第3页 / 共18页
C语言程序设计慕课下编译答案 (完美).doc_第4页
第4页 / 共18页
C语言程序设计慕课下编译答案 (完美).doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言程序设计慕课下编译答案 (完美).doc》由会员分享,可在线阅读,更多相关《C语言程序设计慕课下编译答案 (完美).doc(18页珍藏版)》请在三一文库上搜索。

1、.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("最大公约数:%dn最小公倍数:%dn",fun1(a,b),fun2(a,b);

2、 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

3、; 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", arri); if(i<n-1)printf(","); printf("n"); void InsertNumber(in

4、t* arr, int n) int key = 0, i = 0; InsertionSort(arr, n - 1); / 对之前的n-1个数排序 / OutPutArray(arr, n - 1); / 这里可以打印出来看一下对之前的数据排序是否正确 scanf("%d", &key); / 输入一个数 if (key < arr0) / 参照之前的插入排序原理,将这个数插入到数组。 for (i = n-1; 0 < i; -i) arri = arri - 1; arr0 = key; else for (i = n-2; key < a

5、rri; -i) arri + 1 = arri; arr+i = key; int main() int arr10 = 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

6、 <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("%dn",fun1(a,b); return 0;4.奇数球和#include<stdio.h>int main() int n; int sum(int n); scanf("%d",&n);

7、printf("%dn",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+;

8、else printf("%d,",n); fc(n*3+1); step+; int main(int argc, char* argv) int n; scanf("%d",&n); fc(n); printf("nstep=%dn",step); return 0;6.卖鸭子#include <stdio.h>int main()static int i,x8;x7=2;for(i=7;i>=0;i-)xi-1=(xi+1)*2;printf("sum=%dn",x0);for(i=

9、0;i<7;i+)printf("sell=%d,",xi-xi+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>#i

10、nclude <string.h>main() char a100; int i,j; gets(a);i=0;j=strlen(a)-1;while(i<j)if(ai=aj)i+;j-;else break;if(i>=j) printf("YESn");else printf("NOn");指针排序#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+) f

11、or(j=0;j<n;j+) if(pj>pj+1) temp=pj; pj=pj+1; pj+1=temp; int main() int i; int a10; for(i=0;i<10;i+) scanf("%d",&ai); int *p=a; sort(a,10); for(i=0;i<10-1;i+) printf("%d,",*(p+); printf("%dn",*p); return 0; 查找数#include <stdio.h> void find(int *p,int

12、 element,int n); void find(int *p,int element,int n) int i,flag=0; for(i=0;i<n;i+) flag+; if(element = pi) printf("%dn",pi); break; if(flag = n) printf("Non"); int main() int i; int a10; for(i=0;i<10;i+) scanf("%d",&ai); int *p=a; int num; scanf("%d"

13、,&num); find(p,num,10); return 0; 输出指定成绩#include <stdio.h>int main()int grade34,i,j,(*p)4=grade,n;float ave=0;for(i=0;i<3;i+)for(j=0;j<4;j+)scanf("%d",&gradeij);scanf("%d",&n);for(i=0;i<3;i+)printf("%d ",*(*(p+n-1)+i);printf("%dn",*(

14、*(p+n-1)+3);for(i=0;i<4;i+)ave+=*(*(p+n-1)+i);ave/=4;if(ave-(int)ave)printf("%.2fn",ave);else printf("%dn",(int)ave);return 0;成绩排序#include <stdio.h> void average(int p6,int n); void average(int p6,int n) int i; for(i=0;i<4;i+) pn4+=pni; pn5=pn4/4; void Print(int p6,in

15、t n) int max1=p05; int max2=p15; int max3=p25; int i; if(max1>max2 && max1>max3) if(max2>max3) printf("%d,%d,%d,%dn",p00,p01,p02,p03); printf("%d,%d,%d,%dn",p10,p11,p12,p13); printf("%d,%d,%d,%dn",p20,p21,p22,p23); else printf("%d,%d,%d,%dn",p

16、00,p01,p02,p03); printf("%d,%d,%d,%dn",p20,p21,p22,p23); printf("%d,%d,%d,%dn",p10,p11,p12,p13); else if(max2>max1 && max2>max3) if(max1>max3) printf("%d,%d,%d,%dn",p10,p11,p12,p13); printf("%d,%d,%d,%dn",p00,p01,p02,p03); printf("%d,%d,%

17、d,%dn",p20,p21,p22,p23); else printf("%d,%d,%d,%dn",p10,p11,p12,p13); printf("%d,%d,%d,%dn",p20,p21,p22,p23); printf("%d,%d,%d,%dn",p00,p01,p02,p03); else if(max3>max1 && max3>max2) if(max1>max2) printf("%d,%d,%d,%dn",p20,p21,p22,p23); pr

18、intf("%d,%d,%d,%dn",p00,p01,p02,p03); printf("%d,%d,%d,%dn",p10,p11,p12,p13); else printf("%d,%d,%d,%dn",p20,p21,p22,p23); printf("%d,%d,%d,%dn",p10,p11,p12,p13); printf("%d,%d,%d,%dn",p00,p01,p02,p03); int main() int i,j; int a36=0; for(i=0;i<3;i

19、+) for(j=0;j<4;j+) scanf("%d",&aij); average(a,i); Print(a,3); return 0; 统计字符串出现次数#include <stdio.h>#include <string.h>int main()char str1100,str2100;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(str1i=str20)fo

20、r(j=1;j<l2;j+)if(str1i+j!=str2j)break;else flag=1;if(flag)counter+;if(counter)printf("%dn",counter);elseprintf("Non");return 0;成绩统计求平均分#include<stdio.h>main()printf("wanglei,86.75n");printf("lihong,86.50n");printf("zhangli,79.50n");printf(&q

21、uot;liuming,83n");printf("AVERAGE:84.50,86.75,82.50,82n");加密#include<stdio.h>#include<string.h>int l;void gm(char*a);main()char s100=0;gets(s);l=strlen(s);gm(s);void gm(char*a)int i;char d100=0;for(i=0;i<l;i+)switch(ai)case'a':di='d'break;case'b'

22、:di='w'break;case'c':di='k'break;case'd':di=''break;case'e':di='i'break;case'i':di='a'break;case'k':di='b'break; case'':di='c'break; case'w':di='e'break; default:di=ai;puts(d);学生成绩

23、#include"stdio.h"struct adeint no;int am;int bm;int cm;struct ade N3=1,70,80,90,2,75,85,95,3,88,84,65;main()char s300;int i=0,k,m;for(i=0;i<3;i+)scanf("%c",&si);if(si='n') break;if(s0='m')printf("2");else if(s0='1'|s0='2'|s0='3

24、')k=N(int)(s0-'1').am+N(int)(s0-'1').bm+N(int)(s0-'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

25、; 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-&g

26、t;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->

27、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 (pandua

28、nzimu >= '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 = he

29、ar; return 0; 链表合并#include<stdio.h>#include<string.h>int main()static int i,j,m,n;static char q,x100,y100,z100;gets(x);gets(y); strcat(x,y);m=strlen(x);for(j=0;j<m;j+)for(i=0;i<m-j;i+)q=xj;if(xj>xj+i)xj=xj+i;xj+i=q;for(i=0;i<m;i+)for(j=0;j<=i;j+)if(zj=xi)break;if(j=i)zn=xi

30、;n=strlen(z);for(i=m-1;i>0;i-)if(isalpha(zi)m=i;break;for(i=0;i<=m;i+)if(zi=' ')continue; elseif(i=m)printf("%cn",zi);elseprintf("%c ",zi);return 0;解析字符串#include <stdio.h>#include <stdlib.h>int main() int i,j,k=0; char a100,b100,c100; gets(a); for(i=0;ai

31、!='n'i+) printf("%c",ai); k+; printf("n"); for(i=k+1;ai!='0'&&ai!='n'i+) printf("%c",ai); k+; if(ai='n'&&ai+1!='0') for(i=k+2;ai!='0'+i) printf("%c",ai); 字符串反向#include<stdio.h>#include <s

32、tring.h>int main ( ) char str80, c; int i, j, n; gets(str); n = strlen(str); for ( i=0, j=n-1; i<j; i+, j- ) c= stri; stri = strj; strj = 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 '

33、;+':printf("%lldn",a+b);break;case '-':printf("%lldn",a-b);break;case '*':printf("%lldn",a*b);break;case '/':printf("%lldn",a/b);break;case '%':printf("%lldn",a%b);break;return 0;复杂的四则运算#include <stdio.h>#inc

34、lude <string.h>int main()static char x100;int i;scanf("%s",&x);for(i=0;i<strlen(x);i+)if(xi>='0'&&xi<='9')continue;if(xi='*')xi-1=(xi-1-'0')*(xi+1-'0')+'0'xi+1='0'i+;else if(xi='/')xi-1=(xi-1-'0')/(xi+1-'0')+'0'xi+1='0'i+;for(i=1;i<strlen(x);i+)if(xi>='0'&&xi<='9')if(xi-1='+')x0+=(xi-'0');else if(xi-1='-')x0-=(xi-'0');elsecontinue;printf("%cn",x0);return 0;.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1