上机操作题A卷,4题,共70分
第1题(18分 源程序文件 )
上机要求:下列程序包含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 <>
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);
}
第2题(17分,源程序文件 )printf输出格式右对齐
上机要求:按程序功能要求编写程序,并将程序代码保存 中。
程序功能:从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(<n不包括n)。
如输入:
17
《
则输出
13
再输入:
45
则输出
43
第3题(17分,源程序文件 )
上机要求:按程序功能要求编写程序,并将程序代码保存 中。
程序功能:从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。
:
如输入:
5 4 3 2 1
则输出(□表示空格,↙表示回车):
5□5□5□5□5↙
□4□4□4□4↙
□□3□3□3↙
□□□2□2↙
□□□□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 3 2 1 2
则输出(□表示空格,↙表示回车):
□□□2□2↙
□□3□3□3↙
□□□2□2↙
□□□□1↙
□□□2□2↙
示例说明:输出共5行,居中对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。
第4题(18分,源程序文件 )
:
从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有数字字符子串(即单个或多个连续的数字字符)前加入一个字符$,然后输出处理后的该字符串,如果该字符串中不包含有数字字符子串,则报告“There are no digits.”。例如,
输入:abcd4,Efghi*123p87KKK9034 6 xyz
输出:abcd$4,Efghi*$123p$87KKK$9034 $6 xyz
又如,
输入:abcd,Efghi*Pkkk #%xyz
输出:There are no digits.
:
上机操作题A卷,4题,共70分
、
参考答案
第1题()
修正程序 | 原代码 |
#include <> void dec2hex(int n, char str[]) { int m,i,j,k; /***/ 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--) { t=str[i]; /***/ str[i]=str[j]; str[j]=t; } } main() { char str[80]; 《 int n; scanf("%d",&n); dec2hex(n,str); /***/ puts(str); return 0; } | int m,i,j; — 缺变量定义 k>9 ; str[i]=t; 赋值方向错误 { str=dec2hex(n); 调用错误 |
第2题()
/* 1-A-2 */
#include <>
int main()
<
{ int i,j,n;
scanf("%d",&n);
for(i=n-1;i>1;i--)
{ for(j=2;j<i;j++)
if(i%j==0) break;
if(i==j) break;
}
printf("%d\n",i);
return 0;
}
(
第3题()
#include ""
int main()
{
int i,j,a[5];
for(i=0;i<5;i++)
scanf("%d",a+i);
for(i=0;i<5;i++)
{ for(j=0;j<5-a[i];j++)
)
printf(" ");
for(j=0;j<a[i];j++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
第4题()
/* 1-A-4 (1) */
#include <>
,
#include ""
Int main()
{ char a[81]={0},b[81]={0};
int i,j,d=0;
gets(a);
for(j=i=0;a[i];i++)
{ if(a[i]<'0'||a[i]>'9')
d=0;
else if(d==0)
{ d=1; b[j++]='$'; }
$
b[j++]=a[i];
}
if(i==j)
puts("There are no digits.");
else
puts(b);
}
/* 1-A-4 (2) */
#include ""
int main()
~
{ char a[81]={0},b[81]={0};
int i,j;
gets(a);
for(j=i=0;a[i];i++)
{ if(a[i]<'0'||a[i]>'9')
{ b[j++]=a[i]; continue; }
for(b[j++]='$'; a[i]>='0'&&a[i]<='9';i++)
b[j++]=a[i];
i--;
}
》
if(i==j)
puts("There are no digits.");
else
puts(b);
return 0;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论