C语言程序设计下mooc答案Word格式.docx
《C语言程序设计下mooc答案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计下mooc答案Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
![C语言程序设计下mooc答案Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/18/e6838372-4f8f-4378-83d5-35b4b7614ae3/e6838372-4f8f-4378-83d5-35b4b7614ae31.gif)
Code:
#include 〈stdio、h>
int main()
{
intt,j,i,n[10];
for(i=0;
i<
9;
i++)
{
ﻩscanf("
%d"
,&n[i]);
if(i<
8) scanf(”,");
}
scanf("%d"
&
n[9]) ;
for(i=0;
i<
i++)
{
for(j=0;
j〈=8-i;
j++)
{
if(n[j] >n[j+1])
{
t= n[j];
n[j]= n[j+1];
n[j+1]=t;
}
}
}
for(i=0;
i〈10;
i++)
printf(”%d"
,n[i]);
ﻩﻩif(i〈9) printf(”,”);
}
return0;
第二周编程作业
1、最大公约数(15分)
输入两个整数m,n,用递归算法实现计算两个数得最大公约数。
输入格式:
输入两个整数m,n
输出格式:
最大公约数
输入样例:
12,40[回车]
4[回车]
时间限制:
500ms内存限制:
32000kb
Code:
#include<
stdio、h>
intgcd(intm,intn)
{ int r;
r=m%n;
returnr==0?
gcd(n,r);
}
int main()
{ intt,m,n;
scanf("
%d,%d",&
m,&n);
ﻩif(m<
t=m;
m=n;
n=t;
ﻩ}
printf("
%d\n",gcd(m,n));
return0;
2、奇数求与(15分)
用递归算法实现,输入整数n(n>0), 求1+3+5+7…、+(2*n—1)得与
输入整数n
输出与
5[回车]
输出样例:
25[回车]
500ms内存限制:
32000kb
Code:
#include<
stdio、h>
intfun(intn)
ﻩint f;
if(n==1)f=1;
elsef=fun(n-1)+2;
ﻩreturnf;
}
intmain()
{inti,m,t=0;
scanf("
%d",&
m);
for(i=0;
i<
m;
i++)
ﻩt=t+fun(i+1);
ﻩ}
printf(”%d\n"
,t);
return0;
}
第三周编程作业
1、巧算自然数(10分)
编程实现输入一个自然数,若为偶数,则把它除以2;
若为奇数,则把它乘以3加1。
经过如此有限次运算后,总可以得到自然数值1.输出经过多少次可以得到自然数1与每次得到得值。
输入一个自然数
输出经过多少次可以得到自然数1与每次得到得值
22[回车]
22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1[回车]
step=16[回车]
32000kb
Code:
#include<
stdio、h>
intfun(intn)
ﻩif(n%2==0)n=n/2;
ﻩelsen=3*n+1;
returnn;
}
intmain()
{ inti,m;
scanf("%d”,&
m);
for(i=1;
;
i++)
ﻩprintf("
%d,"
,m);
ﻩﻩm=fun(m);
if(m==1) break;
printf(”1\nstep=%d\n”,i+1);
return0;
2、卖鸭子(10分)
编程调用递归函数。
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子得一半又一只。
这样她经过了7个村子后还剩2只鸭子,问她出发时共赶多少只鸭子?
经过每个村子时依次卖出多少只鸭子?
无
出发时总鸭子数
每个村子卖出鸭子数
(不就是结果,仅表示格式)
sum=25[回车]
sell=8,sell=4,[回车]
500ms内存限制:
32000kb
#include〈stdio、h〉
intfun(int i)
ﻩintsum;
if(i==7)sum=2;
elsesum=(fun(i+1)+1)*2;
returnsum;
intmain()
ﻩinti;
printf("sum=%d\n",fun(0));
for(i=1;
i〈=7;
i++)printf("
sell=%d,”,fun(i)+2);
ﻩprintf("
\n"
);
return0;
3、输出各位数字之与(10分)
编程调用递归函数,求输入一个数,输出这个数得各位数字之与。
输入一个数
输出这个数得各位数字之与
2354[回车]
14[回车]
500ms内存限制:
32000kb
Code:
#include<
stdio、h〉
intmain()
ﻩintnum=0;
ints=0;
ﻩinti = 0;
ﻩscanf(”%d”,&num);
ﻩwhile(num)
ﻩ ﻩs+=num%10;
num=num/10;
i++;
}
printf(”%d\n", s);
ﻩreturn0;
第四周编程作业
1、对称字符串(15分)
从键盘输入一个字符串,判断就是否为对称字符串,若就是输出“YES"
,若不就是输出“NO”
一个字符串
YESorNO
输入样例1:
abcdedcba[回车]
输出样例1:
YES[回车]
输入样例2:
1234432[回车]
输出样例2:
NO[回车]
500ms内存限制:
Code:
#include"stdio、h”
#include"
string、h"
chars[100];
inthuiwen(inta,int b)
if(a==b||b<a)
ﻩreturn1;
ﻩelseif(s[a]==s[b])
ﻩreturnhuiwen(a+1,b-1);
else return0;
intmain()
int length;
ﻩint result;
ﻩgets(s);
ﻩlength=strlen(s);
result=huiwen(0,length—1);
ﻩif(result==1)
printf(”YES\n”);
ﻩelseprintf("
NO\n"
2、排序(10分)
用指针方法,将一维数组inta[10]中元素按从小到大顺序输出。
10个整数,空格隔开
排序后得10个数,逗号隔开
1234 56 4378981113390[回车]
7,11,12,33,34,43,56,81,89,90[回车]
500ms内存限制:
Code:
#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;
ﻩ}
ﻩﻩ}
ﻩ}
}
intmain()
ﻩinta[10],i;
ﻩfor(i=0;
i〈10;
i++)
scanf("%d”,&a[i]);
ﻩfun(a,10);
for(i=0;
i〈9;
ﻩprintf("
%d,”,a[i]);
printf("
%d\n"
,a[9]);
ﻩreturn0;
3、查找数(15分)
用指针方法,在一个一维数组inta[10]得元素中,查找给定得数,若找到则输出该数,若没找到,输出No。
第一行:
10个整数,空格隔开
第二行:
要查找得数
找到得数orNo
输入样例1:
1122 4356 789076 4 2 10[回车]
43[回车]
输出样例1:
43[回车]
1 8 34 5621 79[回车]
10[回车]
输出样例2:
No[回车]
500ms内存限制:
Code:
#include”stdio、h”
#include"
string、h"
int main()
intb,i,a[10],*p=a;
ﻩfor(i=0;
i〈10;
i++)scanf("
%d",&a[i]);
ﻩscanf("
%d",&b);
for(i=0;
;
i++)
ﻩif(b==*(p+i))
ﻩ{
ﻩprintf(”%d\n",*(p+i));
ﻩﻩﻩbreak;
}
ﻩﻩif(i==9)
ﻩ{
printf("
No\n”);
ﻩﻩbreak;
ﻩ}
ﻩreturn 0;
第五周编程作业
1
输出指定学生成绩(15分)
从键盘输入3个同学4门课得成绩,输出指定同学得成绩与平均分。
输入3个同学4门课得成绩
输出指定同学得成绩与平均分
89 7880 76887875909992 10089[回车]
1[回车]
897880 76[回车]
80、75[回车]
500ms内存限制:
32000kb
Code:
#include "
stdio、h”
#include”string、h”
intmain()
int n,i,j,a[3][4];
ﻩfloat x=0;
ﻩfor(i=0;
3;
ﻩ{
ﻩfor(j=0;
j<4;
{
ﻩscanf(”%d"
&a[i][j]);
ﻩ}
scanf("%d",&
n);
for(i=0;
i<4;
i++)x=x+a[n-1][i];
x=x/4;
ﻩfor(i=0;
4;
i++)
ﻩprintf(”%d"
a[n-1][i]);
ﻩﻩif(i!
=3)printf(" "
ﻩprintf(”\n"
printf(”%g\n",x);
ﻩreturn0;
2、成绩排序(10分)
从键盘输入3个同学4门课得成绩,将其按平均分从高到低排序输出.
输入3个同学4门课得成绩
按平均分从高到低排序输出
897880768878 75 90999210089[回车]
99,92,100,89[回车]
88,78,75,90[回车]
89,78,80,76[回车]
500ms内存限制:
32000kb
#include"
stdio、h"
#include"
string、h"
intmain()
int m,i,j,k,a[3][4],b[3];
ﻩfor(i=0;
3;
ﻩﻩfor(j=0;
j<
j++)
ﻩﻩscanf(”%d”,&
a[i][j]);
for(i=0;
i〈3;
ﻩb[i]=0;
ﻩ
ﻩfor(j=0;
j〈4;
j++)b[i]+=a[i][j];
ﻩ
}
for(i=0;
i〈2;
i++)
for(j=i+1;
j<3;
j++)
if(b[i]<b[j])
m=b[i];
b[i]=b[j];
b[j]=m;
ﻩﻩ
ﻩfor(k=0;
k<
4;
k++)
{
m=a[i][k];
a[i][k]=a[j][k];
a[j][k]=m;
ﻩﻩ
ﻩ}
ﻩfor(i=0;
i<3;
ﻩfor(j=0;
j〈3;
j++)ﻩ
ﻩprintf(”%d,",a[i][j]);
ﻩprintf(”%d\n”,a[i][j]);
ﻩ}
ﻩreturn0;
第六周编程作业
1、统计字符串出现次数(10分)
从键盘输入两个字符串,输出第二个串在第一个串中出现得次数。
如果没有,输出“No"
。
输入两个字符串
输出第二个串在第一个串中出现得次数.
如果没有,输出No
输入样例1:
Thisis hisbook[回车]
is[回车]
输出样例1:
3[回车]
输入样例2:
Thisismy book[回车]
at[回车]
No[回车]
500ms内存限制:
Code:
#include"stdio、h"
#include"
string、h”
intm,n,i,j;
char a[100],b[100];
ﻩintk=0;
char*p1=a,*p2=b;
ﻩgets(a);
gets(b);
ﻩm=strlen(a);
ﻩn=strlen(b);
for(i=0;
i〈m—n;
ﻩif(*(p1+i)==*(p2))
ﻩﻩfor(j=1;
j<
n;
ﻩﻩ{
ﻩif(*(p1+i+j)!
=*(p2+j))break;
ﻩif(j==n—1)k++;
ﻩﻩ}
ﻩif(k〉0)printf("
%d\n",k);
ﻩelseprintf(”No\n"
return0;
2、成绩统计(10分)
有如下学生成绩表,第一列前4行为学生姓名,第一列最后一行为平均分,表中给定数据为学生成绩(每一列为同一门课)
wanglei
78
90
87
92
lihong
88
91
89
78
zhangli
84
76
83
75
liuming
88
90
71
83
AVERAGE
编程输出:
学生姓名,每个学生得平均分,及各门课程平均分
学生姓名,每个学生得平均分(按行输出)
各门课程平均分(按列输出)
(若平均分为整数,则输出整数,若平均分为小数,则保留两位)
wanglei,0、00[回车]
lihong,0、50[回车]
zhangli,0、50[回车]
liuming,80[回车]
AVERAGE:
4、50,6、75,2、50,2[回车]
(仅作输出格式实例展示,不代表最终结果)
500ms内存限制:
32000kb
#include”stdio、h"
#include"
string、h"
intmain()
int i,j;
ﻩfloata[4][4]={{78,90,87,92},{88,91,89,78},{84,76,83,75},{88,90,71,83}};
float A[4]={0},B[4]={0};
ﻩcharn[4][8]={{"
wanglei”},{”lihong"
},{”zhangli”},{”liuming"
}};
ﻩfor(i=0;
i〈4;
i++)
ﻩfor(j=0;
j<4;
j++)
ﻩ{
ﻩA[i]=A[i]+a[i][j];
ﻩA[i]=A[i]/4;
for(i=0;
i〈4;
i++)
ﻩﻩfor(j=0;
j〈4;
j++)
B[i]=B[i]+a[j][i];
ﻩ}
ﻩB[i]=B[i]/4;
i++)
ﻩ{
if(A[i]==(int)A[i])printf("%s,%d\n",n[i],(int)A[i]);
ﻩelseprintf("
%s,%、2f\n”,n[i],A[i]);
printf(”AVERAGE:
”);
for(i=0;
i〈4;
if(B[i]==(int)B[i])printf("%d",(int)B[i]);
ﻩelseprintf("
%、2f",B[i]);
ﻩif(i!
=3)printf("
,”);
ﻩprintf("
\n”);
ﻩreturn 0;
第七周编程作业
1、字母加密对照表(15分)
先定义一张字母加密对照表。
将需要加密得一行文字输入加密程序,程序根据加密表中得对应关系,可以很简单地将输入得文字加密输出,对于表中未出现得字符则不加密。
字母加密对照表
输入abcdeik;
w
输出dw k;
iabce
字母
abc[回车]
输出样例1:
dwk[回车]
de[回车]
输出样例2:
i[回车]
500ms内存限制:
#include"stdio、h”
#include ”string、h”
structm
charx;
ﻩchary;
};
int main()
inti,j;
char c[20];
struct m w[9]={{'
a’,'d’},{’b',’w'
},{'
c','
k'},{’d','
’},{'
e',’i’},{’i’,'
a'
},{'k'
,’b’},{';
'
,'
c’},{'
w’,’e'}};
gets(c);
for(i=0;
c[i]!
=0;
ﻩfor(j=0;
j++)
ﻩﻩﻩif(c[i]==w[j]、x)
ﻩ{
ﻩﻩprintf(”%c”,w[j]、y);
break;
}
ﻩﻩif(j==8)
ﻩﻩﻩﻩprintf(”%c"
c[i]);
ﻩ}
ﻩﻩ}
ﻩreturn0;
2、学生成绩(15分)
定义结构体,存储学生学号与三门课成绩及平均分,初始化成绩如下{{1,90,80,70},{2,85,75,95},{3,88,84,65}},输入学号,输出平均分,输入max,输出最高分id.
输入学号或max
输出平均分或最高分id
1[回车]
80[回车]
max[回车]
输出样例2:
2[回车]
输入样例3:
4[回车]
输出样例3:
0[回车]
500ms内存限制:
32000kb
stdio、h”
#include"
string、h"
structm
intid;
ﻩfloatmark[3];
};
intmain()
inta[4],i,j;
struct mstu[4]={{1,90,80,70},{2,85,75,95},{3,88,84,65}};
ﻩfloat ave[3]={0};
ﻩfor(i=0;
i〈3;
ﻩﻩfor(j=0;
j++)ave[i]=ave[i]+stu[i]、mark[j];
ﻩave[i]=ave[i]/3;
ﻩif(strcmp(a,”max")==0) printf("2\