C语言程序设计慕课下编译答案完美.docx
《C语言程序设计慕课下编译答案完美.docx》由会员分享,可在线阅读,更多相关《C语言程序设计慕课下编译答案完美.docx(28页珍藏版)》请在冰豆网上搜索。
![C语言程序设计慕课下编译答案完美.docx](https://file1.bdocx.com/fileroot1/2023-8/13/68658a9d-1887-4d5c-992f-7868f49daed4/68658a9d-1887-4d5c-992f-7868f49daed41.gif)
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;iif(str1[i]==str2[0]){
for(j=1;jif(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;jfor(i=0;iq=x[j];
if(x[j]>x[j+i]){
x[j]=x[j+i];
x[j+i]=q;
}
}
}
for(i=0;ifor(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])