【解题思路】
填空1:变量sum用来储存\和\结果,所以将其初始化为0。
填空2:从题目中我们可以了解到,主对角线元素的行和列下标是相同的,所以应填入t[i][i]。
填空3:对于反向对角线元素的行和列的下标,它们的关系是相加和为n-1,所以应填入1。 2、
#include
void fun(int a[], int n) { int i,t;
/**********found**********/ for (i=0; i<___1___; i++) {
t=a[i];
/**********found**********/ a[i] = a[n-1-___2___]; /**********found**********/ ___3___ = t; } }
main()
{ int b[9]={1,2,3,4,5,6,7,8,9}, i; printf(\ for (i=0; i<9; i++)
printf(\ printf(\ fun(b, 9);
printf(\ for (i=0; i<9; i++)
printf(\ printf(\}
【参考答案】
(1) n/2 (2) i (3) a[n-i-1] 【考点分析】
本题考查:for循环语句;变量交换算法。 【解题思路】
填空1:逆置数组元素中的值,将a[0]与a[n-1]对换位置,依此类推,那么需要对换n/2次。 填空2:将a[0]与a[n-1]对换位置,a[1]与a[n-2]对换位置,依次类推,则a[i]=a[n-1
26
-i]。
填空3:普通的调换位置程序,显然填入a[n-i-1]。 3、
#include
void fun(int a[], int b[],int n) {
int i;
for(i=0;i<6;i++) b[i]=0;
for(i=0;i<【1】;i++) if(a[i]<60) b[5]++; 【2】
b[(a[i]-60)/10]++; }
main() {
int i,a[100]={93,85,77,68,59,43,94,75,98},b[6]; fun(【3】,9);
printf(\ for(i=0;i<6;i++)
printf(\ printf(\}
参考答案】
(1) n (2) else (3) a,b 【解题思路】
填空1:变量i用于控制存放人员成绩的数组的下标,因此i的取值范围为0~n-1。
填空2:当a[i]<60时,统计不及格的人数,相反则存入其他数组中,因此这里填入else。 填空3:根据函数传递规则,调用函数时不但要传递人数,还要传递数组a和b。 4、
27
#include
void fun(char s[],int n) {
char a[80],*p; int i;
p=【1】;
for(i=0;i {a[i]=【2】; i++; }while(【3】); a[i]=0; strcpy(s,a); } void main() {int n;char s[80]; system(\ printf(\ printf(\ printf(\ scanf(\ fun(s,n); printf(\} 【参考答案】 (1) s (2) *p++ (3) *(p)或*p或*p!=0 【解题思路】 填空1:指针p用于对字符串中的元素进行操作,对其初始化时应将其指向数组的首地址。 填空2:由题意可知,当加完*后,就要赋值字符串,将p的值赋给a数组。 填空3:这里是一个判断条件,显然与字符串的结束有关,当为结束符时,判断条件为假,退出循环。 5、 28 #include void fun (char *s, char *t ) { int i,s1; s1=strlen(s); for (i=0;i void main() {char s[100], t[100]; system(\ printf(\ scanf(\ fun(s,t); printf (\} 【参考答案】 (1) s1-i-1或s1-1-i (2) 2*s1或s1*2 【解题思路】 填空1:根据题意可知,第一个for循环的目的是逆序字符串,因此填入s1-i-1。 填空2:第二个for循环的目的是将字符串s再次以正序方式存入t中,最后给t加上字符串结束标识'\\0',此时字符串的长度为2*s1或s1*2。 6、 #include 29 #define N 1000 void fun(char *tt,int num[]) { int i,j; int bb[10]; char *p=tt; for(i=0;i<10;i++) { num[i]=0; bb[i]=0; } while(【1】) { if(*p>='0'&&*p<='9') 【2】; p++; } for(i=1,j=0;i<10;i=i+2,j++) 【3】; } void main() { char str[N]; int num[10],k; system(\ printf(\ gets(str); printf(\ puts(str); fun(str,num); printf(\ for(k=0;k<5;k++) { printf(\ printf(\ } printf(\} 【参考答案】 (1) *p (2) bb[*p-′0′]++ (3) num[j]=bb[i] 【解题思路】 填空1:通过移动指针p指向字符串tt中的各个字符,当指针p所指的字符为'\\0'时,即指向字符串tt的最后一个字符,while循环结束。 30