小伙伴们好啊。第一次发博,也挺纠结写什么。博主目前上大学,距离考C2就剩一个月了。在网上也找过很多资料,但大多都是以各种方式圈小钱钱= =。与其就发点干货,祝大家考试顺利。
*注:本人思路与答案在文章末尾,建议先做做再进行比较;本人能力有限,如有更优解或不懂的地方可私信。
---程序填空题下列给定程序中,函数fun的功能是:将NxN矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。
如N=3,有以下矩阵:
1 2 3
4 5 6
7 8 9
交换后:
3 2 1
4 5 6
9 8 7
请在程序的下画线处填入正确的内容并将下画线册除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include#define N 4 void fun(int ___1___ , int n) { int i,s; for(___2___; i++) { s=t[i][i]; t[i][i]=t[i][n-i-1]; t[i][n-1-i]=___3___; } } main() { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf("nThe original array:n"); for(i=0; i
---程序修改题由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是。利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值,否则,返回-1。
折半查找的基本算法是:每次查找前先确定数组中特查的范围 low 和 high (lowhigh,查找结束。
请改正程序中的错误,使它能得出正确的结果。
注意。部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include---程序设计题#define N 10 void fun(int a[], int m ) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(m a[mid]) low=mid+1; else return(mid); } return(-1); } main() { int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m; printf("a数组中的数据如下:"); for(i=0;i =0) printf("m=%d,index=%dn",m,k); else printf("Not be found!n"); } 假定输入的字符串中只包含字母和*号。请编写函数fun。其功能是:除了尾数的*号之外,将数字中的其它的*号全部去除。t 指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include解析void fun( char *a, char *p ) { } main() { char s[81],*t; void NONO ( ); printf("Enter a string:n");gets(s); t=s; while(*t)t++; t--; while(*t=='*')t--; fun( s , t ); printf("The string after deleted:n");puts(s); NONO(); } void NONO() { FILE *in, *out ; int i ; char s[81],*t ; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(in, "%s", s) ; t=s; while(*t)t++; t--; while(*t=='*')t--; fun(s,t) ; fprintf(out, "%sn", s) ; } fclose(in) ; fclose(out) ; } 程序填空题:
由题目可以找出规律:第一行第一个数与第一行倒数第一个数交换; 第二行第二个数与第二行倒数第二个数交换.....由于是填空题,可直接找答案。
第一空写形参,可在函数体中找未被定义的变量进行填写;
第二空填条件,也就是循环次数,此处用了一个for循环,根据题目交叉对角线交换数据来看,循环次数与行数有关,注意:变量i未被初始化。
第三空可根据前两行代码可知,为两个变量交换数据的格式。1. t[][N] 2. i=0;i
程序修改题:
题目中的折半查找,也叫做二分法查找,此查找有前提条件:数组中的值必须是升序或降序。
第一处错误:在给定的函数体中,函数是有返回值的,void表示无返回值。
第二处错误:关键字拼写错误。1. void 改为 int 2. If 改为 if
程序设计题:
这类题比较灵活,才写的时候很懵,要最后一个字母有什么用?输入的字符串有多长?还不能用String.h函数?
首先要确定输入的字符串长度;接着开始判断到最后一个字母之前的所有字符是不是 * ,如果不是,则把字符保存到新字符串中;最后把末尾的 * 添加进新字符串中,让新字符串代替旧字符串即可。void fun( char *a, char *p ) { int n,i,m=0,j=0; char *t; t=a; while(a[j]){ if(a[j]==*p) n=j; j++; } for(i=0;in) t[m++]=a[i]; } t[m]=' '; } 大家可以将对题目的见解写到评论区哈,我会回复大家,一起学习进步殺



