printf("\nPlease enter S:");
scanf("%ld",&s);
proc(S,&t);.
printf("The result is:%ld\n",t);
}
三、程序设计题请编写函数proc(),其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所写的若干语句。
试题程序:
#include
#include
#include
#include
void proc(char*str,char t[])
{
)
void main()
{
char str[100],t[100];
system("CLS");
printf("\nPlease enter string str:");
scanf("%S",str);
proc(str,t);
printf("\nThe result iS:%s\n",t);
计算机等级考试c语言试题答案
一、基本操作题程序填空题
【1】b!=0【2】a%b[3]numl*num2/a
【解析】由程序可知,变量b中存放两个正整数中较小的那个数,while循环求两个正整数的公约数。因此【1】填“b!=0”;【2】填“a%b”.【3】处是求两个正整数最小公倍数的表达式,因此【3】填“numl*num2/a”。
二、程序改错题
(1)错误:void proc(10ng S,long t)
正确:void proc(long s,long*t)
(2)错误:while(s<0)
正确:while(s>O)
【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此“void proc(long s,long t)”应改为“void proc(long s,long*t)”;要从低位开始取出长整型变量s中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s0)”。
三、程序设计题
void proc(char*str。chart[3])
{
int i,j=0;
for(i=0;str[i]! =’\O’;i++)//从数组的第一个元素开始,到其最后一个
{if(i%2= =0&&str[i]%2 1=o)//下标为偶数、同时ASCIl码值为奇数的字符