printf("%d",a[i]);
printf("\n");
}
return0;
}
第4题()
/*1-A-4
(1)*/
#include<>
#include""
Intmain()
{chara[81]={0},b[81]={0};
inti,j,d=0;
gets(a);
for(j=i=0;a[i];i++)
{if(a[i]<'0'||a[i]>'9')
d=0;
elseif(d==0)
{d=1;b[j++]='$';}
b[j++]=a[i];
}
if(i==j)
puts("Therearenodigits.");
else
puts(b);
}
/*1-A-4
(2)*/
#include""
intmain()
{chara[81]={0},b[81]={0};
inti,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("Therearenodigits.");
else
puts(b);
return0;
}
上机操作题B卷,4题,共70分
第1题(18分源程序文件E:
\answer\),
上机要求:
下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:
\answer\中。
程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。
程序功能:
从键盘上输入一个16进制串,转换为10进制整数并输出。
如输入:
5A
则输出:
90
再如输入:
4D2
则输出:
1234
函数说明:
函数hex2dec将16进制字符串str转换为10进制的整数并返回。
主函数main输入一个字符串,调用hex2dec函数转换16进制串,然后输出整数。
带错误原程序:
(函数hex2dec包含3个错误点,main包含1个错误点)
#include<>
inthex2dec(char*str)
{
intm,i,k;
m=1;
for(i=0,str[i]!
='\0';i++)
{
if(str[i]>='0'&&str[i]<='9')
k=str[i]-'0';
elseif(str[i]>='A'&&str[i]<='F')
k=str[i]-'A'+10;
elseif(str[i]>='a'&&str[i]<='f')
k=str[i]-a+10;
else
returnm;
m=16*m+k;
}
returnm;
}
main()
{
charstr[80];
intn;
gets(str[80]);
n=hex2dec(str);
printf("%d\n",n);
}
第2题(7分,源程序文件)
上机要求:
按程序功能要求编写程序,并将程序代码保存到E:
\answer\中。
程序功能:
从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(>n不包括n)。
例如:
输入:
17输出:
19
输入:
45输出:
47
第3题(10分,源程序文件E:
\answer\)
上机要求:
按程序功能要求编写程序,并将程序代码保存到E:
\answer\中。
程序功能:
从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。
如输入:
54321
则输出(□表示空格,↙表示回车):
5□5□5□5□5↙
□□4□4□4□4↙
□□□□3□3□3↙
□□□□□□2□2↙
□□□□□□□□1↙
示例说明:
输出共5行,右对齐形状。
输入的第1个数为5,则输出的第1行有5个5,数字之间含有1个空格,第1个5之前有2*(5-5)=0个空格;输入的第2个数为4,则输出的第2行有4个4,数字之间含有1个空格,第1个4之前有2*(5-4)=2个空格;以此类推。
再如输入:
23432
则输出(□表示空格,↙表示回车):
□□□□□□2□2↙
□□□□3□3□3↙
□□4□4□4□4↙
□□□□3□3□3↙
□□□□□□2□2↙
示例说明:
输出共5行,右对齐形状。
输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有2*(5-2)=6个空格;以此类推。
第4题(源程序文件E:
\answer\),20分
上机要求:
按程序功能要求编写程序,并将程序代码保存到E:
\answer\中。
程序功能:
从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有小写字母字符子串(即单个或多个连续的小写字母字符)前加入一个字符#,然后输出处理后的该字符串,如果该字符串中不包含有小写字母字符子串,则报告“Therearenolowercaseletters.”。
如输入:
a,Efghi*123p87KKKxyz
则输出:
#a,E#fghi*123#p87KKK#xyz
又如,
再如输入:
1234,ABCD$#*!
(100%)&KK
则输出
Therearenolowercaseletters.
上机操作题B卷,4题,共70分
参考答案
第1题()
修正程序
原代码
#include<>
inthex2dec(char*str)
{
intm,i,k;
m=0;/***/
for(i=0;str[i]!
='\0';i++)/***/
{
if(str[i]>='0'&&str[i]<='9')
k=str[i]-'0';
elseif(str[i]>='A'&&str[i]<='F')
k=str[i]-'A'+10;
elseif(str[i]>='a'&&str[i]<='f')
k=str[i]-'a'+10;/***/
else
returnm;
m=16*m+k;
}
returnm;
}
main()
{
charstr[80];
intn;
gets(str);/***/
n=hex2dec(str);
printf("%d\n",n);
}
m=1;
初始化错误
for(i=0,str[i]!
='\0';i++)
分号错误
k=str[i]-a+10;
缺单引号
gets(str[80]);
多数组下标
第2题()
#include<>
intmain()
{inti,j,n;
scanf("%d",&n);
for(i=n+1;i>1;i++)
{for(j=2;j
if(i%j==0)break;
if(i==j)break;
}
printf("%d\n",i);
return0;
}
第3题()
#include<>
intmain()
{
inti,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;jprintf("%d",a[i]);
printf("\n");
}
return0;
}
第4题()
/*1-A-4
(1)*/
#include""
main()
{chara[81]={0},b[81]={0};
inti,j,d=0;
gets(a);
for(j=i=0;a[i];i++)
{if(a[i]<'0'||a[i]>'9')
d=0;
elseif(d==0)
{d=1;b[j++]='$';}
b[j++]=a[i];
}
if(i==j)
puts("Therearenodigits.");
else
puts(b);
}
/*1-A-4
(2)*/
#include""
main()
{chara[81]={0},b[81]={0};
inti,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("Therearenodigits.");
else
puts(b);
}