江苏省二级c语言上机考试例题集1-20 模板
更新时间:2023-12-27 05:56:01 阅读量: 教育文库 文档下载
回文数
#include \int ispal(int n) { int m=0; int t=n; while(t) { m=m*10+t; t/=10; } return m==n; }
void main() { int i; int cnt=0; for(i=1;i<10000;i++) { if(ispal(i)) { cnt++; printf(\ } } printf(\合计:%d个\\n\}
。水仙花数
#include \void main() {
int a,b,c,i;
for(i=100;i<1000;i++) {
a=i/100; b=i0/10; c=i;
if(a*a*a+b*b*b+c*c*c==i) printf(\ } }
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, 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 = fun (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、从一个指定的自然数
#include
int linkrun(int a, int b, int *p); void main() { int i, a, b, max, p[100]; FILE *fp;
for (i = 0;i < n;i++) /*将变换后的数组a输出到屏幕并用写文件函数保存到结果文件中*/ {printf(\ fprintf(fp, \}
printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \fclose(fp); /*关闭文件*/
}
13、取出一个正整数中的所有偶数数字
#include
void sort(int a[], int n) /*将数组a中的n个整数进行从大到小排列*/ { int i, j, k, t; for (i = 0;i < n - 1;i++) /*利用双重for循环*/ {k = i; for (j = i + 1;j < n;j++) if (a[j] > a[k])k = j; if (k != i) {t = a[k];a[k] = a[i];a[i] = t;} /*利用中间变量t交换两者的值,最后将数组按从大到小的顺序进行排列*/ } }
long fun(long s) { int d, b[10], i, j = 0; long s1 = 0; while (s > 0) /*利用while循环对数据s进行各位数字各位的分离*/ { d = s % 10; if (d % 2 == 0) /*判断各位是否为偶数,若是偶数则将其保存到数组b中*/ b[j++] = d; s /= 10; } sort(b, j); /* 调用函数sort对b数组中存放的j个偶数进行排序*/ for (i = 0;i < j;i++) s1 = s1 * 10 + b[i]; /* 利用j个偶数,构成一个最大的整数*/ return s1; /* 返回构成的最大数*/ }
void main() { long m, n; FILE *fp; /*定义文件指针*/ if ((fp = fopen(\以只写方式\打开文件*/ {printf(\ scanf(\接收从键盘输入的n */ m = fun(n); /*调用fun函数求出整数n的所有偶数数字构成的一个最大数*/ printf(\将所得结果输出到屏幕并用写文件函数保存到结果文件中*/ fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
14、找出符合以下条件的Troitsky数
#include
int Troitsky(long a[]) /*该函数的功能是,求出1000000以内所有的Troitsky数*/ {int count = 0, b; long n, n1; for (n = 1;n <= 1000000;n++) /*利用for循环对1~1000000的数进行变换*/ {n1 = n;b = 0; while (n1 > 0) {b++;n1 /= 10;} /*确定数n的位数,求得数n的首位数字*/ n1 = n % (long)pow(10, b - 1) * 10 + n / (long)pow(10, b - 1); /*将首位作为个位,其他三位数乘以10组成新的整数*/ if (n1 / n == (double)n1 / n && n1 / n > 1) /*判断新的整数是否是原数n的整数倍*/ a[count++] = n; /*将符合要求的数存入数组a中*/ } return count; /*函数返回Troitsky数的个数*/ }
void main() { long a[N], i; int k; FILE *fp; /*定义文件指针*/ fp = fopen(\以只写方式\打开文件*/ if (fp == NULL)exit(0); k = Troitsky(a); /*调用Troitsky函数*/ for (i = 0;i < k;i++) /*将运行结果输出到屏幕并用写文件函数保存到结果文件中*/ {printf(\ printf(\换行*/ fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
15、产生Fibonacci 生兔子
#include
int Fibonprime(long f[], int n) { int i, m = 0; long a[40] = {1, 1}, j, k; for (i = 2;i < n;i++) a[i] = a[i - 2] + a[i - 1]; /*利用for循环生成数列的前n项*/ for (i = 2;i < n;i++) { k = (long)sqrt(a[i]);
for (j = 2;j <= k;j++) if (a[i] % j == 0)break; /*判断其是否是素数*/ if (j >= k + 1)f[m++] = a[i]; /*将素数存放到数组k中*/ } return (m); /*数组中素数的个数作为函数值返回*/ }
main() { int i, m; long f[40]; FILE *fp; /*定义文件指针 */ fp = fopen(\以只写方式\打开文件*/ if (fp == NULL) { printf(\ m = Fibonprime(f, 30); /*调用函数Fibonprime 求出Fibonacci数列前30个数中的素数 */ for (i = 0;i < m;i++) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/ printf(\ for (i = 0;i < m;i++) fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
16、在数列中查找、移动
#include
void sumfac(int x[], int n); int fac(int n); main() { int i, a[10] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512}; FILE *fp; /*定义文件指针*/ if ((fp = fopen(\ { printf(\ sumfac(a, 10); /*调用函数sumfac对一维数值中的数列进行变换操作*/ printf(\ for (i = 0;i < 10;i++) /*将变换后的数列输出到屏幕并用写文件函数保存到结果文件中*/ {printf(\ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
int fac(int n) /*该函数的功能是,求得n的所有因子之和*/ {int i, sum = 0; for (i = 1;i <= n;i++) if (n % i == 0)sum += i; /*求出n的所有因子及因子之和*/ return sum; /*函数返回和值*/ }
void sumfac(int x[], int n) { int i, j, k, m, sum; for (i = n - 1, k = 0;i >= k;i--) /*利用循环,从后向前遍历数列查找超完全数*/ {sum = fac(x[i]); /*调用fac函数求得各元素的所有因子之和*/ if (fac(sum) == x[i] *2) /*利用if判断其是否是超完全数*/ {m = x[i]; for (j = i;j > 0;j--)x[j] = x[j - 1]; /*移动超完全数之前需将数列所有数依次后移*/ x[0] = m; /*将超完全数移动到数列的第一个位置*/ k++;i++; } } }
17、编写函数int Del-findged (int a[],int n,int *f)
#include
int Del_findgcd(int a[], int n, int *f) { int i, k, g; for (i = 0, k = 0;i < n;i++) if (i % 2 == 0)a[k++] = a[i]; /*利用循环判断数组元素的下标,若是奇数则将其删除*/ if (n % 2 == 0)n = n / 2; /*判断数组中剩余元素的个数 */ else n = n / 2 + 1; k = a[0]; for (i = 1;i < n;i++) /*通过循环找到能被所有数整除的最大的数即为最大公约数*/ {g = a[i]; while (k != g) { if (k > g)k = k - g; else g = g - k; } } *f = k; /*保存最大公约数到f指向的变量中*/ return n; /*函数返回数组中剩余的整数个数*/ }
void main() { FILE *fp; /*定义文件指针*/ int i, a[10] = { 6, 8, 9, 11, 12, 13, 15, 16, 18, 19}, f, n; if ((fp = fopen(\ { printf(\ n = Del_findgcd(a, 10, &f); /*调用Dle_findgcd函数删除数组中的所有满足条件的整数并求出剩余整数的最大公约数*/ for (i = 0;i < n;i++) /*将数组中剩余的整数和这些整数的最大公约数输出到屏幕并用写文件函数保存到结果文件中*/ {printf(\ printf(\ fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/
fprintf(fp, \ fclose(fp); /*关闭文件*/
}
18、找出给定范围内的和亲数
#include
int heqinmath(int m, int n, int a[][2]) { int i, j, m1, s1, s2, count = 0; for (m1 = m;m1 < n;m1++) /*通过循环对m~n的整数进行依次判断*/ { s1 = 1;s2 = 1; for (i = 2;i < m1;i++) if (m1 % i == 0)s1 = s1 + i; /*找到某一整数m1的全部真因子并求和*/ for (j = 2;j < s1;j++) if (s1 % j == 0)s2 = s2 + j; /*找到和值s1的真因子并求和*/ if ((s2 == m1) && (m1 != s1)) /*判断是否为和亲数*/ {a[count][0] = m1; a[count++][1] = s1; /*将和亲数对保存到a指向的数组中*/ } } return count; /*函数返回a数组中和亲数对的个数*/ }
main() { int count, i, m, n, a[10][2]; FILE *fp; /*定义文件指针*/ fp = fopen(\以只写方式\打开文件*/ if (fp == NULL) {printf(\ printf(\:\\n\ scanf(\从键盘输入m和n*/ count = heqinmath(m, n, a); /*调用函数heqinmath,求出m~n之间所有的和亲数对*/ for (i = 0;i < count;i++) /*将计算结果输出到屏幕并用写文件函数保存到结果文件中*/ printf(\ for (i = 0;i < count;i++) fprintf(fp, \ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
19、编写函数int prime-m(int n,int x[],long y[])
nclude
#include
int prime_m(int n, int x[], long y[]) { int j, m, count; long k = 0, q, k1, k2, k3; for (m = 2;m <= n;m++) /*通过循环在2~n之间查找符合条件的整数*/ { k1=(pow(2, m)-1); q = sqrt(k1); for (j = 2;j <= q;j++) if (k1 % j == 0)break; if (j <= q)continue; /*判断2m-1是否为素数*/ count = 0;k3 = k1;k2 = 0; while (k3 > 0) { int w = k3 % 10; if (w == 1) /*判断2m-1的十进制表示中是否包含数字1*/ {count++;} k2 = k2 * 10 + w; k3 = k3 / 10; } if (k2 % 2 == 0)continue; /*判断2m-1的反序数是否为奇数*/ if (count > 0) {x[k] = m;y[k++] = k1;} /*符合条件的所有整数m保存到x指向的数组中,将与m对应的整数2m-1保存到y指向的数组中*/ } return k; /*函数返回x数组中保存的整数个数*/ }
void main() { FILE *fp; /*定义文件指针*/ long a[20]; int i, j, n, b[20], m; if ((fp = fopen(\ {printf(\ printf(\:\ scanf(\接收从键盘输入的参数n*/ m = prime_m(n, b, a); /*调用search函数分别求得满足上述条件的所有三位正整数和所有四位正整数*/ for (i = 0;i < m;i++) /*将满足条件的三位正整数和四位正整数输出到屏幕并用写文件函数保存到结果文件中*/ { printf(\ printf(\将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, \ fclose(fp); /*关闭文件*/ }
20、编写函数int find(int n,long x[])
#include
#include
#define min(x,y) ((x)<(y)?(x):(y)) /* ① 宏定义的格式为:#define 标识符(形参表)形参表达式,形参表中的形参无需声明类型*/
int min_dist(int a[], int b[], int m, int n) /* ②由后面程序知,函数的前两个形参均为数组,所以此处应改为min_dist(int a[],int b[],int m,int n) */ { int min = INT_MAX; int ia = 0, ib = 0; while (ia < m && ib < n) /* ③ 循环限制条件应是ia,ib都不能大于数组元素的个数,两者是\与\的关系*/ if (a[ia] >= b[ib]) { min = min(min, a[ia] - b[ib]); ib++; } else { min = min(min, b[ib] - a[ia]); ia++; } return min; }
main() { int a[] = {2, 4, 8, 11, 16}, b[] = {1, 5, 7, 13, 24}; int i, m, n; m = sizeof(a) / sizeof(int); n = sizeof(b) / sizeof(int); printf(\ for (i = 0;i < m;i++)printf(\ printf(\ for (i = 0;i < n;i++) printf(\ printf(\min distance=%d\min_dist(a, b, m, n)); /* ④此处需要输出函数的返回值,printf函数格式控制符应为 \%d\ getch(); }
正在阅读:
黑马基础班入学考试01-04
德江监理规划01-11
无效婚姻的认定及处理05-02
第一次挖地瓜作文450字07-12
智障儿童02-17
旧照片的回忆作文600字07-09
描写苏州的好句好段05-17
学本课堂理论05-24
卡西欧计算器fx-991ES使用说明书05-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 江苏省
- 例题
- 上机
- 二级
- 模板
- 语言
- 考试
- 20
- 2017年泌尿外科年终工作总结
- 独立基础、地梁钢筋交底
- 小学二年级数学(上册)各单元知识点归纳
- 汽车4s店配件部工作总结
- 《位置的确定》整章水平测试(B) 北八上第五章
- 2018云南省二级建造师继续教育课后习题(考试占8成)
- 纪念抗日战争胜利70周年的作文素材
- 7.一个小村庄的故事(公开课)
- 仓库管理毕业论文
- 开利19XRXRDXR-E离心式冷水机组
- 2019八年级语文上册 专项训练四 文学常识与名著阅读 新人教版
- 小学生课外阅读调查研究-2019年精选作文
- 地面做法规范
- 国内玉石保健枕厂家,生产玉石保健枕实力厂家推荐2018.07
- 1七年级数学下册 4.2指数可以是零和负数吗教案 人教新课标版
- 15广东省保险营销员管理实施细则
- 胜利农场国有垦区危旧房改造配套基础设施建设项目可行性研究报告
- 古建筑定额说明
- 最新高考山东文综卷政治试题解析合集
- 2018年中国航空航天技术市场调研报告目录