这是历年湖南省专升本考试,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 character\n");
}
else if (ch >= '0' && ch <= '9') {
printf("It is a dugit character\n");
}
else if (ch == ' ') {
printf("It is a space character\n");
}
else {
printf("It is other character\n");
}
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=%4d\n", 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=%d\n", 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=%d\n", 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:%d\n", 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=%d\t count=%d\n", 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("%d\t", 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=%d\n", 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] != '\0'; i++){
if (str[i] != ' ') {
num++;
}
}
printf("%d\n", 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("最小值是:%d\n", min);
printf("%d,%d\n", 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("%.2lf\n", 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("%.2f\n", 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("%d\t", 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