一、程序填空题
请补充main()函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。
例如,输入ABCDEFG*,结果显示ABCDEFG。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填人所编写的若干表达式或语句。
试题程序:
#include
#include
#define M 80
void main()
{
int i=-1,j=0;
char str[M];
system("CLS");
printf("\n Input a string\n");
do
{
i++;
scanf(【1】);
}
while(【2】);
printf("\n**llisplay the string**\n");
while(j {
printf(【3】);
j++;
}
}
二、程序改错题
下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
void proc(char*str)
//****found****
{
while(*str!=’@’)
{
if(*str>=’A’&&*str<=’2’||*str>=’a’
&&*str<=’z’)
{
if(*str==’2’)*str=’A’;
else if(*str==’2’)*str=’a’;
else*str+=1:
}
//****found****
(*str)++;
}
}
void main()
{
char str[80];
system("CLS");
printf("\n Enter a string with length
<80:\n\n");gets(str);
printf("\n The strin9:\n\n");puts(str);
proc(str);
printf("\n\n The Cords:\n\n");puts(str);
}
三、程序设计题
请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在hum数的十位和千位上,num2数的十位和个位数依次放在C数的百位和个位上。
例如,当num1=64,num2=18时,调用到该函数后,
num=4168。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填八所编写的若干语句。
试题程序:
#include
#include
#include
void proc(int numl,in!num2,long*num)
{
}
void main()
{
int num1,num2;
long num;
system("CLS"):
printf("Input num,num2:");
scanf("%d%d",&num1,&num2);
proc(num1,num2,&num);
printf("The result is:%1d\n",num);
}
上机考试试题答案与解析
一、程序填空题
【1】"%c",&str[i]【Z】slr[i]!=’*’【3】"%c",str [j]
【解析】由程序可知,从键盘输入的字符串存放在字符串变量str中。因此,【l】处填"%c",&str[i]”。题目中要求,字符串以“*”结束,语句while中的条件为字符串不结束的条件。因此,【2】处填“str[i]!=’*’”。printf用来格式化输出字符串str,变量j用来控制字符串的下标。因此,【3】处填“"%C",str[j]”。
二、程序改错题
(1)错误:while(*str!=’@’)
正确:while(*str)
(2)错误:(*str)++;
正确:str++;
【解析】字符串不结束的标志为*S。因此,“while(* str!=’@’)”应改为“while(*str)”。每执行完一次循环,指针变量str向后移动一个位置,而不是str指向的内容加1。因此,“(*str)++;”应改为“str++;”。
三、程序设计题
void proc(int huml,int hum2,lon9“num)
{ *num=num1%10*1000+hum2/10*100+
num1/10*10+num2%10;
}
【解析】要算出变量num的值,首先需要得到变量num1 和num2个位和十位上的数字。然后将在千位上的数字乘以1000,百位上的数字乘以100,十位上的数字乘以10,各位上的数字乘以1,就能得到要求的hum。