文档库 最新最全的文档下载
当前位置:文档库 › 中国MOOC, C 语言代码和实验报告总结

中国MOOC, C 语言代码和实验报告总结

1 递归法计算游戏人员的年龄(4分)

题目内容:

有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。

递归函数原型:unsigned int ComputeAge(unsigned int n);

提示:

递归公式

输入格式:

"%u"

输出格式:

"The person's age is %u\n"

输入样例1:

5↙

输出样例1:

The_person's_age_is_18

输入样例2:

10↙

输出样例2:

The_person's_age_is_28

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

unsigned int a,b;

scanf("%u",&a);

b=10+(a-1)*2;

printf("The person's age is %u\n",b);

return 0;

}

2 魔术师猜数(4分)

题目内容:

在一种室内互动游戏中,魔术师要每位观众心里想一个三位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少,则魔术师一定能猜出观众心里想的原数abc是多少。例如,观众甲说他计算的和值是1999,则魔术师立即说出他想的数是443,而观众乙说他计算的和值是1998,则魔术师说:“你算错了!”。请编程模拟这个数字魔术游戏。要求用函数实现,函数原型:int Magic(int m);其中形参m代表观众计算的和值。

输入格式:

"%d"

输出格式:

观众计算错误,魔术师给出的结论:"The sum you calculated is wrong!\n"

观众计算正确,魔术师给出的结论:"The number is %d\n"

输入样例1:

1998↙

输出样例1:

The_sum_you_calculated_is_wrong!

输入样例2:

1999↙

输出样例2:

The_number_is_443

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int is(int i,int k)

{

int j=0,ii=i;

while (ii){j+=ii%10;ii/=10;}

if (j*222==k+i) return 1;

else return 0;

}

int main()

{

int i,j,k,sum;

scanf("%d",&sum);

k=0;

for (i=100;i<=999;i++)

if (is(i,sum)) {k=i;break;}

if (k==0) printf("The sum you calculated is wrong!\n");

else printf("The number is %d\n",k);

return 0;

}

3 寻找中位数v1.0(4分)

题目内容:

编写一个函数返回三个整数中的中间数。函数原型:int mid(int a, int b, int c); 功能是返回a,b,c三数中大小位于中间的一个数。

输入格式:

"%d%d%d"

输出格式:

"The result is %d\n"

输入样例1:

12 6 18↙

输出样例1:

The_result_is_12

输入样例2:

-9 7 -2↙

输出样例2:

The_result_is_-2

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

int a[4],max,min,ans,i;

scanf("%d%d%d",&a[1],&a[2],&a[3]);

max=1;for (i=1;i<=3;i++) if(a[i]>a[max]) max=i;

min=1;for (i=1;i<=3;i++) if(a[i]< a[min]) min=i;

ans=6-max-min;

printf("The result is %d\n",a[ans]);

return 0;

}

4 还原算术表达式(4分)

题目内容:

编写程序求以下算式中XYZ的值。

输入格式:

输出格式:"X=%d,Y=%d,Z=%d\n"

输入样例:

输出样例:

X=3,Y=2,Z=1

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:31kb

#include "stdio.h"

int main()

{

int x,y,z;

for (x=0;x<=9;x++)

for (y=0;y<=9;y++)

for (z=0;z<=9;z++)

if (x*100+y*110+z*12==532)

printf("X=%d,Y=%d,Z=%d\n",x,y,z);

return 0;

}

1 计算礼炮声响次数(4分)

题目内容:

在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放1次。假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。

输入格式:无

输出格式:

n=%d

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字

符串!

时间限制:500ms内存限制:32000kb

#include "stdio.h"

main()

{

int n=0,t;

for (t=0; t<=20*7; t++)

{

if (t%5 == 0 && t <=20*5)

{

n++;continue;

}

if (t%6 == 0 && t <=20*6)

{

n++;continue;

}

if (t%7 == 0)

{

n++;

}

}

printf("n=%d\n", n);

}

2 兔子生崽问题(4分)

题目内容:

