/*程序修改题1
给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符 按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。 例如:当s中的字符串为:"ABCDE"时, 则t中的字符串应为:"ABCDEEDCBA"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序 的结构! */
#include #include #include
void fun (char *s, char *t) { int i, sl; sl = strlen(s); /************found************/ for(i=0; i < sl; i++) // for( i=0; i <= s1; i ++) t[i] = s[i]; for (i=0; i < sl; i++) t[sl+i] = s[sl-i-1]; /************found************/ t[sl+i]='\0'; // t[sl] = '\0'; }
main() { char s[100], t[100]; clrscr(); printf("\nPlease enter string s:"); scanf("%s", s); fun(s, t); printf("The result is: %s\n", t); }
/* 编程题 函数fun的功能是:将两个两位数的正整数a、b合并形成一个 整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数 的千位和十位上, b数的十位和个位数依次放在c数的百位和个位 上。 例如,当a=45,b=12。调用该函数后,c=4152。 注意: 部分源程序存在文件PROG1.C中。数据文件IN1.DAT中 的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ #include #include void fun(int a, int b, long *c) {// *c=a/10*1000+a%10*10+b/10*100+b%10; /* 下面的方法为另一种更通用的方法, 显然要烦琐些 int d,e,n; *c=0; n=1; while(a > 0) { d=a%10*10; e=b%10; *c+=(d+e)*n; n*=100; a=a/10; b=b/10;} */// } main() { int a,b; long c; clrscr(); printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %d\n", c); NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;
rf = fopen("in1.dat", "r") ; wf = fopen("bc01.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d,%d", &a, &b) ; fun(a, b, &c) ; fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ; } fclose(rf) ; fclose(wf) ; }
/* 文本文件 in1.dat 内容如下: 45,12 63,54 14,78 88,91 71,13 12,45 72,32 29,99 34,43 22,44 */ /* 正确程序输出的 bc01.dat 内容如下: a=45,b=12,c=4152 a=63,b=54,c=6534 a=14,b=78,c=1748 a=88,b=91,c=8981 a=71,b=13,c=7113 a=12,b=45,c=1425 a=72,b=32,c=7322 a=29,b=99,c=2999 a=34,b=43,c=3443 a=22,b=44,c=2424 */
/*程序修改题2
给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符 按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。 例如:当s中的字符串为:"ABCDE"时, 则t中的字符串应为:"ABCDEEDCBA"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序 的结构! */
#include #include #include
void fun (char *s, char *t) { int i, sl; sl = strlen(s); /************found************/ for(i=0; i < sl; i++) // for( i=0; i <= s1; i ++) t[i] = s[i]; for (i=0; i < sl; i++) t[sl+i] = s[sl-i-1]; /************found************/ t[sl+i]='\0'; // t[sl] = '\0'; }
main() { char s[100], t[100]; clrscr(); printf("\nPlease enter string s:"); scanf("%s", s); fun(s, t); printf("The result is: %s\n", t); }
/* 编程题 函数fun的功能是:将两个两位数的正整数a、b合并形成一个 整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数 的千位和十位上, b数的十位和个位数依次放在c数的百位和个位 上。 例如,当a=45,b=12。调用该函数后,c=4152。 注意: 部分源程序存在文件PROG1.C中。数据文件IN1.DAT中 的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ #include #include void fun(int a, int b, long *c) {// *c=a/10*1000+a%10*10+b/10*100+b%10; /* 下面的方法为另一种更通用的方法, 显然要烦琐些 int d,e,n; *c=0; n=1; while(a > 0) { d=a%10*10; e=b%10; *c+=(d+e)*n; n*=100; a=a/10; b=b/10;} */// } main() { int a,b; long c; clrscr(); printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %d\n", c); NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;
rf = fopen("in1.dat", "r") ; wf = fopen("bc01.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d,%d", &a, &b) ; fun(a, b, &c) ; fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ; } fclose(rf) ; fclose(wf) ; }
/* 文本文件 in1.dat 内容如下: 45,12 63,54 14,78 88,91 71,13 12,45 72,32 29,99 34,43 22,44 */ /* 正确程序输出的 bc01.dat 内容如下: a=45,b=12,c=4152 a=63,b=54,c=6534 a=14,b=78,c=1748 a=88,b=91,c=8981 a=71,b=13,c=7113 a=12,b=45,c=1425 a=72,b=32,c=7322 a=29,b=99,c=2999 a=34,b=43,c=3443 a=22,b=44,c=2424 */
/*程序修改题3 给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型 变量s中奇数位上的数,依次构成一个新数放在t中。 例如,当s中的数为:7654321时,t中的数为:7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序 的结构! */
#include #include
/************found************/ void fun (long s, long *t) //void fun (long s, long t) { long sl=10; *t = s % 10; while ( s > 0) { s = s/100; *t = s%10 * sl + *t; /************found************/ sl=sl*10; // sl = sl*100; } }
main() { long s, t; clrscr(); printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); }
/* 编程题 函数fun的功能是:将两个两位数的正整数a、b合并形成一个 整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数 的个位和百位上, b数的十位和个位数依次放在c数的千位和十位 上。 例如,当a=45,b=12。调用该函数后,c=1524。 注意: 部分源程序存在文件PROG1.C中。数据文件IN1.DAT中 的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */
#include #include void fun(int a, int b, long *c) {// *c=a/10+a%10*100+b/10*1000+b%10*10;
// } main() { int a,b; long c; clrscr(); printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %ld\n", c); NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen("in1.dat", "r") ; wf = fopen("bc03.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d,%d", &a, &b) ; fun(a, b, &c) ; fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ; } fclose(rf) ; fclose(wf) ; }
/* 文本文件 in1.dat 内容如下: 45,12 63,54 14,78 88,91 71,13 12,45 72,32 29,99 34,43 22,44 */ /* 正确程序生成的 bc03.dat 内容应当如下: a=45,b=12,c=1524 a=63,b=54,c=5346 a=14,b=78,c=7481 a=88,b=91,c=9818 a=71,b=13,c=1137 a=12,b=45,c=4251 a=72,b=32,c=3227 a=29,b=99,c=9992 a=34,b=43,c=4433 a=22,b=44,c=4242 */
|