江苏省二级c语言上机考试例题集1-20.doc

1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。 #includestdio.h #includestdlib.h void sort(int a[], int n) { int i, j, t; for (i = 0;i n - 1;i++) for (j = 0;j n - 1 - i;j++) /*利用双重循环,将数组按从小到大排列*/ if (a[j] a[j + 1]) {t = a[j];a[j] = a[j + 1];a[j + 1] = t; } } long arrange(long s) /*arrange函数的功能是取出十进制整数s中的所有奇数数字,用这些数字构成一个最小数,函数返回该数*/ { int d, b[10], i, j = 0; long s1 = 0; while (s 0) /*利用循环对s数位分离,分离出个位、十位 、百位等各位上的数*/ { d = s % 10; if (d % 2 != 0) /*判断每一位上的数字是否为奇数*/ b[j++] = d; /*若为奇数则存放到b数组中*/ s /= 10; } sort(b, j); /*调用sort函数,将数组b从小到大排列*/ for (i = 0;i j;i++) s1 = s1 * 10 + b[i]; /*求得用各位上的奇数组成的最小数 */ return s1; /*返回求得的数*/ } void main() { long m, n; FILE *fp; /*定义文件指针fp*/ if ((fp = fopen(myf2.out, w)) == NULL) /*涉及文件的打开*/ {printf(The file can not open!);exit(0);} scanf(%ld, n); /*接收键盘输入的整型数据*/ m = arrange(n); /*键盘输入的数据作为实参调用arrange 函数*/ printf(%ld\n, m); /*将得到的最小数输出到屏幕及结果文件中*/ fprintf(fp, %ld\n, m); printf(\nMy exam number is:WLJY001\n); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \nMy exam number is:WLJY001\n); fclose(fp); /*关闭文件*/ } 2、按要求合并两个字符串 #includestdio.h #includestring.h #includestdlib.h void fun(char *a, char *b, char *c) /*函数功能是先将b指向的字符串逆序存放,然后按a[0] ,b[0], a[1], b[1]…的顺序合并a字符串和b字符串到c指向的数组中,将a 或b中剩余的字符拼接在c数组的尾部*/ {int i, j; char ch; i = 0;j = strlen(b) - 1; while (i j) /*利用while循环将数组b中的字符逆序存放*/ {ch = b[i];b[i] = b[j];b[j] = ch; i++;j--; } while (*a || *b) /*利用while循环,通过判断*a || *b,将a、b数组间隔存放在c数组中*/ { if (*a){*c = *a;c++;a++;} if (*b){*c = *b;c++;b++;} } *c = \0; } void main() { FILE *fp; /*定义文件指针fp*/ char s1[80], s2[80], s[200]; /*声明3个一维数组*/ if ((fp = fopen(myf2.out, w)) == NULL) {printf(cant open file);exit(0);} printf(\nEnter s1 string:); gets(s1); printf(\nEnter s2 string:); gets(s2); /*s1、s2 接收键盘输入的字符*/ fun(s1, s2, s); /*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/ printf(\nThe result is:%s\n, s); /*将合并后产生的数组s中的字符串输出到屏

文档评论(0)

1亿VIP精品文档

相关文档