5、
#include
/*************found**************/ int fun(char *str,*substr) {
int i, j, k,num=0;
/*************found**************/ for(i=0,str[i],i++)
for(j=i,k=0;substr[k]==str[j];k++,j++) if(substr[k+1]=='\\0') {
num++; break; }
return num; }
void main()
{ char str[80],substr[80]; printf(\ gets(str);
printf(\ gets(substr);
printf(\}
【参考答案】
(1)int fun(char *str, char *substr) (2)for (i=0; str[i]; i++) 【解题思路】
从字符串s中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两个字符串的指针自动加1,继续比较下一个字符;若比较至字符串的末尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对s串的下一个字符进行处理。 6、
36
#include
long fun (int a, int n) { int j ;
/**************found**************/ long s = 0, t = 1 ;
for ( j = 0 ; j < n ; j++) t = t * 10 + a ; s = t ;
for ( j = 1 ; j < n ; j++) { /**************found**************/ t = t % 10 ; s = s - t ; }
return(s) ; }
main( )
{ int a, n ;
printf( \ scanf( \
printf( \}
【参考答案】
(1)long s=0, t=0; (2)t=t/10; 【考点分析】
本题考查:变量赋初值操作;求余运算和除法运算的区别。 【解题思路】 (1) t用来存放每次循环后的多位数,第一次循环时,t应当是个位数,所以t的初始值应为0。 (2) 根据题意,这里不需要求余数,而是要去掉个位数,重新组合一个数,因此应用除法运
算。
【解题宝典】
37
去掉数值n的个位的方法是采用除法运算,如果需要取出个位数才使用求余运算,此知识我们不要混淆。 7、
#include
/************found************/ void fun (char s, char t) {
int i, d; d = strlen(s);
for (i = 0; i for (i = 0; i main() { char s[100], t[100]; printf(\ fun(s, t); printf(\} 【参考答案】 (1)void fun ( char *s , char *t ) (2)t[2]【考点分析】 本题考查:函数定义;指针型变量的使用;字符串结束标识符。 【解题思路】 (1)从调用函数来看,函数传递的是数组,所以函数的形参应为指针。 (2) 循环结束后回文字符的个数为2] 8、 9、 38 程序设计题: 1、 #include unsigned fun(unsigned w) { } void main() { FILE *wf; unsigned x; system(\ printf(\ scanf (\ printf(\ if(x<10) printf(\ else printf (\/******************************/ wf=fopen(\ fprintf(wf,\ fclose(wf); /*****************************/ } 【参考答案】 unsigned fun(unsigned w) { if(w>=10000) return w000; /*求出n位整数w的后n-1位的数*/ if(w>=1000) return w00; if(w>=100) return w0; 39 if(w>=10) return w; } 【考点分析】 本题考查:if语句条件表达式;如何表示数值的各个位的数。 【解题思路】 我们首先应该明白无符号整数的定义形式,若它大于10000(5位)时,用10000对它求余则结果为后4位;当它大于1000(4位)时,用1000对它求余则结果为后3位,依次类推。特别要注意这里所有的if()语句的顺序不能颠倒。 【解题宝典】 在C语言中,无符号基本型的类型说明符为unsigned int或unsigned,其取值范围为0~ 16 65535,即0~(2-1),所以我们就可以分为5位数、4位数、3位数、2位数来分别进行判断,采用求余的方法来完成。 代码实现为: if(w>=10000) return w000; if(w>=1000) return w00; if(w>=100) return w0; if(w>=10) return w; 2、 #include void fun(int a, int b, long *c) { } main() { int a,b; long c;void NONO (); printf(\ scanf(\ fun(a, b, &c); printf(\ NONO(); } void NONO () 40