当前位置:首页 > 江苏省二级c语言上机考试例题集1-20
1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。 #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(\涉及文件的打开*/ {printf(\ scanf(\接收键盘输入的整型数据*/ m = arrange(n); /*键盘输入的数据作为实参调用arrange 函数*/ printf(\将得到的最小数输出到屏幕及结果文件中*/ fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
2、按要求合并两个字符串
#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数组中*/
{ 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(\ {printf(\ printf(\:\ gets(s1); printf(\:\ gets(s2); /*s1、s2 接收键盘输入的字符*/ fun(s1, s2, s); /*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/ printf(\:%s\\n\ /*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/ fprintf(fp, \ fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
3、先判断一个m×n矩阵为Monge矩阵,在对该矩阵进行交换处理
#include
void change(int a[][N], int n) /*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/ {int i, j, t; for (i = 0;i < n / 2;i++) /*通过两重for循环对数组各行的位置进行交换*/ for (j = 0;j < N;j++) {t = a[i][j];a[i][j] = a[n - 1 - i][j];a[n - 1 - i][j] = t;} /*变换形式:第一行与最后一行交换,第二行与倒数第二行交换……*/ }
int Monge(int a[][N], int n) { int i, j; for (i = 0;i < n - 2;i++) /*利用for循环和if语句对数组元素进行矩阵判断,判断是否为Monge矩阵*/ { for (j = 0;j < N - 2;j++) if (a[i][j] + a[i + 1][j + 1] > a[i][j + 1] + a[i + 1][j]) return 0; /*若矩阵不是Monge矩阵,函数返回0*/ } return 1; /*若矩阵是Monge矩阵,函数返回1*/ }
void main() { int a[][N] = {{10, 17, 13, 28, 23}, {17, 22, 16, 29, 23}, {24, 28, 22, 34, 24}, {11, 13, 6, 17, 7}, {45, 44, 32, 37, 23}}; /*数组初始化*/ int monge, i, j;FILE *fp; fp = fopen(\以只写\方式打开文件*/
if (fp == NULL)exit(0); monge = Monge(a, 5); /*调用Monge函数对a数组进行判断*/ for (i = 0;i < N;i++) /*将a数组变换前中的元素输出到屏幕及结果文件中*/ {for (j = 0;j < N;j++) {printf(\ printf(\ } if (monge) {printf(\将a数组变换前的判断结果输出到屏幕及结果文件中*/ else {printf(\ change(a, 5); /*调用change函数对a数组进行变换处理*/ for (i = 0;i < N;i++) { for (j = 0;j < N;j++) { printf(\ printf(\ } /*将a数组变换后的元素输出到屏幕及结果文件中*/ monge = Monge(a, 5); /*调用Monge函数对经过变换的a数组进行判断*/ if (monge) /*将a数组变换后的判断结果输出到屏幕及结果文件中*/ {printf(\ fprintf(fp, \ else { printf(\ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
4、用一组整数验证命题
#include
int fun (int a[], int b[], int n) { int i, j, x, y, z, s, t, m, k = 0; for (i = 0;i < n;i++) /*按题目要求的步骤进行交换,直到得到所要求的结果停止循环*/ if (a[i] / 1000 < 1) { x = a[i] / 100;y = a[i] / 10 % 10;z = a[i] % 10; /*对数a[i]进行数位分离*/ if (x != z) { s = z * 100 + y * 10 + x; /*交换a[i]的百位数字与个位数字得到s*/ t = s > a[i] ? (s - a[i]) : (a[i] - s); /*求a[i]和s的绝对值得到t*/ x = t / 100;y = t / 10 % 10;z = t % 10; m = z * 100 + y * 10 + x; /*交换 t的百位数字与个位数字得到m*/ if (t + m == 1089) /*判断t与m的和是否为1089*/ b[k++] = i; } } return k; /*函数返回数组b中数据的个数*/ }
void main()
{ int a[N] = {123, 765, 1, 45, 121, 1345, 131, 67, 696, 3589}, b[N], n, i; FILE *fp; /*定义文件指针*/ if ((fp = fopen(\以只写\方式打开文件 */ {printf(\ n = dotest (a, b, 10); /*用a数组作为实参调用fun函数*/ for (i = 0;i < n;i++) {printf(\将a数组中所有符合命题的整数输出到屏幕及结果文件中*/ /*将考生准考证号输出到屏幕及结果文件中*/ printf(\ fprintf(fp, \ fclose(fp); /*关闭文件 */ }
5、找出7个默森尼数
#include
void Mersenne(long a[], int m); int prime(long); void main() { long a[N]; int i; FILE *fp; /*定义文件指针*/ fp = fopen(\以只写\方式打开文件*/ if (fp == NULL)exit(0); Mersenne(a, N); /*调用Mersenne 函数,找出并保存前7个Mersenne 数*/ for (i = 0;i < N;i++) { printf(\将运行结果输出到屏幕及结果文件中*/ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \}
void Mersenne(long a[], int m) /*该函数的功能是,求出前m个Mersenne数*/ {long f, n, k; int i = 0; a[i++] = 3; for (n = 3;i < m;n += 2) { f = 1; for (k = 1;k <= n;k++) f *= 2; /*求2的n次方*/ if (prime(n) && prime(f - 1)) /*当n和2的n次方减1均为素数时,该数为Mersenne 数*/ a[i++] = f - 1; /*将找到的Mersenne 数保存到数组a中*/ } }
int prime(long n) /*该函数的功能是,判断整数a是否是素数*/ {long i; for (i = 2;i <= n / 2;i++) if (n % i == 0) return 0; return 1; /*若是素数函数返回值1*/ }
6、从一个指定的自然数
共分享92篇相关文档