2010C语言题目解答,2010c语言题目解答剖析.docx

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[O]*/

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

} 答案:

. 0 或 '\0'

. 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;

}

答案:

. d = s % 10;

. 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;

. tot += fun(s,w); 或 tot = fun(s,w) + tot; 或 tot = tot + fun(s,w); 【程序设计】 题目:找出二维整型数组 a[4][4] 中每行元素的最大值,并将该元素移动至该行首列。 编写程序:

1、编写 void findmax(int a[][N], int n[]) 函数:找出二维数组 a 中每行元素的最大值, 并将该元素的列下标存入数组n中,即第0行元素最大值的列下标存入n[0],...,第3行元

素最大值的列下标存入 n[3]。

2、编写void move(int a[][N],int n[])函数:根据数组 n中保存的数据,将 a数组中每 行最大值元素移动到该行首列,要求移动后该元素与该行其他元素的相对位置不变。

例如:

a 数组的初始数据为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值