2010C语言题目解答,2010C语言题目解答讲解.doc

2010C语言题目解答讲解

2010高考真题详解

第一套

【程序填空】

题目:对只包含'-'和字母字符的字符串str进行如下处理:

删除str中前导和尾部连续的'-'字符,保留串中字母字符以及字母间的'-'字符。

例如,str中初始字符串为"----C--Language--Test----"。

处理后,str中的字符串为"C--Language--Test"。

程序中isalpha函数功能是判断参数是否是字母,是字母,函数值为真,否则函数值为假。

#include

#include

void main(){

char str[]={"---C--Language--Test---"};

int i,start,end;

i=0;

while(str[i++]=='-') ; /*该循环体为空,由前往后,不等于‘-’,则退出循环,i还多加1,实质i指向非减号的第二个字符*/

start=i-1; /*start指实非减号的第一个字符*/

while(str[i] != 【?】){ /*继续向后遍历字符串*/

if(isalpha(str[i])) /*如果是字母,则end=-1,表示不是结尾的地方*/

end=-1;

else if(isalpha(str[i-1])) /*不是字母,如果前一个是字母,则结束的位置为当前的前一个,即end=i-1*/

end=i-1; /*由于由前往后的,遍历结束后,end只能保存最后一个结束的位置*/

i++;

}

str[end+1]='\0'; /*在最后一个结束位置的字符后人工补\0,相当于去除尾部减号*/

for(i=start;i<=end+1;i++) /*通过循环,将从start开始到人工补的\0的所有字符前移*/

str[i-【?】] = str[i]; /*填start,这样i的初值为start,相当于第一个字符移到srt[0]*/

printf("%s\n",str);

}

答案:

1). 0 或 '\0'

2). start

【程序改错】

题目:函数unsigned fun(long s, int w)返回长整型变量s中第w位的值,例如调用fun(216783,1) 函数返回3,调用fun(216783,3)函数返回7。main()从键盘接收一个长整数给变量s,通过调用fun()函数求s奇数位之和,例如数216783各奇数位数字为1,7和3,它们的和为11。

下面给定的程序存在错误,请改正。

#include

unsigned fun(long s, int w)

{

int d;

while(w>0)

{

d %= 10; /*d=s%10;取出s的最后一位*/

s /=10; /*去除s的最后一位*/

w--;

}

return d;

}

main()

{

unsigned tot, w; /*累加器要赋初值0,w要赋初值1*/

long s, step;

printf(" Enter a long integer number:");

scanf("%ld", &s);

step = s;

while (step!=0)

{

tot = fun( s ,w); /*进行累加tot+=fun(s,w)*/

w+=2; /*w每次加2,这样正好全为奇数*/

step /=100;

}

printf("tot=%d\n", tot);

return 0;

}

答案:

1). d = s % 10;

2). unsigned tot=0, w=1; 或 int tot=0, w=1; 或 unsigned int tot=0, w=1; 或 char tot=0, w=1; 或 unsigned char tot=0, w=1;

3). tot += fun(s,w); 或 tot = fun(s,w) + t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值