C語言程序設(shè)計下mooc答案_第1頁
C語言程序設(shè)計下mooc答案_第2頁
C語言程序設(shè)計下mooc答案_第3頁
C語言程序設(shè)計下mooc答案_第4頁
C語言程序設(shè)計下mooc答案_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、2016.03.2806.30 北京理工大學(xué) MOOCC語言程序設(shè)計(下)網(wǎng)上作業(yè)答案第一周編程作業(yè)1、求最大公約數(shù)和最小公倍數(shù)(15分)題目內(nèi)容:  編寫程序,在主函數(shù)中輸入兩個正整數(shù) a,b,調(diào)用兩個函數(shù) fun1() 和 fun2(),分別求 a 和 b 的最大公約數(shù)和最小公倍數(shù),在主函數(shù)中輸出結(jié)果。輸入格式:  兩個正整數(shù)輸出格式:  最大公約數(shù)和最小公倍數(shù)輸入樣例:12,40回車輸出樣例:最大公約數(shù):4回車最小公倍數(shù):120回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h> int fun1(int

2、 m,int n) int r; r=m%n; return r=0?n:fun1(n,r); int fun2(int m,int n)int t;t=m*n/fun1(m,n);return t; int main() int t,m,n; scanf("%d,%d",&m,&n);if(m<n)t=m;m=n;n=t; printf("最大公約數(shù):%dn",fun1(m,n);printf("最小公倍數(shù):%dn",fun2(m,n); return 0; 2、排序并插入(15分)題目內(nèi)容:  編寫

3、程序,在主函數(shù)中定義一個有10個元素的整型一維數(shù)組,用戶輸入9個數(shù)據(jù),調(diào)用函數(shù),對數(shù)組元素進行從小到大排序后,在函數(shù)中輸入一個數(shù),插入到數(shù)組中正確的位置,并輸出。輸入格式:  9個整數(shù)和1個整數(shù)輸出格式:  10個整數(shù)輸入樣例:2,3,1,5,6,76,89,31,90回車7回車輸出樣例:1,2,3,5,6,7,31,76,89,90回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h>int main()int t,j,i,n10; for(i=0; i<9; i+) scanf("%d", &

4、amp;ni); if(i<8) scanf(","); scanf("%d",&n9) ;for(i=0;i<9;i+) for(j=0;j<= 8-i;j+) if(nj > nj+1) t = nj; nj = nj+1; nj+1 = t; for(i=0;i<10;i+)printf("%d",ni);if(i<9) printf(",");return 0;第二周編程作業(yè)1、最大公約數(shù)(15分)題目內(nèi)容:  輸入兩個整數(shù)m,n,用遞歸算法實現(xiàn)計算兩個

5、數(shù)的最大公約數(shù)。輸入格式:  輸入兩個整數(shù)m,n輸出格式:  最大公約數(shù)輸入樣例:12,40回車輸出樣例:4回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h> int gcd(int m,int n) int r; r=m%n; return r=0?n:gcd(n,r); int main() int t,m,n; scanf("%d,%d",&m,&n);if(m<n)t=m;m=n;n=t; printf("%dn",gcd(m,n); return

6、0; 2、奇數(shù)求和(15分)題目內(nèi)容:  用遞歸算法實現(xiàn),輸入整數(shù)n(n>0), 求1+3+5+7.+(2*n-1) 的和輸入格式:  輸入整數(shù)n輸出格式:  輸出和輸入樣例:5回車輸出樣例:25回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h> int fun(int n)int f;if(n=1) f=1;else f=fun(n-1)+2;return f; int main() int i,m,t=0; scanf("%d",&m);for(i=0;i<m;i+

7、) t=t+fun(i+1); printf("%dn",t); return 0; 第三周編程作業(yè)1、巧算自然數(shù)(10分)題目內(nèi)容:  編程實現(xiàn)輸入一個自然數(shù),若為偶數(shù),則把它除以2;若為奇數(shù),則把它乘以3加1。經(jīng)過如此有限次運算后,總可以得到自然數(shù)值1。輸出經(jīng)過多少次可以得到自然數(shù)1和每次得到的值。輸入格式:  輸入一個自然數(shù)輸出格式:  輸出經(jīng)過多少次可以得到自然數(shù)1和每次得到的值輸入樣例:22回車輸出樣例:22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1回車step=16回車時間限制:500ms內(nèi)存限

8、制:32000kbCode:#include <stdio.h> int fun(int n)if(n%2=0) n=n/2;else n=3*n+1;return n; int main() int i,m; scanf("%d",&m);for(i=1;i+) printf("%d,",m);m=fun(m);if(m=1) break; printf("1nstep=%dn",i+1); return 0; 2、賣鴨子(10分)題目內(nèi)容:    編程調(diào)用遞歸函數(shù)。一個人趕著鴨子去

9、每個村莊賣,每經(jīng)過一個村子賣去所趕鴨子的一半又一只。這樣他經(jīng)過了7個村子后還剩2只鴨子,問他出發(fā)時共趕多少只鴨子?經(jīng)過每個村子時依次賣出多少只鴨子?輸入格式:無輸出格式:出發(fā)時總鴨子數(shù)每個村子賣出鴨子數(shù)輸入樣例:無輸出樣例:(不是結(jié)果,僅表示格式)sum=25回車sell=8,sell=4,回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h>int fun(int i)int sum;if(i=7) sum=2; else sum=(fun(i+1)+1)*2; return sum;int main() int i; printf(&qu

10、ot;sum=%dn",fun(0); for(i=1;i<=7;i+)printf("sell=%d,",fun(i)+2);printf("n"); return 0;3、輸出各位數(shù)字之和(10分)題目內(nèi)容:  編程調(diào)用遞歸函數(shù),求輸入一個數(shù),輸出這個數(shù)的各位數(shù)字之和。輸入格式:  輸入一個數(shù)輸出格式:  輸出這個數(shù)的各位數(shù)字之和輸入樣例:2354回車輸出樣例:14回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h>int main()int num

11、= 0;int s = 0; int i = 0; scanf("%d", &num); while(num) s += num%10; num = num/10; i+; printf("%dn", s ); return 0;第四周編程作業(yè)1、對稱字符串(15分)題目內(nèi)容:    從鍵盤輸入一個字符串,判斷是否為對稱字符串,若是輸出“YES”,若不是輸出“NO”輸入格式:    一個字符串輸出格式:    YES or NO輸入樣例1:abcdedcba

12、回車輸出樣例1:YES回車輸入樣例2:1234432回車輸出樣例2:NO回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"char s100;int huiwen(int a,int b)if(a=b|b<a)return 1;else if(sa=sb)return huiwen(a+1,b-1);else return 0;int main()int length;int result ;gets(s);length=strlen(s);result=huiwen

13、(0,length-1);if(result=1)printf("YESn");else printf("NOn");2、排序(10分)題目內(nèi)容:    用指針方法,將一維數(shù)組int a10 中元素按從小到大順序輸出。輸入格式:    10個整數(shù),空格隔開輸出格式:    排序后的10個數(shù),逗號隔開輸入樣例:12 34 56 43 7 89 81 11 33 90回車輸出樣例:7,11,12,33,34,43,56,81,89,90回車時間限制:500ms內(nèi)存限制:

14、32000kbCode:#include "stdio.h"#include "string.h"fun (pa,n)int *pa,n;int i,j,t;for(i=0;i<n-1;i+) for(j=i+1;j<n;j+) if (*(pa+i)>*(pa+j)t=*(pa+i);*(pa+i)=*(pa+j);*(pa+j)=t; int main ()int a10,i;for( i=0; i<10;i+)scanf("%d",&ai);fun(a,10);for(i=0;i<9;i+)

15、printf("%d,",ai);printf("%dn",a9);return 0;3、查找數(shù)(15分)題目內(nèi)容:    用指針方法,在一個一維數(shù)組int a10的元素中,查找給定的數(shù),若找到則輸出該數(shù),若沒找到,輸出No。輸入格式:    第一行:10個整數(shù),空格隔開    第二行:要查找的數(shù)輸出格式:    找到的數(shù)orNo輸入樣例1:11 22 43 56 78 90 76 4 2 10回車43回車輸出樣例1:43回車輸入樣例2

16、:1 8 3 4 5 6 2 1 7 9回車10回車輸出樣例2:No回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"int main()int b,i,a10,*p=a;for(i=0;i<10;i+) scanf("%d",&ai);scanf("%d",&b);for(i=0;i+)if(b=*(p+i)printf("%dn",*(p+i);break;if(i=9) printf(&

17、quot;Non");break;return 0;第五周編程作業(yè)1輸出指定學(xué)生成績(15分)題目內(nèi)容:    從鍵盤輸入3個同學(xué)4門課的成績,輸出指定同學(xué)的成績和平均分。輸入格式:    輸入3個同學(xué)4門課的成績輸出格式:    輸出指定同學(xué)的成績和平均分輸入樣例:89 78 80 76 88 78 75 90 99 92 100 89回車1回車輸出樣例:89 78 80 76回車80.75回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h&

18、quot;#include "string.h"int main()int n,i,j,a34;float x=0;for(i=0;i<3;i+)for(j=0;j<4;j+)scanf("%d",&aij);scanf("%d",&n);for(i=0;i<4;i+) x=x+an-1i;x=x/4;for(i=0;i<4;i+) printf("%d",an-1i);if(i!=3) printf(" ");printf("n");

19、printf("%gn",x);return 0;2、成績排序(10分)題目內(nèi)容:    從鍵盤輸入3個同學(xué)4門課的成績,將其按平均分從高到低排序輸出。輸入格式:    輸入3個同學(xué)4門課的成績輸出格式:    按平均分從高到低排序輸出輸入樣例:89 78 80 76 88 78 75 90 99 92 100 89回車輸出樣例:99,92,100,89回車88,78,75,90回車89,78,80,76回車時間限制:500ms內(nèi)存限制:32000kbCode:#include &qu

20、ot;stdio.h"#include "string.h"int main()int m,i,j,k,a34,b3;for(i=0;i<3;i+)for(j=0;j<4;j+)scanf("%d",&aij);for(i=0;i<3;i+)bi=0;for(j=0;j<4;j+) bi+=aij;for(i=0;i<2;i+) for(j=i+1;j<3;j+)if (bi<bj)m=bi;bi=bj;bj=m;for(k=0;k<4;k+)m=aik;aik=ajk;ajk=m;for

21、(i=0;i<3;i+)for(j=0;j<3;j+)printf("%d,",aij);printf("%dn",aij);return 0;第六周編程作業(yè)1、統(tǒng)計字符串出現(xiàn)次數(shù)(10分)題目內(nèi)容:    從鍵盤輸入兩個字符串,輸出第二個串在第一個串中出現(xiàn)的次數(shù)。如果沒有,輸出“No”。輸入格式:    輸入兩個字符串輸出格式:    輸出第二個串在第一個串中出現(xiàn)的次數(shù)。    如果沒有,輸出 No輸入樣例1:This i

22、s his book回車is回車輸出樣例1:3回車輸入樣例2:This is my book回車at回車輸出樣例2:No回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"int main()int m,n,i,j;char a100,b100;int k=0;char *p1=a,*p2=b;gets(a);gets(b);m=strlen(a);n=strlen(b);for(i=0;i<m-n;i+)if(*(p1+i)=*(p2)for(j=1;j<n;j

23、+)if(*(p1+i+j)!=*(p2+j) break;if(j=n-1) k+;if(k>0) printf("%dn",k);else printf("Non");return 0;2、成績統(tǒng)計(10分)題目內(nèi)容:    有如下學(xué)生成績表,第一列前4行為學(xué)生姓名,第一列最后一行為平均分,表中給定數(shù)據(jù)為學(xué)生成績(每一列為同一門課)wanglei78908792lihong88918978zhangli84768375liuming88907183AVERAGE    編程輸

24、出:學(xué)生姓名,每個學(xué)生的平均分,及各門課程平均分輸入格式:無輸出格式:學(xué)生姓名,每個學(xué)生的平均分(按行輸出)各門課程平均分(按列輸出)(若平均分為整數(shù),則輸出整數(shù),若平均分為小數(shù),則保留兩位)輸入樣例:無輸出樣例:wanglei,0.00回車lihong,0.50回車zhangli,0.50回車liuming,80回車AVERAGE:4.50,6.75,2.50,2回車(僅作輸出格式實例展示,不代表最終結(jié)果)時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"int main()

25、int i,j;float a44=78,90,87,92,88,91,89,78,84,76,83,75,88,90,71,83;float A4=0,B4=0;char n48="wanglei","lihong","zhangli","liuming"for(i=0;i<4;i+)for(j=0;j<4;j+)Ai=Ai+aij;Ai=Ai/4;for(i=0;i<4;i+)for(j=0;j<4;j+)Bi=Bi+aji;Bi=Bi/4;for(i=0;i<4;i+) if(A

26、i=(int)Ai) printf("%s,%dn",ni,(int)Ai);else printf("%s,%.2fn",ni,Ai);printf("AVERAGE:");for(i=0;i<4;i+)if(Bi=(int)Bi) printf("%d",(int)Bi);else printf("%.2f",Bi);if(i!=3) printf(",");printf("n");return 0;第七周編程作業(yè)1、字母加密對照表(15分)題目

27、內(nèi)容:    先定義一張字母加密對照表。將需要加密的一行文字輸入加密程序,程序根據(jù)加密表中的對應(yīng)關(guān)系,可以很簡單地將輸入的文字加密輸出,對于表中未出現(xiàn)的字符則不加密。字母加密對照表輸入 a b c d e i k ; w輸出 d w k ; i a b c e輸入格式:  字母輸出格式:  字母輸入樣例1:abc回車輸出樣例1:dwk回車輸入樣例2:de回車輸出樣例2:;i回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"s

28、truct mchar x;char y;int main()int i,j;char c20;struct m w9='a','d','b','w','c','k','d','','e','i','i','a','k','b','','c','w','e'gets(c);for(i=0;ci!=0;i+)fo

29、r(j=0;j+) if(ci=wj.x) printf("%c",wj.y);break;if(j=8) printf("%c",ci);break;return 0;2、學(xué)生成績(15分)題目內(nèi)容:    定義結(jié)構(gòu)體,存儲學(xué)生學(xué)號和三門課成績及平均分,初始化成績?nèi)缦?,90,80,70,2,85,75,95,3,88,84,65,輸入學(xué)號,輸出平均分,輸入max,輸出最高分id。輸入格式:    輸入學(xué)號或max輸出格式:    輸出平均分或最高分id輸入樣例1

30、:1回車輸出樣例1:80回車輸入樣例2:max回車輸出樣例2:2回車輸入樣例3:4回車輸出樣例3:0回車時間限制:500ms內(nèi)存限制:32000kbCode:#include "stdio.h"#include "string.h"struct mint id;float mark3;int main()int a4,i,j;struct m stu4=1,90,80,70,2,85,75,95,3,88,84,65;float ave3=0;for(i=0;i<3;i+)for(j=0;j<3;j+) avei=avei+stui.mark

31、j;avei=avei/3;gets(a);if(strcmp(a,"max")=0) printf("2n");else if(strcmp(a,"1")=0) printf("%gn",ave0);else if(strcmp(a,"2")=0) printf("%gn",ave1);else if(strcmp(a,"3")=0) printf("%gn",ave2);else printf("0") ;ret

32、urn 0;第八周編程作業(yè)1、字母存儲(15分)題目內(nèi)容:  使用單項鏈表存儲一組字母a, b, c, d, c, b , a,輸入序號輸出字母,輸入字母輸出最后一次出現(xiàn)的序號,越界則輸出N。輸入格式:    序號或字母輸出格式:    字母或序號輸入樣例1:2回車輸出樣例1:c回車輸入樣例2:c回車輸出樣例2:4回車輸入樣例3:8回車輸出樣例3:N回車時間限制:500ms內(nèi)存限制:32000kbCode:#include<stdio.h>#include<stdlib.h>typedef struc

33、t 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 = NU

34、LL;if (node = NULL)node = ch_;elsenode->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

35、= 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->

36、;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);elseprintf("N");node = hear;while (node != NULL)hear =

37、 node->next;free(node);node = hear;return 0;2、鏈表合并(15分)題目內(nèi)容:    實現(xiàn)兩個由單項鏈表存儲的有序字母數(shù)據(jù)的合并,如有重復(fù)的則只保留一個。    例如:給定a, c ,f, b, e, g合并后結(jié)果為a, b, c , e , f , g。輸入格式:    兩個有序字母數(shù)據(jù)輸出格式:    合并后的字母數(shù)據(jù)輸入樣例1:a b c回車d e f回車輸出樣例1:a b c d e f回車輸入樣例2:e f g回車e

38、g m回車輸出樣例2:e f g m回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h> #include <stdlib.h> typedef struct Node char data; struct Node *next; List,*LinkList; List* CreateLinkList() LinkList L = (LinkList)malloc(sizeof(List),P; P = L; char c; while(1) P->next = (LinkList)malloc(sizeof(List);

39、 P = P->next; scanf("%c%c",&(P->data),&c); if(c = 'n') break; P->next = NULL; return L; LinkList MergeLinkList(LinkList L1,LinkList L2) LinkList P1 = L1->next, P2 = L2->next; LinkList L = (LinkList)malloc(sizeof(List),P; P = L; while(P1 && P2) P->n

40、ext = (LinkList)malloc(sizeof(List); P = P->next; if(P1->data > P2->data) P->data = P2->data; P2 = P2->next; else if(P1->data < P2->data) P->data = P1->data; P1 = P1->next; else P->data = P1->data; P1 = P1->next; P2 = P2->next; while(P1) P->next

41、= (LinkList)malloc(sizeof(List); P = P->next; P->data = P1->data; P1 = P1->next; while(P2) P->next = (LinkList)malloc(sizeof(List); P = P->next; P->data = P2->data; P2 = P2->next; P->next = 0; return L; void ShowList(LinkList L) LinkList P = L->next; while(P->next

42、) printf("%c ",P->data); P = P->next; printf("%cn",P->data); int main() LinkList L1,L2,L3; L1 = CreateLinkList(); L2 = CreateLinkList(); L3 = MergeLinkList(L1,L2); ShowList(L3); return 0; 第九周編程作業(yè)1、解析字符串(15分)題目內(nèi)容:    輸入一個字符串,要求將其中的字母n理解為回車符號n,模擬文件緩沖區(qū)讀取的數(shù)據(jù),并按替換后的

43、數(shù)據(jù)流解析出其中包括的字符串。(即通過'n'分割兩個字符串)輸入格式:    一個字符串輸出格式:    其中包括的字符串輸入樣例:abcnde回車輸出樣例:abc回車de回車時間限制:500ms內(nèi)存限制:32000kbCode:#include <stdio.h>#include <string.h>#include <stdlib.h>int main() int i,j,k; char a100; gets(a); k=strlen(a); printf("%c&qu

44、ot;,a0); for(i=1;i<k;i+) if(ai='n') if(ai-1!='n') printf("n"); else printf("%c",ai); for(i=i+1;i<k;i+) printf("%c",ai);return 0; 2、字符串的輸入與反向顯示(15分)題目內(nèi)容:    請用標(biāo)準(zhǔn)設(shè)備文件的方式完成字符串的輸入與反向顯示。輸入格式:    字符串輸出格式:    字

45、符串輸入樣例:abc回車輸出樣例:cba回車時間限制:500ms內(nèi)存限制:32000kbCode:#include<string.h> #include <stdio.h>void reverse(char str,int start,int end) char t;if(end>=strlen(str) reverse(str,start,end-1); else if(start<end) t=strstart;strstart=strend;strend=t; reverse(str,start+1,end-1); int main( ) char str100;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論