资源描述
1.
【问题描述】
下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。
【程序功能】
从键盘上输入一个整数,转换为16进制串并输出。
如输入: 90
则输出: 5A
再如输入: 1234
则输出: 4D2
【函数说明】
函数dec2hex将整数n转换为16进制的字符串并存贮于str数组。
(1) 依次计算n的16进制最低位(变量k),转换为16进制码(字符’0’至’9’或’A’至’F’)存贮于str数组,完成一位后,n除16以去掉最低位,然后循环求解更高位。
(2) 使用for循环逆序str数组,变量i从0递增,变量j从m-1递减,交换str[i]与str[j]。
主函数main输入一个整数,调用dec2hex函数转换为16进制串,然后输出该字符串。
【带错误原程序】
(函数dec2hex包含3个错误点,main包含1个错误点)
#include <stdio.h>
void dec2hex(int n, char *str)
{
int m,i,j;
char t;
m=0;
do {
k = n % 16;
if (k<=9)
str[m] = '0' + k;
else
str[m] = 'A' + k – 10
m++;
n = n / 16;
} while (n>0);
str[m] = '\0';
for (i=0,j=m-1;i<j;i++,j--)
{
str[i]=t;
str[i]=str[j];
str[j]=t;
}
}
main()
{
char str[80];
int n;
scanf("%d",&n);
str=dec2hex(n);
puts(str);
}
【评分标准】
结果完全正确得20分,共1个测试点。提交程序名为:cp71a.c
2.
【问题描述】
从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。
【输入形式】
从键盘输入5个整数(设每个整数取值1至5)。
【输出形式】
按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。
【样例输入1】
5 4 3 2 1
【样例输出1】
5□5□5□5□5↙
□4□4□4□4↙
□□3□3□3↙
□□□2□2↙
□□□□1↙
(其中:□表示空格,↙表示回车)
【样例说明1】
输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个5,数字之间含有1个空格,第1个5之前有5-5=0个空格;输入的第2个数为4,则输出的第2行有4个4,数字之间含有1个空格,第1个4之前有5-4=1个空格;以此类推。
【样例输入2】
2 3 2 1 2
【样例输出2】
□□□2□2↙
□□3□3□3↙
□□□2□2↙
□□□□1↙
□□□2□2↙
(其中:□表示空格,↙表示回车)
【样例说明2】
输出共5行,居中对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。
【评分标准】
结果完全正确得20分,共2个测试点。提交程序名为:cp72a.c
3.
【问题描述】
编写程序,输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。
(1)输出最大值及其出现次数;
(2)输出出现次数最多的整数及其出现次数(如果有不同2数而出现次数同样最多,则输出其中最早出现的数)。
【输入形式】
从键盘输入10个整数,存入一维数组a。
【输出形式】
输出最大值及其出现次数,
输出出现次数最多的整数及其出现次数(如果有不同2数而出现次数同样最多,则输出其中最早出现的数)。
【样例输入1】
78 90 60 95 78 60 78 95 78 60
【样例输出1】
Max: 95(2) 78(4)
【样例说明1】
输入10个整数,95出现2次,90出现1次,78出现4次,60出现3次。其中最大值为95,出现2次,而出现次数最多的数为78,出现了4次。
【样例输入2】
60 99 78 95 78 60 78 95 95 60
【样例输出2】
Max: 99(1) 60(3)
【样例说明2】
输入10个整数,99出现1次,95、78与60各出现3次。其中最大值为99,出现1次,而出现次数最多的3个数中60最早出现。
【评分标准】
结果完全正确得20分,共1个测试点。提交程序名为:cp73a.c
4.
【问题描述】
编写程序,按示例实现以下功能:
(1) 编写函数,函数说明为:int facsum(int n); 返回整数n的因子之和(当1≤i<a时,如果a是i的倍数,则i是a的因子)
(2) 编写主函数main,完成以下要求:
a) 输入整数(变量a);
b) 调用函数facsum计算a的因子之和(变量s);
c) 计算s的个位数(变量b);
d) 以a为高位,b为个位组成一个新数(变量x,有x=10*a+b),输出x。
【输入形式】
从键盘输入整数a。
【输出形式】
输出以整数a为高位,a的因子之和的个位数为个位组成的数。
【样例输入1】
12
【样例输出1】
126
【样例说明1】
整数12的因子有1、2、3、4、6,因子的累加和为16,累加和的个位数为6,以12为高位,6为低位,组成的新数为126。
【样例输入2】
123
【样例输出2】
1235
【样例说明2】
整数123的因子有1、3、41,累加和为45,个位数5,输出1235。
【评分标准】
结果完全正确得20分,共2个测试点。提交程序名为:cp74a.c
5.
【问题描述】
编写程序,从键盘输入10个百分制成绩,将成绩从高到低排序并且排名,然后以“名次:成绩”的形式依次输出,相互间用1个空格间隔,最高分的名次记为1,相同的成绩名次也相同。
【输入形式】
从键盘输入10个百分制成绩。
【输出形式】
按名次顺序,以“名次:成绩”的形式依次输出10成绩及其名次,相互间用1个空格间隔。
【样例输入】
99 100 80 60 70 90 99 70 50 70
【样例输出】
1:100 2:99 2:99 4:90 5:80 6:70 6:70 6:70 9:60 10:50
【样例说明】
输入10个百分制成绩,按名次顺序输出,第1名100分,第2名99分有2个,由于有2个第2名,90分就成了第4名,第5名80分,第6名70分有3个,由于有3个第6名,60分就为第9名,第10名50分。
【评分标准】
结果完全正确得20分,共1个测试点。提交程序名为:cp75a.c
展开阅读全文