假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子(即当年12月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题。

参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:

(1)每月小兔对数= 上个月成兔对数。

(2)每月成兔对数= 上个月成兔对数+ 上个月小兔对数。

综合(1)和(2)有:每月成兔对数= 前两个月成兔对数之和。

用fn(n=1,2,…)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式:

输入格式:无

输出格式:

每个月兔子对数的输出格式: "% 4d"

第12个月的兔子总数的输出格式: "\nTotal=%d\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include"stdio.h"

int main()

{

int i,a[13];

a[1]=1;a[0]=1;

for (i=2;i<=12;i++)

a[i]=a[i-1]+a[i-2];

for (i=1;i<=12;i++)

printf("% 4d",a[i]);

printf("\nTotal=%d\n",a[12]);

return 0;

}

3 抓交通肇事犯(4分)

题目内容:

一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。

[提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数

k = 1000*i + 100*i + 10*j + j

式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。

输入格式:无

输出格式:"k=%d,m=%d\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include"stdio.h"

int main()

{

int i,m,ans;

for (m=31;m<=100;m++)

{

ans=m*m;

if (((ans/100)%11==0)&&((ans%100)%11==0))

printf("k=%d,m=%d\n",ans,m);

}

return 0;

}

4 检验并打印幻方矩阵。(4分)

题目内容:

幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。

输入格式: "%d"

输出格式:

如果是幻方矩阵,输出提示信息: "It is a magic square!\n"

矩阵元素的输出: "% 4d"(换行使用"\n")

如果不是幻方矩阵,输出提示信息: "It is not a magic square!\n"

输入样例1:

17_24_1_8_15

23_5_7_14_16

4_6_13_20_22

10_12_19_21_3

11_18_25_2_9

(输人样例中“_”代表空格)

输出样例1:

It is a magic square!

**17**24***1**8**15

**23***5***7**14**16

***4***6**13**20**22

**10**12**19**21***3

**11**18**25***2***9

(输出样例中“*”代表空格)

输入样例2:

1_0_1_6_1

3_1_1_1_1

1_1_1_1_2

1_1_1_1_1

9_1_7_1_1

(输人样例中“_”代表空格)

输出样例2:

It is not a magic square!

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(输人样例中“_”代表空格,输出样例中“*”代表空格)

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

int a[6][6];

int i,j;

for (i=1;i<=5;i++)

for (j=1;j<=5;j++)

scanf("%d",&a[i][j]);

for (i=1;i<=5;i++)

{

a[i][0]=0;

for (j=1;j<=5;j++)

a[i][0]+=a[i][j];

if (a[i][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}

}

for (i=1;i<=5;i++)

{

a[0][i]=0;

for (j=1;j<=5;j++)

a[0][i]+=a[j][i];

if (a[0][i]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}

}

if (a[1][0]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}

a[0][0]=0;

for (i=1;i<=5;i++) a[0][0]+=a[i][i];

if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}

a[0][0]=0;

for (i=1;i<=5;i++) a[0][0]+=a[i][6-i];

if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}

printf("It is a magic square!\n");

for (i=1;i<=5;i++)

{

for (j=1;j<=5;j++)

printf("% 4d",a[i][j]);

printf("\n");

}

return 0;

}

1 ISBN识别码判断(4分)

题目内容:

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

程序运行结果示例1:

0-123-41562-4↙

Right

程序运行结果示例2:

0-123-41562-7↙

0-123-41562-4

输入格式: 用gets()输入字符串

输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN的格式要求)。输出格式:

输入的ISBN号码的识别码正确,输出信息: "Right"

输入的ISBN号码的识别码错误,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”),输出格式:"%s"

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

输入样例:

输入样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int xg(char *s,int k)

{

if (k==10) *(s+12)='X';

else *(s+12)='0'+k;

}

int main()

{

char s[14];

int a[10],i,ans=0;

gets(s);

a[1]=s[0]-'0';

a[2]=s[2]-'0';

a[3]=s[3]-'0';

a[4]=s[4]-'0';

a[5]=s[6]-'0';

a[6]=s[7]-'0';

a[7]=s[8]-'0';

a[8]=s[9]-'0';

a[9]=s[10]-'0';

for (i=1;i<=9;i++)

ans+=a[i]*i;

ans%=11;

if(ans+'0'==s[12]||(ans==10&&s[12]=='X'))

printf("Right");

else {xg(s,ans);printf("%s",s);}

return 0;

}

2 摘苹果(4分)

题目内容:

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。程序运行结果示例1:

100 110 130 200 140 150 156 187 197 149↙

110↙

4

程序运行结果示例2:

90 210 102 153 147 110 130 182 88 113↙

100↙

6

输入格式: "%d"

输入包括两行数据:

第1行包含10个100到200之间的整数(包括100和200,以厘米为单位),分别表示10个苹果到地面的高度。两个相邻的整数之间用一个空格隔开。

第2行只包括一个100到120之间的整数(包含100和120,以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式: "%d"

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

int app[11],i,ans=0,h;

for (i=1;i<=10;i++)

scanf("%d",app+i);

scanf("%d",&h);

for (i=1;i<=10;i++)

if (app[i]<=h+30) ans++;

printf("%d",ans);

return 0;

}

3 求最大素数(4分)

题目内容:

求500以内的10个最大素数及其和,并分别输出这10个最大素数及其和。

