《C语言程序设计》核心能力测试题
编程题
1、 输入一个年份,判断是不是闰年。
2、 编写程序,输入x的值,求y的值。
-1 (x<0)
y= 0 (x=0)
1 (x>0)
3、 输出1+2+3+…+n的结果,其中n的值通过键盘输入。
4、 输入一个字符串#表示结束,统计英文字母、数字和其它字符的个数。
5、 用数组方式输入5个学生的成绩,求总分和平均分,并对这5个成绩进行从高到低的排序。
6、 一位同学因为参加大学生运动会需要进行缓考,缓考过后,老师要把他的成绩插入班级的成绩单中,成绩单已经按照分数从高到低进行了排序,试问这个缓考成绩要怎样插入才不影响已经排好序的成绩单?
7、 输入一个字符串是否是“回文”。所谓回文是指对称的字符串,如”abcddcba”,正读反读都是一样的,判断回文的过程在函数中实现。
8、 编写一个整数,判断是否是素数。
9、 有一个数列为:1,1,2,3,5,8……,输出这个数列的前30项,每一行输出5个。
10、 输入以下图形:
word下载地址:
答案:
1.输入一个年份,判断是不是闰年。
#include <stdio.h>
int main() {
int n;
printf("请输入一个年份:");
scanf("%d", &n);
if (n % 400 == 0 || n % 4 == 0 && n % 100 != 0) {
printf("%d是闰年", n);
} else {
printf("%d不是闰年", n);
}
}
2.
#include <stdio.h>
int main() {
int x, y;
printf("请输入x的值:");
scanf("%d", &x);
if (x > 0)
y=1;
else if (x <0)
y=-1;
else
y=0 ;
printf("对应y的值是:%d\n",y);
return 0;
}
3.输出1+2+3+…+n的结果,其中n的值通过键盘输入。
#include <stdio.h>
int main() {
int n, j = 0;
printf("输出1+2+3+…+n的结果");
printf("请输入n的值:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
j = j + i;
}
printf("结果为:%d", j);
}
4、 输入一个字符串#表示结束,统计英文字母、数字和其它字符的个数。
#include <stdio.h>
int main() {
char a;
int c = 0, b = 0, d = 0;
printf("请输入一串字符:");
do {
if (a >= '0' && a <= '9') {
c++;
} else if ((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) {
b++;
} else {
d++;
}
} while ((a = getchar() ) != '#');
printf("数字的个数:%d\n字母字符个数:%d\n其他字符个数:%d\n", c, b, d);
}
5、 用数组方式输入5个学生的成绩,求总分和平均分,并对这5个成绩进行从高到低的排
6、 一位同学因为参加大学生运动会需要进行缓考,缓考过后,老师要把他的成绩插入班级的成绩单中,成绩单已经按照分数从高到低进行了排序,试问这个缓考成绩要怎样插入才不影响已经排好序的成绩单?
#include <stdio.h>
int main() {
int a[11] = {96, 91, 85, 79, 72, 64, 50, 43, 25, 10};
int b, i, j;
printf("原成绩为:");
for (i = 0; i < 10; i++)
printf("%4d", a[i]);
printf("\n");
printf("请输入所要插入的学生成绩:");
scanf("%d", &b);
if (a[9] > b)
a[10] = b;
else {
for (i = 0; i < 10; i++) {
if (b >= a[i]) {
for (j = 10; j > i; j--)
a[j] = a[j - 1];
a[i] = b;
break;
}
}
}
printf("插入成绩后:");
for (i = 0; i < 11; i++)
printf("%4d", a[i]);
printf("\n");
}
7、 输入一个字符串是否是“回文”。所谓回文是指对称的字符串,如”abcddcba”,正读反读都是一样的,判断回文的过程在函数中实现。
8、 编写一个整数,判断是否是素数。
9、 有一个数列为:1,1,2,3,5,8……,输出这个数列的前30项,每一行输出5个。
#include <stdio.h>
int main() {
int i = 1;
int j = 1;
int m = 0;
printf("%10d%10d", i, j);
for (int k = 3; k <= 30; k++) {
m = i + j;
i = j;
j = m;
printf("%10d", m);
if (k % 5 == 0) {
printf("%\n");
}
}
}
10、 输入以下图形:
#include <stdio.h>
//int main() {
// int i, j, k;
// for (i = 1; i <= 5; i++) {
// for (j = 0; j < 4 - i; j++) {
// printf(" ");
// }
// for (k = 0; k < 2 * i - 1; k++) {
// printf("*");
// }
// printf("\n");
// }
//}
int main() {
int i, j, k, m;
// 内循环控制行,外循环控制列
for (i = 5, j = 1; j <= i; j++) {
// 输出空格
for (k = i - 1; k >= j; k--) {
printf(" ");
}
// 输出*
for (m = 1; m <= j * 2 - 1; m++) {
printf("*");
}
printf("\n");
}
}
源码图来源:一笑同学