C语言程序设计慕课下编译答案完美.docx
- 文档编号:30272586
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:28
- 大小:18.81KB
C语言程序设计慕课下编译答案完美.docx
《C语言程序设计慕课下编译答案完美.docx》由会员分享,可在线阅读,更多相关《C语言程序设计慕课下编译答案完美.docx(28页珍藏版)》请在冰豆网上搜索。
C语言程序设计慕课下编译答案完美
1求最大公约数和最小公倍数(15分)
#include
intfun1(intm,intn)//辗转相除法求m/n的公约数
{
intr;
while(n)
{
r=m%n;
m=n;
n=r;
}
returnm;
}
intfun2(intm,intn)//最小公倍数
{
returnm*n/fun1(m,n);
}
intmain()
{
inta,b;
scanf("%d,%d",&a,&b);//输入
printf("最大公约数:
%d\n最小公倍数:
%d\n",fun1(a,b),fun2(a,b));
return0;
}
2排序并插入(15分)
#include
voidInsertionSort(int*arr,intn)//插入排序
{
int*last=0,*next=0,key=0,i=0;
for(i=1;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; } } } voidOutPutArray(constint*arr,intn)//打印一个数组 { inti; for(i=0;i { printf("%d",arr[i]); if(i } printf("\n"); } voidInsertNumber(int*arr,intn) { intkey=0,i=0; InsertionSort(arr,n-1);//对之前的n-1个数排序 //OutPutArray(arr,n-1);//这里可以打印出来看一下对之前的数据排序是否正确 scanf("%d",&key);//输入一个数 if(key { for(i=n-1;0 { arr[i]=arr[i-1]; } arr[0]=key; } else { for(i=n-2;key { arr[i+1]=arr[i]; } arr[++i]=key; } } intmain() { intarr[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 intfun1(intm,intn)//辗转相除法求m/n的公约数 { intr; while(n) { r=m%n; m=n; n=r; } returnm; } intmain() { inta,b; scanf("%d,%d",&a,&b);//输入 printf("%d\n",fun1(a,b)); return0; } 4.奇数球和 #include intmain() {intn; intsum(intn); scanf("%d",&n); printf("%d\n",sum(n)); } intsum(intn) {intb; if(n>1) b=sum(n-1)+2*n-1; if(n==1) b=1; returnb;} 5.巧算自然数 #include intstep=1; voidfc(intn)//输出n这个数并按角谷猜想对n做处理以便进入下一步。 返回值是总步数。 { if(n==1) { printf("%d",n); return; } elseif(n%2==0) { printf("%d,",n); fc(n/2); step++; } else { printf("%d,",n); fc(n*3+1); step++; } } intmain(intargc,char*argv[]) { intn; scanf("%d",&n); fc(n); printf("\nstep=%d\n",step); return0; } 6.卖鸭子 #include intmain(){ staticinti,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"); return0; } 7.各位数字之和 intadd(ints) { if(s<10) returns; elsereturns%10+add(s/10); } intmain(intargc,char*argv[]) { inta,b; scanf("%d",&a); b=add(a); printf("%d",b); return0; } 对称字符串 #include #include main() {chara[100]; inti,j; gets(a); i=0; j=strlen(a)-1; while(i {if(a[i]==a[j]) {i++;j--;} else break;} if(i>=j)printf("YES\n"); elseprintf("NO\n"); } 指针排序 #include voidsort(int*p,intn); voidsort(int*p,intn) { inti,j; inttemp=0; for(i=0;i { for(j=0;j { if(p[j]>p[j+1]) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } } } intmain() { inti; inta[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); return0; } 查找数 #include voidfind(int*p,intelement,intn); voidfind(int*p,intelement,intn) { inti,flag=0;; for(i=0;i { flag++; if(element==p[i]) { printf("%d\n",p[i]); break; } } if(flag==n) { printf("No\n"); } } intmain() { inti; inta[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } int*p=a; intnum; scanf("%d",&num); find(p,num,10); return0; } 输出指定成绩 #include intmain(){ intgrade[3][4],i,j,(*p)[4]=grade,n; floatave=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); else printf("%d\n",(int)ave); return0; } 成绩排序 #include voidaverage(intp[][6],intn); voidaverage(intp[][6],intn) { inti; for(i=0;i<4;i++) { p[n][4]+=p[n][i]; } p[n][5]=p[n][4]/4; } voidPrint(intp[][6],intn) { intmax1=p[0][5]; intmax2=p[1][5]; intmax3=p[2][5]; inti; 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]); } } elseif(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]); } } elseif(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]); } } } intmain() { inti,j; inta[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); return0; } 统计字符串出现次数 #include #include intmain(){ charstr1[100],str2[100]; intflag=0,counter=0,l1,l2,i,j; gets(str1);gets(str2); l1=strlen(str1);l2=strlen(str2); for(i=0;i if(str1[i]==str2[0]){ for(j=1;j if(str1[i+j]! =str2[j]) break; elseflag=1; } if(flag) counter++; } } if(counter) printf("%d\n",counter); else printf("No\n"); return0; } 成绩统计求平均分 #include 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 #include intl; voidgm(char*a); main() { chars[100]={0}; gets(s); l=strlen(s); gm(s); } voidgm(char*a) { inti; chard[100]={0}; for(i=0;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" structade {intno;intam;intbm;intcm;}; structadeN[3]= {1,70,80,90,2,75,85,95,3,88,84,65}; main() { chars[300];inti=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);} elseprintf("0"); } 字母储存 #include #include typedefstructChar_ {charch; charintch; structChar_*next; } CHAR_; intmain(void) { CHAR_*node=NULL; CHAR_*ch_=NULL; CHAR_*hear=NULL; charzimu='a'; charpanduanzimu; charrecord; 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; } } elseif(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; } return0; } 链表合并 #include #include intmain(){ staticinti,j,m,n; staticcharq,x[100],y[100],z[100]; gets(x);gets(y); strcat(x,y); m=strlen(x); for(j=0;j for(i=0;i q=x[j]; if(x[j]>x[j+i]){ x[j]=x[j+i]; x[j+i]=q; } } } for(i=0;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])
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 慕课下 编译 答案 完美