要求10个素数按从大到小的顺序输出。

输入格式: 无

输出格式:

10个最大素数的输出格式:"% 6d"

总和的输出格式:"\nsum=%d\n"

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int is(int k)

{

int i=1;

while(ss[i]*ss[i]<=k)

{

if (k%ss[i]==0) return 0;

i++;

}

return 1;

}

int main()

{

int n=2,i,sum=0;

ss[1]=2;ss[2]=3;

for (i=4;i<=500;i++)

if (is(i)) ss[++n]=i;

for (i=n;i>=n-9;i--)

{

printf("% 6d",ss[i]);

sum+=ss[i];

}

printf("\nsum=%d\n",sum);

return 0;

}

4 字符串逆序(4分)

题目内容:

用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下:

(1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。

调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。

(2)在子函数Inverse()中实现字符串的逆序存放。函数原型为:

void Inverse(char str[]);

程序运行结果示例1:

Input a string:

abcde↙

Inversed results:

edcba

程序运行结果示例2:

Input a string:

Inversed results:

olleh

输入格式: 用gets()输入字符串

输出格式:

输入提示信息:"Input a string:\n"

输出提示信息:"Inversed results:\n"

用puts()输出字符串

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

#include "string.h"

int dh(char *s,int len)

{

int i;char c;

for (i=0;i<=len/2;i++)

{

c=*(s+i);

*(s+i)=*(s+len-i);

*(s+len-i)=c;

}

}

int main()

{

char s[80],len=0;

printf("Input a string:\n");

gets(s);

while (s[len]!='\0') len++;

len--;

dh(s,len);

printf("Inversed results:\n");

puts(s);

return 0;

}

1 水手分椰子(4分)

题目内容:

五个水手在岛上发现一堆椰子,先由第1个水手把椰子分为等量的5堆,还剩下1个给了猴

子,自己藏起1堆。然后,第2个水手把剩下的4堆混合后重新分为等量的5堆,还剩下1个给了猴子,自己藏起1堆。以后第3、4个水手依次按此方法处理。最后,第5个水手把剩下的椰子分为等量的5堆后,同样剩下1个给了猴子。请用迭代法编程计算并输出原来这堆椰子至少有多少个。

输入格式: 无

输出格式:"y=%d\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int can(int k)

{

int i;

for (i=1;i<=5;i++)

{

if ((k-1)%5!=0||k< 5) return 0;

k=(k-1)/5*4;

}

return 1;

}

int main()

{

int ans=1;

while (!can(ans)) ans++;

printf("y=%d\n",ans);

return 0;

}

2 找最值(4分)

题目内容:

从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。函数原型如下所示:

int FindMax(int num[], int n, int *pMaxPos);//函数返回最大值,pMaxPos返回最大值所在的下标

int FindMin(int num[], int n, int *pMinPos);//函数返回最小值,pMaxPos返回最小值所在的下标

程序运行结果示例:

Input 10 numbers:

-1 2 3 45 92 8 9 12 7 8↙

Max=92,Position=4,Min=-1,Position=0

输入格式: "%d"

输出格式:

提示信息:"Input 10 numbers:\n"

输出结果:"Max=%d,Position=%d,Min=%d,Position=%d\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int Findmax(int *a,int *p)

{

int i;

*p=0;

for (i=1;i< 10;i++)

if (*(a+*p)<*(a+i)) *p=i;

return 0;

}

int Findmin(int *a,int *p)

{

int i;

*p=0;

for (i=1;i< 10;i++)

if (*(a+*p)>*(a+i)) *p=i;

return 0;

}

int main()

{

int a[10],maxp,minp,i;

printf("Input 10 numbers:\n");

for (i=0;i< 10;i++)

scanf("%d",a+i);

Findmax(a,&maxp);

Findmin(a,&minp);

printf("Max=%d,Position=%d,Min=%d,Position=%d\n",a[maxp],maxp,a[minp],minp);

return 0;

}

3 星期查找(4分)

题目内容:

任意输入英文的星期几,通过查找如图所示的星期表,输出其对应的数字,若查到表尾,仍

未找到,则输出错误提示信息。

提示:用一个二维字符数组weekDay来存放如图所示的星期表的内容(字符串)。输入待查找的字符串,然后在星期表中顺序查找与输入字符串相匹配的字符串。找到的字符串在星期表数组中的第一维下标(行号)即为题目所求。

程序运行结果示例1:

Please enter a string:

Friday↙

Friday is 5

程序运行结果示例2:

Please enter a string:

Fruday↙

Not found!

输入格式: 字符串输入采用gets()函数

输出格式:

输入提示信息:"Please enter a string:\n"

找到了,输出:"%s is %d\n"

没找到,输出:"Not found!\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include "stdio.h"

#include "string.h"

int main()

{

char s[][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

char ss[10];

int i;

printf("Please enter a string:\n");

gets(ss);

for (i=0;i<=6;i++)

if (strcmp(ss,s[i])==0) {printf("%s is %d\n",ss,i);return 0;}

printf("Not found!\n");

return 0;

}

4 杨辉三角形(4分)

题目内容:

编程打印具有如下形式的杨辉三角形,其中输出数据的行数n从键盘输入,并且n<=10。程序运行结果示例1:

Input n (n<=10):

5↙

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

程序运行结果示例2:

Input n (n<=10):

7↙

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

输入格式: "%d"

输出格式:

输入提示信息:"Input n (n<=10):\n"

输出数据格式:"% 4d"

数据换行: "\n"

输入样例:

输出样例:

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms内存限制:32000kb

#include "stdio.h"

#include "string.h"

int main()

{

int a[11][11],n,i,j;

printf("Input n (n<=10):\n");

scanf("%d",&n);

for (i=1;i<=n;i++)

for (j=1;j<=i;j++)

{

if (j==1||j==i) a[i][j]=1;

else a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for (i=1;i<=n;i++)

{

for (j=1;j<=i;j++)

printf("% 4d",a[i][j]);

printf("\n");

}

return 0;

}

1 找数组最值(4分)

题目内容:

按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。void InputArray(int *p, int m, int n);

int FindMax(int *p, int m, int n, int *pRow, int *pCol);//函数返回最大值,pRow和pCol分别返回最大值所在的行列下标

例如,程序的1次运行结果如下:

Input n:

3,4↙

Input 3*4 array:

1 2 3 4↙

5 6 7 8↙

9 0 -1 -2↙

max=9,row=2,col=0

输入格式:

提示信息: "Input m,n:\n"

输入数组维数:"%d,%d"

提示信息: "Input %d*%d array:\n"

输入数组元素:"%d"

输出格式:

"max=%d,row=%d,col=%d\n"

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

int a[11][11],i,j,m,n,maxi,maxj,max;

printf("Input m,n:\n");

scanf("%d,%d",&m,&n);

printf("Input %d*%d array:\n",m,n);

for (i=1;i<=m;i++)

for (j=1;j<=n;j++)

scanf("%d",&a[i][j]);

max=a[1][1];maxi=1;maxj=1;

for (i=1;i<=m;i++)

for (j=1;j<=n;j++)

if (max< a[i][j]){max=a[i][j];maxi=i;maxj=j;}

printf("max=%d,row=%d,col=%d\n",max,maxi-1,maxj-1);

return 0;

}

2 冒泡排序(4分)

题目内容:

采用冒泡法进行升序排序法的基本原理是:对数组中的n个数执行n-1遍检查操作,在每一遍执行时,对数组中剩余的尚未排好序的元素进行如下操作:对相邻的两个元素进行比较,若排在后面的数小于排在前面的数,则交换其位置,这样每一遍操作中都将参与比较的数中的最大的数沉到数组的底部,经过n-1遍操作后就将全部n个数按从小到大的顺序排好序了。程序的某次运行结果如下:

Input n:10↙

Input 10 numbers:2 9 3 4 0 6 8 7 5 1↙

Sorting results: 0 1 2 3 4 5 6 7 8 9

输入格式:

"%d"

输出格式:

输入数据个数提示:"Input n:"

输入数据提示:"Input %d numbers:"

输出提示:"Sorting results:"

输出格式:"% 4d"

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include "stdio.h"

int main()

{

int a[110],n,i,j;

printf("Input n:");

scanf("%d",&n);

printf("Input %d numbers:",n);

for (i=1;i<=n;i++)

scanf("%d",&a[i]);

for (i=1;i<=n-1;i++)

for (j=1;j<=n-1;j++)

if(a[j]>a[j+1])

{

a[j]+=a[j+1];

a[j+1]=a[j]-a[j+1];

a[j]=a[j]-a[j+1];

}

printf("Sorting results:");

for (i=1;i<=n;i++)

printf("% 4d",a[i]);

return 0;

}

3 删除字符串中与某字符相同的字符(4分)

题目内容:

在字符串中删除与某字符相同的字符,要求用字符数组作函数参数。程序运行结果示例:

Input a string:

hello, my friend!↙

Input a character:

!↙

Results:hello, my friend

输入格式:

字符串输入用 gets()函数

单个字符输入用getchar()函数

输出格式:

输入字符串的提示信息: "Input a string:\n"

输入单个字符的提示信息: "Input a character:\n"

输出格式: "Results:%s\n"

相关文档