……
7
【参考答案】
(1)0
(2)n (3)(t*t)
【考点分析】本题考查:
变量初始化操作,需要注意该变量是用作累加器还是累乘器;for循环语句。
【解题思路】填空1:
程序开始定义了变量s,但没有对其进行初始化,根据公式及后面的程序可知变量s用来存储公式的前n项和,因此该变量应初始化为0。
填空2:
通过for循环语句将表达式各项进行累加,结果存于变量s中,循环变量i的取值范围为1~n。
填空3:
根据题目要求确定表达式通项,前面已定义t=2.0]
【解题宝典】程序要求计算表达式值时,一般我们都设定一个变量s,并赋初值,如果s用来存放表达式的和,则赋初值为0;如果s用来存放表达式的积,则赋初值为1。
【参考答案】
(1)for(i=0;str[i];i++)
(2)if(substr[k+1]==′\0′)
【考点分析】本题考查:
for循环语句的格式,for循环语句使用最为灵活,其一般形式为:
for(表达式1;表达式2;表达式3),注意表达式之间使用";"相隔;if条件语句的格式,其中if关键字需要区别大小写,这里不能混淆使用。
关键字是由C语言规定的具有特定意义的字符串,也称为保留字。
用户定义的标识符不应与关键字相同,并且关键字应小写。
【解题思路】我们先看循环条件for(i=0,str[i],i++),不难发现此处for循环语句的格式有误,其中表达式之间应以";"相隔;同时很容易发现if条件语句处的关键字书写错误。
【参考答案】
doublefun(doubleeps)
{
doubles=1.0,s1=1.0;
intn=1;
while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1);/*求多项式的每一项*/
s=s+s1;/*求和*/
n++;
}
return2*s;
}
【考点分析】本题考查:
迭代法求给定多项式的值,迭代算法:
让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
需要注意变量的数据类型以及赋初值操作。
【解题思路】首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。
从第2项开始以后的每一项都是其前面一项乘以n/(2]
8
【参考答案】
(1)s[i]
(2)'9' (3)*t=n
【考点分析】本题考查:
for循环语句;if语句条件表达式;指针变量。
【解题思路】填空1:
通过for循环语句,来判断是否到字符串结尾,变量i用来存放字符串数组下标,则应填入s[i]。
填空2:
题目要求判断数字字符,所以此处应填入'9'。
填空3:
将数字字符个数存入变量t中,这里需注意变量t是指针变量。
【解题宝典】if语句的条件表达式一般会考查三方面的内容:
(1)条件判断,即>与>=、<与<=、==与!
=的区别,需要仔细分析题干的意思,确定条件表达式的内容。
(2)逻辑判断,即&&(逻辑与)与||(逻辑或)的区别,需要根据题干确定if条件中若干个条件表达式的并存关系。
(3)=(赋值号)与==(等于号)的区别,注意在if条件中不会出现=(赋值号)。
【参考答案】
(1)t=*x;*x=y;
(2)return(t);或returnt;
【考点分析】本题考查:
指针型变量的使用;通过return语句完成函数值的返回。
【解题思路】首先,定义变量t作为中间变量,然后进行数据交换,注意参数x是指针变量,交换时应使用*x,最后确定返回值,根据代码b=fun(8a,b)可以知道返回值将赋给变量b,而b中应存放交换前**中的值,所以函数应返回变量t
【参考答案】
voidfun(int*a,int*n)
{
inti,j=0;
for(i=1;i<=1000;i++)/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/
if((i%7==0||i%11==0)&&i%77!
=0)
a[j++]=i;
*n=j;
}
【考点分析】本题考查:
if语句,用来判断能被7整除或者能被11整除,但是又不能同时被7和11整除的数,在这里充分理解"逻辑与"和"逻辑或"的区别;for循环语句的循环变量用来控制取值范围。
【解题思路】该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面我们来看判断语句,题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。
能同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除的数所以可得出程序中的if()语句。
注意:
(i%7==0||i%11==0)两边必须要有小括号。
9
【参考答案】
(1)1
(2)j++ (3)j
【考点分析】本题考查:
if语句条件表达式;自增/自减运算符;函数返回值。
【解题思路】填空1:
根据题目要求,需要进行奇偶数的判定,我们可以通过if条件语句来判断数组元素是否是奇数,如果元素不能被2整除,则为奇数,所以填入if(a[i]%2==1)。
填空2:
将为奇数的元素重新存放到数组的前面,同时下标增1。
填空3:
函数返回值需要返回数组中奇数的个数,因此返回变量j。
【解题宝典】奇数和偶数的判定方法,通过if条件语句完成,对2求余运算,结果为0是偶数,结果为1是奇数。
自增1、自减1运算符:
自增1运算符记为"++",其功能是使变量的值自增1。
自减1运算符记为"--",其功能是使变量值自减1。
自增1、自减1运算符均为单目运算,都具有右结合性。
有以下几种形式:
++i:
i自增1后再参与其他运算。
--i:
i自减1后再参与其他运算。
i++:
i参与运算后,i的值再自增1。
i--:
i参与运算后,i的值再自减1。
【参考答案】
(1)t=a;a=b;b=t;
(2)return(b);或returnb;
【考点分析】本题考查:
return语句,功能是计算表达式的值,并将其返回给主调函数。
【解题思路】求最大公约数算法一般采用辗转相除法。
辗转相除法的算法为:
首先将m除以n(m>n)得余数r,再用余数r去除原来的除数,得到新的余数,重复此过程直到余数为0时停止,此时的除数就是m和n的最大公约数。
程序首先判断参数a和b的大小,如果a
当余数r为0时,除数b即为所求的最大公约数,所以函数应返回b。
【参考答案】
voidfun(char*a)
{
inti,j=0;
for(i=0;a[i]!
='\0';i++)
if(a[i]!
='*')
a[j++]=a[i];/*若不是要删除的字符'*'则留下*/
a[j]='\0';
}
【考点分析】要删除字符串中所有*号需要用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环判断结构。
【解题思路】用循环操作从字符串的开始往后逐个进行比较,若不是要删除的字符(用if(a[i]!
=′*′)来控制)则保留。
变量i和j用来表示原字符串的下标和删除*号后新字符串的下标。
注意下标变量j要从0开始,最后还要加上字符串结束标识′\0′。
10
【参考答案】
(1)0
(2)10*x(3)n/10
【考点分析】本题考查:
已知某数,如何求该数各个位数值,已知各个位数值,如何表示该数;除法运算。
【解题思路】填空1:
定义变量t用来存放数值几的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。
填空2:
将t作为x的个位数,原来x的各个位上升1位,即x=10]
【解题宝典】如果知道某数n的各个位,可以得到该数值n,