内容正文:
《C语言程序设计》
期末复习卷(六)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序,利用基姆拉尔森公式计算日期为该年的第几天,例如输入年月日(如2026-5-12),输出该日是星期几。基姆拉尔森公式:W=(d+2*m+3*(m+1)/5+ y+y/4-y/100+y/400)%7,注意:当m=1或2时要当做上一年的13、14月进行计算。
#include<stdio.h>
int main(){
int y,m,d,w;
scanf("%d%d%d",&y,&m,&d);
/*******space*******/
if(m == 1 || m == 2) {
m += 12;
y--;
}
w = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;
/*******space*******/
char *week[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
printf("%s
", week[w]);
return 0;
}
2.输入一个奇数n,打印由*组成的菱形。例如:n=5时输出:
*
* * *
* * * * *
* * *
*
#include<stdio.h>
int main(){
int n,i,j;
scanf("%d",&n);
/*******space*******/
for(i = 0; i < n/2 + 1; i++){
for(j = 0; j < n/2 - i; j++){
printf(" ");
}
for(j = 0; j < 2*i + 1; j++){
printf("* ");
}
printf("
");
}
for(i = n/2 - 1; i >= 0; i--){
for(j = 0; j < n/2 - i; j++){
printf(" ");
}
for(j = 0; j < 2*i + 1; j++){
printf("* ");
}
printf("
");
}
/*******space*******/
return 0;
}
3.编写程序使用埃拉托色尼筛选法输出100以内的所有素数
#include<stdio.h>int main(){
int isPrime[101];
int i, j;
/*******space*******/
for(i = 2; i <= 100; i++){
isPrime[i]=1;
}
for(i = 2; i * i <= 100; i++) {
if(isPrime[i]){
for(j = i * i; j <= 100; j += i){
isPrime[j] = 0;
}
}
}
for(i = 2; i<=100;i++){
if(isPrime[i]){
printf("%d ", i);
}
}
printf("
");
/*******space*******/
return 0;
}
4.编写程序,输入一个正整数n,输出该数的所有因子(不包括1和它本身)。例如输入n=12 → 输出2 3 4 6
#include<stdio.h>
int main(){
int n, i;
scanf("%d", &n);
printf("%d的因子有:", n);
/*******space*******/
for(i = 2; i < n; i++){
if(n % i == 0){
printf("%d ", i);
}
}
printf("
");
/*******space*******/
return 0;
}
5.编写程序凯撒密码加密,将字符串中的每个大写字母向后移动3位,A→D, B→E, ..., Z→C。其他字符不变。
#include<stdio.h>
void caesarEncrypt(char s[]){
int i = 0;
/*******space*******/
while(s[i] != '\0'){
if(s[i] >= 'A' && s[i] <= 'Z'){
s[i] = (s[i] - 'A' + 3) % 26 + 'A';
}
i++;
}
/*******space*******/
}
int main(){
char s[] = "HELLO WORLD";
caesarEncrypt(s);
printf("加密后:%s
", s);
return 0;
}
6.编写程序,比较两个字符串s1和s2,若相等返回0,s1 > s2返回正数,s1 < s2返回负数。
#include<stdio.h>
int strCompare(char s1[], char s2[]){
int i = 0;
/*******space*******/
while(s1[i] != '\0' && s2[i] != '\0'){
if(s1[i] != s2[i]){
return s1[i] - s2[i];
}
i++;
}
return s1[i] - s2[i];
/*******space*******/
}
int main(){
char s1[] = "abc",
s2[] = "abd";
int result = strCompare(s1, s2);
printf("比较结果:%d
", result);
return 0;
}
7.编写程序,利用结构体输入n个学生的姓名和成绩,输出平均分以及最高分学生的信息。
#include<stdio.h>
struct student{
char name[20];
int score;
};
int main(){
struct student stu[100];
int n, i;
int sum = 0,
maxScore = 0,
maxIndex = 0;
/*******space*******/
printf("请输入学生人数:");
scanf("%d", &n);
for(i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和成绩:", i+1); scanf("%s%d", stu[i].name, &stu[i].score);
sum += stu[i].score;
if(stu[i].score > maxScore){
maxScore = stu[i].score;
maxIndex = i;
}
}
printf("平均分:%.2f
", (float)sum / n);
printf("最高分学生:%s %d
", stu[maxIndex].name, stu[maxIndex].score);
/*******space*******/
return 0;
}
8.编写程序,在已按升序排列的数组a中查找目标值x,找到则返回下标,否则返回-1。
#include<stdio.h>
int binarySearch(int a[], int n, int x){
int left=0,right=n-1,mid;
/*******space*******/
while(left <= right){
mid = (left + right) / 2;
if(a[mid] == x){
return mid;
}
else if(a[mid] < x){
left = mid + 1;
}
else{
right = mid - 1;
}
}
/*******space*******/
return -1;
}
int main(){
int a[] = {1, 3, 5, 7, 9, 11};
int x = 7;
int index = binarySearch(a, 6, x);
printf("%d的下标是:%d
", x, index);
return 0;
}
9.编写程序,输入10个整数,将数组中所有奇数移到数组左边,偶数移到右边。#include<stdio.h>
int main(){
int a[10], i, j, temp;
for(i = 0; i < 10; i++) scanf("%d", &a[i]);
/*******space*******/
i = 0;
j = 9;
while(i < j){
while(i < j && a[i] % 2 == 1) i++;
while(i < j && a[j] % 2 == 0) j--;
if(i < j){
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
/*******space*******/
for(i = 0; i < 10; i++) printf("%d ", a[i]);
return 0;
}
10.输入一个字符,判断它是否为元音字母(a,e,i,o,u,不区分大小写)
#include<stdio.h>
#include<ctype.h>
int main(){
char ch;
scanf("%c", &ch);
ch = tolower(ch);
/*******space*******/
if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
printf("%c是元音字母
", ch);
}else{
printf("%c不是元音字母
", ch);
}
/*******space*******/
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《C语言程序设计》
期末复习卷(六)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序,利用基姆拉尔森公式计算日期为该年的第几天,例如输入年月日(如2026-5-12),输出该日是星期几。基姆拉尔森公式:W=(d+2*m+3*(m+1)/5+ y+y/4-y/100+y/400)%7,注意:当m=1或2时要当做上一年的13、14月进行计算。
#include<stdio.h>
int main(){
int y,m,d,w;
scanf("%d%d%d",&y,&m,&d);
/*******space*******/
/*******space*******/
char *week[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
printf("%s
", week[w]);
return 0;
}
2.输入一个奇数n,打印由*组成的菱形。例如:n=5时输出:
*
* * *
* * * * *
* * *
*
#include<stdio.h>
int main(){
Int n,i,j;
scanf("%d",&n);
/*******space*******/
/*******space*******/
return 0;
}
3.编写程序使用埃拉托色尼筛选法输出100以内的所有素数
#include<stdio.h>int main(){
int isPrime[101];
int i, j;
/*******space*******/
/*******space*******/
return 0;
}
4.编写程序,输入一个正整数n,输出该数的所有因子(不包括1和它本身)。例如输入n=12 → 输出2 3 4 6
#include<stdio.h>
int main(){
int n, i;
scanf("%d", &n);
printf("%d的因子有:", n);
/*******space*******/
/*******space*******/
return 0;
}
5.编写程序凯撒密码加密,将字符串中的每个大写字母向后移动3位,A→D, B→E, ..., Z→C。其他字符不变。
#include<stdio.h>
void caesarEncrypt(char s[]){
int i = 0;
/*******space*******/
/*******space*******/
}
int main(){
char s[] = "HELLO WORLD";
caesarEncrypt(s);
printf("加密后:%s
", s);
return 0;
}
6.编写程序,比较两个字符串s1和s2,若相等返回0,s1 > s2返回正数,s1 < s2返回负数。
#include<stdio.h>
int strCompare(char s1[], char s2[]){
int i = 0;
/*******space*******/
/*******space*******/
}
int main(){
char s1[] = "abc",
s2[] = "abd";
int result = strCompare(s1, s2);
printf("比较结果:%d
", result);
return 0;
}
7.编写程序,利用结构体输入n个学生的姓名和成绩,输出平均分以及最高分学生的信息。
#include<stdio.h>
struct student{
char name[20];
int score;
};
int main(){
struct student stu[100];
int n, i;
int sum = 0,
maxScore = 0,
maxIndex = 0;
/*******space*******/
/*******space*******/
return 0;
}
8.编写程序,在已按升序排列的数组a中查找目标值x,找到则返回下标,否则返回-1。
#include<stdio.h>
int binarySearch(int a[], int n, int x){
int left=0,right=n-1,mid;
/*******space*******/
/*******space*******/
return -1;
}
int main(){
int a[] = {1, 3, 5, 7, 9, 11};
int x = 7;
int index = binarySearch(a, 6, x);
printf("%d的下标是:%d
", x, index);
return 0;
}
9.编写程序,输入10个整数,将数组中所有奇数移到数组左边,偶数移到右边。#include<stdio.h>
int main(){
int a[10], i, j, temp;
for(i = 0; i < 10; i++) scanf("%d", &a[i]);
/*******space*******/
/*******space*******/
for(i = 0; i < 10; i++) printf("%d ", a[i]);
return 0;
}
10.输入一个字符,判断它是否为元音字母(a,e,i,o,u,不区分大小写)
#include<stdio.h>
#include<ctype.h>
int main(){
char ch;
scanf("%c", &ch);
ch = tolower(ch);
/*******space*******/
/*******space*******/
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$