按题目要求是,当为偶数的时候是为n/2,当为奇数的时候要变成n/2+1,这种题目,大家往往应该用代入法进行测试即可得到答案。 for (i=0; i t=a[i]; /**********found**********/ a[i] = a[p+i]; 要进行互换的两个元素,a[i]表示是从第一个元素开始处理 a[p+i]表示从中间的元素开始处理。将这两个数值进行交换。 /**********found**********/ a[i] = t; 上课的时候,强调了大家一定要记住互换的两个数的方法。这个地方请大家记住。 } } ****************************第十七题目**************************** 代码: 分析: /**********found**********/ void fun(PERSON *std) 由于传递时候是结构体的数组名称,所以这个地方要接收的时候,就一定要用结构体指针,从后面的代码可以观察到结构体的指针是用std[i]来进行处理的,虽然出现的形式是数组,但是可以看成是指针。这里填写的时候就要用到*std指针。 { /**********found**********/ PERSON temp; 进行交换的数值,使用的结构体变量,所以这个地方要用结构体变量名。 if(std[0].num>std[1].num) { temp=std[0]; std[0]=std[1]; std[1]=temp; } if(std[0].num>std[2].num) { temp=std[0]; std[0]=std[2]; std[2]=temp; } if(std[1].num>std[2].num) { temp=std[1]; std[1]=std[2]; std[2]=temp; } } main() { PERSON std[ ]={ 5,\ int i; /**********found**********/ fun(std); 题目要求的讲行参指针所指向的结构体的数值进行排序,所以这个地方一定是要传递的是结构体数组名,它表示的是地址,行参才可以用结构体指针来接收。 printf(\ for(i=0; i<3; i++) printf(\} ****************************第十八题目**************************** 代码: 分析: for(i=1;i t=i; 进行第一步赋值,由于处理的是奇数位,所以这个地方,首先要对变量t进行初始化,后面用到了变量t没有被初始化,这个地方,我们填写是t = i;所以这个地方是把第一个下标为1的数组的下标初始化给变量t,这里的含义是t为下标的数组就是目前假定的最小的一个字符。 /**********found**********/ for(j=i+2 ; j { x=s[i]; s[i]=s[t]; s[t]=x; } 完成交换 } for(i=1,j=0; i p[j]=?\\0?; 字符串一定要有结束符号,这个是重点,一定要记住,考试一定有很多同学会碰到这个填空题目。 } ****************************第十九题目**************************** 代码: 分析: #include /**********found**********/ void fun(int (*t)[N] ) /这个地方是接收传递来的数组元素,传的是二维数组名称,这个地方要用到的是[N],由于传来的是4行4列的,所以要写成这个样子。 { int i, j; for(i=1; i /**********found**********/ t[i][j] =t[i][j]+t[j][i];题目要求我们把以中轴为对角的元素相加,并存放到左下角的元素中,所以这个地方很简单。 /**********found**********/ t[j][i] =0; 根据题目要求,要把右上角的所有元素变成0。这个地方也很简单。 } } } ****************************第二十题目**************************** 代码: 分析: if(len>n) { /**********found**********/ n=len; k=i; 这个地方填写的是k,表示的是将求出最长字符长度的那行数组的行下 标保存下来。后面的i!=k的时候,就可以不用处理这行最长的字符串,不用给它的左边补充*符号。 } } for(i=0; i len=strlen(ss[i]); /**********found**********/ for(j=len; j>=0; j--) 填写的是len,表示的是我们要进行循环,把前面的字符放到后面去,空出左边的元素,用来存放题目要求的*。这里的len是现在要处理的字符串的长度。字符长度是len长,那么将字符移到右边去的次数就是len次。 ss[i][m--]=ss[i][j]; for(j=0; j /**********found**********/ S[i][j]='*'; 填写的是s[i][j],i表示要处理的行数,j表示要处理的列数,这个都是可以从循环中得到的。 } ****************************第二十一题目************************** 代码: 分析: #include { int i, n, k; char c; n=0; for(i=0; s[i]!='\\0'; i++) n++; /**********found**********/ if(n%2==0) k=n-1; 这个地方要注意,处理的时候有数组元素是偶数个和奇数个的区别。奇、偶不同,最后一个元素也不同。解决的方法是采用代入法,来求应该填入的数字。 else k=n-2; /**********found**********/ c=s[k]; 将最后一个数字(这里就是s[k]这个元素)进行保存,然后后面会要绕回填写到第一个数组元素去。 for(i=k-2; i>=1; i=i-2) s[i+2]=s[i]; /**********found**********/ s[1]=c ; 把前面保存的最后一个奇数数组的数字,存放到数组元素的第一个奇数下标。 } ****************************第二十二题目************************** 代码: 分析: #include /**********found**********/ char fun(char ch) 考察的是函数的返回值,根据观察我们可以发觉,这个地方的函数返回 数值是char类型,所以我们填写的时候是写上char,表示该函数运行得到的结果是一个字符。 { /**********found**********/ if (ch>='0' && ch<=?9?)这个地方要背下来的,我们一定要记住判断一个字符是否为数字字符的写法,所以,这个地方平常背下来就很方便了,注意是采用的逻辑与&&. /**********found**********/ return '9'- (ch-?0?);简单的数学题目,要求把字符9变成字符0,8变成1的处理,可以采用代入法计算即可。没有什么道理可以讲。不懂的话可以问数学老师。 return ch ; } ****************************第二十三题目************************** 代码: 分析: #define N 9 void fun(int a[], int n) { int i,j, max, min, px, pn, t; for (i=0; i /**********found**********/ max = min = a[i]; 关于初始化一定是c语言上机考试的重点,这个地方初始化的时候,假定最大和最小的数值都是第一个数组元素。 px = pn = i; for (j=i+1; j /**********found**********/ if (max< a[j]) 每次循环的时候,如果判断的这个数字比当前我们存放的max要大的话,我们就要把这个大的数组元素的数值和下标给保存下来。 { max = a[j]; px = j; } /**********found**********/ if (min> a[j]) 同上面一样,要将当前的数组元素与我们的min来进行比较,看那个数值要小一些,如果小则要保存。 { min = a[j]; pn = j; } } if (pn != i) 下面的代码就是将每次循环找到的最大数值和最小数值分别存放到要存放的位置 { t = a[i]; a[i] = min; a[pn] = t; if (px == i) px =pn; } if (px != i+1) { t = a[i+1]; a[i+1] = max; a[px] = t; } } } ****************************第二十四题目************************** 代码: 分析: STD fun(STD std[], int n) { STD max; int i; /**********found**********/ max= std[0]; 这里一定要注意:max是一个结构体变量,所以我们在赋值 的时候一定要注意初始化,这个地方的初始化我强调很多次 了,是考试的重点,在这里,我们是把第一个结构体元素作 为数值进行传递的。 for(i=1; i /**********found**********/ if(max.age main( ) { STD std[5]={\}; STD max; max=fun(std,5); printf(\/**********found**********/ printf(\Age : %d\\n\这里要打印的的格式说明是%s表示的是字符串形式输出,我们知道该结构体数组的第一个成员是name,书上强调过,结构体的字符串数组是可以整体引用的,所以在这个地方注意是填写max.name,把求出的最大age的结构体输出。 } ****************************第二十五题目************************** 代码: 分析: void fun( SLIST *h, int *n) { SLIST *p; 生成一个链表指针 /**********found**********/ *n =0; 由于题目要求是把节点的个数通过指针变量(*n)返回,所以这个地方要将该变量进行初始化,所以填写的是*n。 p=h->next; while(p) { (*n)++; /**********found**********/ p=p->next; 统计一个节点个数就应该往后面挪一位,所以这个地方填写的是next,我上课的时候强调了这句话是考试的重点。 } } main() { SLIST *head; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言最重要的知识点复习资料(4)在线全文阅读。
相关推荐: