这是历年湖南省专升本考试,C语言编程题,各位可自取,那个#if 0 和 #endif 是注释
#define _CRT_SECURE_NO_WARNINGS #include#include #include #include using namespace std; //输入一个字符,判断该字符是数字、字母、空格还是其它字符。 #if 0 int main(){ char ch; ch = getchar(); if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') { printf("It is an English charactern"); } else if (ch >= '0' && ch <= '9') { printf("It is a dugit charactern"); } else if (ch == ' ') { printf("It is a space charactern"); } else { printf("It is other charactern"); } return 0; } #endif //下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。 //用输入0来结束输入,用i、j来统计数 #if 0 int main() { int n, i = 0, j = 0; scanf("%d", &n); while (n != 0) { if (n > 0) { i += 1;; } else { j += 1; } n--; } printf("i=%4d,j=%4dn", i, j); return 0; } #endif //计算1+3+5+....+101的值 #if 0 int main() { int i, sum = 0; for ( i = 0; i <=101; i+=2){ sum += i; } printf("sum=%dn", sum); return 0; } #endif //计算1+3+5+....+99的值 #if 0 int main() { int i=1, sum = 0; while (i < 100) { sum += i; i += 2; } printf("sum=%dn", sum); return 0; } #endif //在a数组中查找与x值相同的元素所在的位置 #if 0 int main() { int a[10], x, i; for ( i = 0; i < 10; i++){ scanf("%d", &a[i]); } scanf("%d", &x); for ( i = 0; i < 10; i++){ if (a[i] == x) { break; } } if (x < 10) { printf("the pos of x is:%dn", i); } else { printf("can not find x!n"); } return 0; } #endif //程序读入20个整数,统计非负数个数,并计算非负数之和。 #if 0 int main() { int i, a[20], sum = 0, count = 0; for ( i = 0; i < 20; i++){ scanf("%d", &a[i]); } for ( i = 0; i < 20; i++){ if (a[0] < 0) { continue; } sum += a[i]; count++; } printf("sum=%dt count=%dn", sum, count); return 0; } #endif //输入一个正整数n,在输入n个整数,用选择法将它们从小到大排序后输出 #if 0 int main() { int a[10], n, i, j, t; scanf("%d", &n); for ( i = 0; i < n; i++){ scanf("%d", &a[i]); } for ( j = 0; j < n-1; j++){ for ( i = j+1; i < n; i++){ if (a[j] > a[i]) { t = a[j]; a[j] = a[i]; a[i] = t; } } } for ( i = 0; i < n; i++){ printf("%dt", a[i]); } return 0; } #endif //找出2-500之间的所有质数,并输出它们的和 #if 0 int main() { int i, j, k, m = 0, sum = 0; for ( i = 2; i <= 500; i++){ k = sqrt(i); for ( j = 2; j <= k; j++){ if (i % j == 0) { break; } } if (j >= k + 1) { printf("%4d", i); sum += i; m++; if (m % 10 == 0) { printf("n"); } } } printf("nsum=%dn", sum); return 0; } #endif //找出二维数组a中的最大元素,并要求输出该元素以及该元素的行号和列号 #if 0 #define ROW 3 #define COL 3 int main() { int a[ROW][COL] = { 1,2,3,4,5,6,7,8,9 }; int i,j; int maxRow = 0, maxCol = 0; int max = a[0][0]; for ( i = 0; i < ROW; i++){ for ( j = 0; j < COL; j++){ if (max < a[i][j]) { max = a[i][j]; maxRow = i; maxCol = j; } } } printf("max=%d,ROW=%d,COL=%d", max, maxRow, maxCol); return 0; } #endif //输入一行字符,单词之间用一个空格分隔,统计其中有多少个单词 #if 0 int main() { char str[80]; int i = 0, num = 0, flag = 1; gets_s(str); for ( i = 0; str[i] != ' '; i++){ if (str[i] != ' ') { num++; } } printf("%dn", num); return 0; } #endif //求以为数组a中的最小元素及其下标 #if 0 int main() { int a[10] = { 1,4,2,7,3,12,5,34,5,0 }; int i, num = 0, min = a[0]; for ( i = 0; i < 10; i++){ if (min > a[i]) { min = a[i]; num = i; } } printf("The min is:%d,pos is:%d", min, num); return 0; } #endif //写一个程序计算下列函数的值: //Sum(n,x)=1+x+x^2/x!+x^3/3!+x^4/4!+....+x^n/n! #if 0 int main() { int x, n, i = 1; double a = 1, b = 1, sum = 1; scanf("%d%d", &x, &n); for ( ; i <=n; i++){ a = pow(x, i); b *= i; sum += a / b; } printf("%lf", sum); } #endif //输入一个圆的半径r,当r>=0时,计算并输出圆的面积和周长,否则。输出提示信息 #if 0 #define PI 3.14 int main() { double r, m, z; scanf("%lf", &r); if (r >= 0) { m = PI * r * r; z = 2 * PI * r; printf("圆的面积是:%.2f,周长是%.2f", m, z); } else { printf("输入有误"); } return 0; } #endif //从键盘上输入一个百分之成绩score,按下列原则输出其等级 #if 0 int main() { int data; char ch; scanf("%d", &data); switch (data/10){ case 10: case 9: ch = 'A'; break; case 8: ch = 'B'; break; case 7: ch = 'C'; break; case 6: ch = 'D'; break; default: ch = 'E'; } printf("%c", ch); return 0; } #endif //自定义一个函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数 #if 0 int IsPrimeNumber(int n) { for (int i = 2; i <=sqrt(n); i++){ if (n % i == 0) { return 0; } } return 1; } int main() { int n,ret; scanf("%d", &n); ret = IsPrimeNumber(n); if (ret == 1) { printf("%d是素数n", n); } else { printf("%d不是素数n", n); } return 0; } #endif //输入一个正整数n(n<=6),再输入n*n的矩阵,求其主对角线元素之和及副对角元素之和并输出 #if 0 int main(){ int n, i, j, sum1 = 0, sum2 = 0; int a[6][6]; scanf("%d", &n); for ( i = 0; i < n; i++){ for ( j = 0; j < n; j++){ scanf("%d", &a[i][j]); if (i == j) { sum1 += a[i][j]; } if (i + j == n - 1) { sum2 += a[i][j]; } } } printf("sum1=%d,sum2=%d", sum1, sum2); return 0; } #endif //从键盘输入30个学生的成绩数据,求其中的最高分、最低分、平均分 #if 0 #define N 5 int main() { int i; double max, min, avg, a[N]; for ( i = 0; i < N; i++){ scanf("%lf", &a[i]); } max = a[0]; min = a[0]; avg = a[0]; for ( i = 1; i < N; i++){ if (max < a[i]) { max = a[i]; }if (min > a[i]) { min = a[i]; } avg += a[i]; } printf("max=%lf,min=%lf,avg=%lf", max, min, avg / N); return 0; } #endif //将一个有5个元素的数组中的值(整数)按逆序重新存放 #if 0 #define N 5 int main() { int a[N], temp, i; for ( i = 0; i < N; i++){ scanf("%d", &a[i]); } for ( i = 0; i < N / 2; i++){ temp = a[i]; a[i] = a[N - i - 1]; a[N - i - 1] = temp; } for ( i = 0; i < N; i++){ printf("%4d", a[i]); } return 0; } #endif //从键盘输入10名学生的成绩,按成绩从高到低的顺序排列并输出 #if 0 #define N 5 int main() { int a[N], i, j, temp; for ( i = 0; i < N; i++){ scanf("%d", &a[i]); } for ( i = 0; i < N; i++){ for ( j = 0; j < N-1; j++){ if (a[j] < a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for ( i = 0; i < N; i++){ printf("%3d", a[i]); } return 0; } #endif //从键盘输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标 #if 0 #define RWO 3 #define COL 3 int main() { int a[RWO][COL], i, j, min, m, n; for ( i = 0; i < RWO; i++){ for ( j = 0; j < COL; j++){ scanf("%d", &a[i][j]); } } min = a[0][0]; for (i = 0; i < RWO; i++) { for (j = 1; j < COL; j++) { if (min > a[i][j]) { min = a[i][j]; m = i; n = j; } } } printf("最小值是:%dn", min); printf("%d,%dn", m, n); return 0; } #endif //有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......前20项之和,输出结果保留2位小数 #if 0 int fun(int a,int b,int n) { if (n == 1) { return a; } else if (n == 2) { return b; } else { return fun(a, b, n - 1) + fun(a, b, n - 2); } } int main() { double sum = 0; int i; for ( i = 1; i <=20; i++){ sum += fun(2, 3, i) * 1.0 / fun(1, 2, i); } printf("%.2lfn", sum); return 0; } #endif //方法二:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......前20项之和,输出结果保留2位小数 #if 0 int main() { int i; float sum = 0 , fz = 1, fm = 1, t; for ( i = 0; i < 20; i++){ t = fz; fz += fm; fm = t; sum += fz / fm; } printf("%.2fn", sum); return 0; } #endif //计算1-1/2+1/3-1/4+....+1/99-1/100+....直到最后一项的绝对值小于10-4为止 #if 0 int main() { int i = 1; float sum = 0, sign = 1.0; while ((1.0 / i) >= 1e-4) { sum += sign / i; i++; sign = -sign; } printf("sum=%.4f", sum); return 0; } #endif //编写一个实现对数组a的10个数按小到大排序的程序 #if 0 #define N 10 int main() { int i, j, t, a[N] = { 5,4,3,2,1,9,8,7,6 }; 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; } } } for (i = 0; i < N; i++) { printf("%dt", a[i]); } return 0; } #endif #if 0 int main() { int i, j; //控制行数 for ( i = 4; i >0; i--){ //控制空格 for ( j = 1; j <= 4-i; j++){ printf(" "); } //控制*号 for ( j = 1; j <= 2*i-1; j++){ printf("*"); } printf("n"); } return 0; } #endif //计算1-1/2+1/3-1/4+...+1/99-1/100 #if 0 int main() { int i, k = 1; float sum = 0; for ( i = 1; i <=100; i++){ sum += k / (float)i; k = -k; } printf("%f", sum); return 0; } #endif //编程输出fibonacci(斐波那契)数列的前40项 #if 1 long fib(int n) { return n <= 2 ? 1 : fib(n - 1) + fib(n - 2); } int main() { int i = 0; for ( i = 1; i <= 40; i++){ printf("%12ld", fib(i)); if (i % 2 == 0) { printf("n"); } } return 0; } #endif



