1、2算法分析#define FU(m,n) (m/n)错误 这样定义FU(m,n)造成语句value=FU(a+b,a-b)+FU(c+b,c-b)执行为value=(a+b/a-b)+(c+b/c-b),所以应该将语句#define FU(m,n) (m/n)改为#define FU(m,n) (m)/(n)语句Return(Value);错误 C语言中大小写字母有不同的含义,此处希望执行返回value的值的操作,所以应该改为return(value);二、填空题下列给定程序中,函数fun的功能是:有NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例
2、如,若N3,有下列矩阵:123456789计算后结果为10065010 14 9请在程序的下划线处填入正确的内容并把下划线删除。使程序得出正确的结果。部分源程序在文件BLANK1.C中。不得增行或删行,也不得改程序的结构!#define N 4void fun(int (*t)_1_ ) int i, j; for(i=1; iN; i+) for(j=0; ji; j+) _2_ =tij+tji; _3_ =0; int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j;nThe original array: for(i=0
3、; j+) printf(%2d ,tij); fun(t);nThe result is:N形参t被定义为行数组指针变量,它指向包含N个元素的一位数组。tij以主对角线为对称线,对称元素相加的值应该赋予左下三角元素的tij。tji根据题意,为零的应该是右上三角元素的值。三、编程题规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。例如,字符串中的内容为:*A*BC*DEF*G*,删除后字符串中的内容应当是:A*BC*DEF*G*。编写函数时,不得使用C语言提供的字符串函数。部分源程序在文件PROG1.C中。请勿改动主函数main
4、和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。void fun( char *a ) char s81; void NONO ( );Enter a string:gets(s); fun( s );The string after deleted:puts(s); NONO();void NONO()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s81 ; in = fopen(in.dat,r) ; out = fopen(out.datw for(i = 0 ; i void
5、fun(char *s)int i,j; for(i=0,j=0; si!= if(si0&si9)/*found*/ sj=si; sj=”0”;void main()char item80; system(CLSnEnter a string:gets(item);nnThe string is:,item); fun(item);nnThe string of changing is : 语句sj=si;错误。程序在这里应该执行将是数字的字符赋予sj并将j自加1,所以这里应该改为sj+=si语句sj=”0”;这里应该是将字符0赋予sj,而非字符串,所以应该改为sj= 0*二、填空题给定程
6、序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。void fun(char *s, int a, double f)/*found*/ _1_ fp; char ch; fp = fopen(file1.txt, fprintf(fp, %s %d %fn, s, a, f); fclose(fp);nThe result :nn ch = fgetc(
7、fp); while (!feof(_2_) putchar(_3_); putchar(n char a10=Hello! int b=12345; double c= 98.76; fun(a,b,c); FILE * 易知这里是为了定义文件指针fp,因此这里应该填FILE *; fp 这里是为了对该文件类型数据进行操作,因此填写fp; ch 为了实现用字符方式从此文本文件中逐个读入并显示在终端屏幕上,此处应该填写ch。请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依此放到一个字符串中。例如,若二维数组中的数据为W W W WS S S SH H H H则字
8、符串中的内容应是:WSHWSHWSHWSH。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#define M 3void fun(char (*s)N,char *b) FILE *wf; char a100,wMN= W, ,SH; int i,j;The matrix:iM;i+)j#define MAXLINE 20fun ( char *pstr6) int i, j ; char *p ;for (i = 0 ; 5 ; i+ )/*found*/ for (j = i + 1, j 0) p = *(pstr + i) ;
9、 *(pstr + i) = pstr + j ; *(pstr + j) = p ;main( ) int i ; char *pstr6, str6MAXLINE ; for(i = 0; 6 ; i+) pstri = stri ; printf( nEnter 6 string(1 string at each line): n ) ; i+) scanf(, pstri) ; fun(pstr) ;The strings after sorting: i+) printf( 语句for (j = i + 1, j 6, j+)错误。for语句中的各语句之间应该用“;”号隔开,而非“,
10、”号,所以此处应该改为for (j = i + 1; j 6; j+)。语句*(pstr + i) = pstr + j ;根据题意,这里程序想执行的是将数组的第j个元素赋予数组的第i个元素,而非将数组的第j个元素的地址赋予数组的第i个元素,所以这里应该改为*(pstr + i) = *(pstr + j) ;。将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。例如,s所指的字符串为def35adh3kjsdf7,执行后结果为defadhajsdf3537。请在程序的下划线处填入正确的内容把下划线删除,使程序得出正确的结果。不得增行或删行,也不得更
11、改程序的结构! int i, j=0, k=0; char t180, t280; & si t2j=si; _1_; else t1k+=si; t2j=0; t1k=0;k; i+) _2_;_3_; i+) sk+i=t2i; char s80=ba3a54j7sd567sdffsnThe original string is : %sn,s); fun(s);nThe result is : j+ 使j自加一,当下一次条件再一次满足条件时,能够把对应si的元素记录到数组t2中的下一个元素中; si=t1i 将非数字的元素组成的数组t1 逐个地把它的元素赋给数组s; j 将由数字组成的数
12、组t2中的元 素在t1后逐个赋给数组s中第 k后的元素。求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。#define M 81int fun(char *ss, char c) char aM, ch;nPlease enter a string: gets(a);nPlease enter a char: ch = getchar();nThe number of the char is: %dn, fun(a, ch); NONO ( );void NONO ( )/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据
13、,关闭文件。*/ FILE *rf, *wf ; char aM, bM, ch ; rf = fopen( wf = fopen( fscanf(rf, , a) ;, b) ; ch = *b ; fprintf(wf, %c=%dn, ch, fun(a, ch) ; fclose(rf) ; fclose(wf) ; char *ss, char c 得出字符数组的所包含的字符数的值并 赋给m; 逐一比较数组中与特定字符相同的字符,若有数组中有一个成立,就让j加上1,最后返回j的值,j的值就是所要求的数组中与特定字符相同的字符个数。 int fun(char *ss, char c)
14、int i,j=0,m; m=strlen(ss);m; if(ssi=c)j+; return j;第四套删除s所指字符中所有的小写字母c 。部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!void fun( char *s ) int i,j; for(i=j=0; if(si!c si=0; char s80; gets(s);The original string: puts(s);The string after deleted :printf(当数组中的元素部位c是则记录下该元素并将它赋给元素sj,同时让j自加1,方便记录下下一个不是c的元素,所以这里应该
15、改为sj+=si; 语句si=0;根据题意,程序在这里想将所记录的最后一个不是c的元素的后面一位赋予结束符号“0”,所以这里应该改为sj=0。程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如,a所指变量中的学号、姓名和三门课的成绩依次是:10001、ZhangSan、95、80、88,则修改后输出b中的数据应为:10002、LiSi、95、80、88。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。struct student long sno;char name10;float score3;void fun(struct student a) struct student b; int i;b = _1_;b.sno = 10002;strcpy(_2_, nThe data after modified :nNo: %ld Name: %snScores:,b.sno, b.name);for (i=0;3;%6.2f , b._3_); struct student s=10001, 95, 80, 88;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1