江苏省二级c语言上机考试例题集
1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。
#include
#include
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、按要求合并两个字符串
#include
#include
#include
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数组中*/