期末复习卷《C语言程序设计》(上海科学普及出版社)(九)

2026-06-14
| 2份
| 16页
| 17人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 数据类型和简单程序设计,分支结构,循环结构,数组,函数
使用场景 同步教学-期末
学年 2026-2027
地区(省份) 湖北省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 199 KB
发布时间 2026-06-14
更新时间 2026-06-14
作者 源栈
品牌系列 学易金卷·期末模拟卷
审核时间 2026-06-14
下载链接 https://m.zxxk.com/soft/58340287.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《C语言程序设计》 期末复习卷(九) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.请编写函数fun, 它的功能是:计算并输出 n(包括 n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333,注意:要求n的值不大于100。 #include <stdio.h> double fun(int n){ /*******space*******/ double sum = 0.0; int i; for(i=1; i<=n;i++){ if(i % 5 == 0 || i % 9 == 0) { sum += 1.0 / i; } } return sum; /*******space*******/ } int main() { int n; printf("【请输入一个不大于 100 的整数 n: 】"); scanf("%d", &n); if (n > 100) { printf("输入的数应不大于 100。 "); return 1; } double result = fun(n); printf("s=%.6f ", result); return 0; } 2.请编写函数fun ,它的功能是:将十进制正整数 m 转换成 k(2≤k≤9)进制数, 并按高位到低位顺序输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是 1000) #include <stdio.h> int fun(int m, int k, int result[]) { /*******space*******/ int i = 0; if(m == 0){ result[i++]=0; }else{ while(m>0){ result[i++] = m % k; m /= k; } } return i; /*******space*******/ } int main() { int m, k; int result[32]; printf("【请输入一个十进制正整数 m 和进制 k(2 ≤ k ≤ 9),用空格分隔:】"); scanf("%d %d", &m, &k); if (k < 2 || k > 9) { printf("输入的 k 不在 2 到 9 的范围内,请重新输入。 "); return 1; } int digitCount = fun(m, k, result); for (int i = digitCount - 1; i >= 0; i--) { printf("%d", result[i]); } printf(" "); return 0; } 3.请编写函数fun,它的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地 址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。 注意不能使用C语言的库函数。 示例1 【请输入主字符串: 】abcdabfabcdx 【请输入子字符串: 】ab abcdx 示例2 【请输入主字符串: 】abcdabfabcdx 【请输入子字符串: 】abd not be found! #include <stdio.h> char* fun(char *s, char *t) { /*******space*******/ char *last = NULL; char *p, *q, *r; for(p = s; *p != '\0';p++){ q = p; r = t; while(*r != '\0' && *q == *r){ q++; r++; } if(*r == '\0'){ last = p; } } return last; /*******space*******/ } int main(){ char s[100]; char t[20]; printf("【请输入主字符串: 】"); scanf("%99s", s); printf("【请输入子字符串: 】"); scanf("%19s", t); char *result = fun(s, t); if (result != NULL) { printf("%s ", result); } else { printf("not be found! "); } return 0; } 4.已知一个数列从第 0 项开始的前三项分别为 0,0,1,以后的各项都是其相邻的前三项之和。编写函数fun,fun的功能是:计算并输出该数列前 n 项的平方根之和。n的值通过形参传入。例如,当 n=1 0 时,程序的输出结果应为:23.1 97745。 示例: 【请输入数列的项数 N=】10 【该数列前 10 项的和为:】23.197745 #include<math.h> double fun(int n) { if (n < 0) { return 0.0; } double s0 = 0.0; double s1 = 0.0; double s2 = 1.0; double sum = 0.0; /*******space*******/ int i; for(i = 0; i < n; i++){ if(i == 0) sum += sqrt(s0); else if(i == 1) sum += sqrt(s1); else if(i == 2) sum += sqrt(s2); else{ double s3 = s0 + s1 + s2; sum += sqrt(s3); s0 = s1; s1 = s2; s2 = s3; } } return sum; /*******space*******/ } int main() { int n; printf("【请输入数列的项数 N=】"); scanf("%d", &n); printf("【该数列前 %d 项的和为:】%.6f ", n,fun(n)); return 0; } 5.题目:编写一个函数 fun,它的功能是计算下列级数和:S = 1 + x + x^2/2! + x^3/3! + ... + x^n/n!(n的值由用户输入)。例如,当 n=10,x=0.3 时,函数值为 1.349859 示例: 【请输入级数的项数参数n(非负整数):】10 【请输入x的值:】0.3 【级数和为:】1.349859 #include <stdio.h> double fun(int n, double x) { /*******space*******/ double sum = 1.0; double term = 1.0; int i; for(i = 1; i <= n; i++){ term = term * x / i; sum += term; } return sum; /*******space*******/ } int main(){ int n; double x, result; printf("【请输入级数的项数参数n(非负整数):】"); while (scanf("%d", &n) != 1 || n < 0) { printf("输入错误!请输入非负整数:"); while (getchar() != ' '); } printf("【请输入x的值:】"); while (scanf("%lf", &x) != 1) { printf("输入错误!请输入有效的数字:"); while (getchar() != ' '); } result = fun(n, x); printf("【级数和为:】%.6f ", result); return 0; } 6.题目:函数 fun 的功能是:将由键盘输入的字符串中所有 ASCII 码值小于等于97的字符存入形参 t 所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。例如,形参 s 所指的字符串为:Abc@1 x56*,程序执行后 t 所指字符数组中的字符串应为:A@1 56*。 示例: 【请输入字符串:】Abc@1 x56* 【新字符串为:】A@1 56* #include <stdio.h> #include <string.h> #include <stdlib.h> int fun(const char *s, char *t) { int count = 0; /*******space*******/ while(*s != '\0'){ if(*s <= 97){ t[count++] = *s; } s++; } t[count] = '\0'; return count; /*******space*******/ } int main() { char s[1000]; char t[1000]; int num; printf("【请输入字符串:】"); if (fgets(s, sizeof(s), stdin) == NULL) { printf("输入失败! "); return 1; } s[strcspn(s, " ")] = '\0'; for (int i=0;s[i]!='\0';i++){ if ((unsigned char)s[i] > 127) { printf("输入包含无ASCII码的字符,程序结束! "); exit(1); } } num = fun(s, t); if (num == 0) { printf("【新字符串为:】无符合条件的字符串 "); } else { printf("【新字符串为:】%s ", t); } return 0; } 7.编写函数fun,将十进制正整数m转换成二进制,并返回二进制表示中1的个数。例如,m=13,二进制为1101,返回3 #include<stdio.h> int fun(int m){ /*******space*******/ int count = 0; while(m > 0){ if(m % 2 == 1){ count++; } m /= 2; } return count; /*******space*******/ } int main(){ int m; scanf("%d", &m); printf("%d ", fun(m)); return 0; } 8.编写函数fun,找出字符串s中第一个只出现一次的字符,通过函数值返回。若没有,返回'\0'。例如,s="abacbd",第一个只出现一次的字符是'c'。 #include<stdio.h> char fun(char *s){ /*******space*******/ int count[256] = {0}; char *p = s; while(*p != '\0'){ count[(int)*p]++; p++; } p = s; while(*p != '\0'){ if(count[(int)*p] == 1){ return *p; } p++; } return '\0'; /*******space*******/ } int main(){ char s[200]; scanf("%s",s); char result = fun(s); if(result != '\0') printf("%c ", result); else printf("无 "); return 0; } 9.编写函数fun,计算斐波那契数列前n项中所有偶数的和。斐波那契数列:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。例如,n=10,前10项为:1,1,2,3,5,8,13,21,34,55,偶数为2,8,34,和为44。 #include<stdio.h> int fun(int n){ /*******space*******/ int sum = 0; int a = 1, b = 1, c; int i; if(n >= 1 && a % 2 == 0) sum += a; if(n >= 2 && b % 2 == 0) sum += b; for(i = 3; i <= n; i++){ c = a + b; if(c % 2 == 0){ sum += c; } a = b; b = c; } return sum; /*******space*******/ } int main(){ int n; scanf("%d", &n); printf("%d ", fun(n)); return 0; } 10.编写函数fun,将字符串s中的所有小写字母转换为大写字母,其他字符不变。不能使用库函数toupper() #include<stdio.h> void fun(char *s){ /*******space*******/ while(*s != '\0'){ if(*s >='a' && *s <= 'z'){ *s = *s - 32; } s++; } /*******space*******/ }int main(){ char s[200]; gets(s); fun(s); printf("%s ", s); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《C语言程序设计》 期末复习卷(九) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.请编写函数fun, 它的功能是:计算并输出 n(包括 n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333,注意:要求n的值不大于100。 #include <stdio.h> double fun(int n){ /*******space*******/ /*******space*******/ } int main() { int n; printf("【请输入一个不大于 100 的整数 n: 】"); scanf("%d", &n); if (n > 100) { printf("输入的数应不大于 100。 "); return 1; } double result = fun(n); printf("s=%.6f ", result); return 0; } 2.请编写函数fun ,它的功能是:将十进制正整数 m 转换成 k(2≤k≤9)进制数, 并按高位到低位顺序输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是 1000) #include <stdio.h> int fun(int m, int k, int result[]) { /*******space*******/ /*******space*******/ } int main() { int m, k; int result[32]; printf("【请输入一个十进制正整数 m 和进制 k(2 ≤ k ≤ 9),用空格分隔:】"); scanf("%d %d", &m, &k); if (k < 2 || k > 9) { printf("输入的 k 不在 2 到 9 的范围内,请重新输入。 "); return 1; } int digitCount = fun(m, k, result); for (int i = digitCount - 1; i >= 0; i--) { printf("%d", result[i]); } printf(" "); return 0; } 3.请编写函数fun,它的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地 址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。 注意不能使用C语言的库函数。 示例1 【请输入主字符串: 】abcdabfabcdx 【请输入子字符串: 】ab abcdx 示例2 【请输入主字符串: 】abcdabfabcdx 【请输入子字符串: 】abd not be found! #include <stdio.h> char* fun(char *s, char *t) { /*******space*******/ /*******space*******/ } int main(){ char s[100]; char t[20]; printf("【请输入主字符串: 】"); scanf("%99s", s); printf("【请输入子字符串: 】"); scanf("%19s", t); char *result = fun(s, t); if (result != NULL) { printf("%s ", result); } else { printf("not be found! "); } return 0; } 4.已知一个数列从第 0 项开始的前三项分别为 0,0,1,以后的各项都是其相邻的前三项之和。编写函数fun,fun的功能是:计算并输出该数列前 n 项的平方根之和。n的值通过形参传入。例如,当 n=1 0 时,程序的输出结果应为:23.1 97745。 示例: 【请输入数列的项数 N=】10 【该数列前 10 项的和为:】23.197745 #include<math.h> double fun(int n) { if (n < 0) { return 0.0; } double s0 = 0.0; double s1 = 0.0; double s2 = 1.0; double sum = 0.0; /*******space*******/ /*******space*******/ } int main() { int n; printf("【请输入数列的项数 N=】"); scanf("%d", &n); printf("【该数列前 %d 项的和为:】%.6f ", n,fun(n)); return 0; } 5.题目:编写一个函数 fun,它的功能是计算下列级数和:S = 1 + x + x^2/2! + x^3/3! + ... + x^n/n!(n的值由用户输入)。例如,当 n=10,x=0.3 时,函数值为 1.349859 示例: 【请输入级数的项数参数n(非负整数):】10 【请输入x的值:】0.3 【级数和为:】1.349859 #include <stdio.h> double fun(int n, double x) { /*******space*******/ /*******space*******/ } int main(){ int n; double x, result; printf("【请输入级数的项数参数n(非负整数):】"); while (scanf("%d", &n) != 1 || n < 0) { printf("输入错误!请输入非负整数:"); while (getchar() != ' '); } printf("【请输入x的值:】"); while (scanf("%lf", &x) != 1) { printf("输入错误!请输入有效的数字:"); while (getchar() != ' '); } result = fun(n, x); printf("【级数和为:】%.6f ", result); return 0; } 6.题目:函数 fun 的功能是:将由键盘输入的字符串中所有 ASCII 码值小于等于97的字符存入形参 t 所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。例如,形参 s 所指的字符串为:Abc@1 x56*,程序执行后 t 所指字符数组中的字符串应为:A@1 56*。 示例: 【请输入字符串:】Abc@1 x56* 【新字符串为:】A@1 56* #include <stdio.h> #include <string.h> #include <stdlib.h> int fun(const char *s, char *t) { int count = 0; /*******space*******/ /*******space*******/ } int main() { char s[1000]; char t[1000]; int num; printf("【请输入字符串:】"); if (fgets(s, sizeof(s), stdin) == NULL) { printf("输入失败! "); return 1; } s[strcspn(s, " ")] = '\0'; for (int i=0;s[i]!='\0';i++){ if ((unsigned char)s[i] > 127) { printf("输入包含无ASCII码的字符,程序结束! "); exit(1); } } num = fun(s, t); if (num == 0) { printf("【新字符串为:】无符合条件的字符串 "); } else { printf("【新字符串为:】%s ", t); } return 0; } 7.编写函数fun,将十进制正整数m转换成二进制,并返回二进制表示中1的个数。例如,m=13,二进制为1101,返回3 #include<stdio.h> int fun(int m){ /*******space*******/ /*******space*******/ } int main(){ int m; scanf("%d", &m); printf("%d ", fun(m)); return 0; } 8.编写函数fun,找出字符串s中第一个只出现一次的字符,通过函数值返回。若没有,返回'\0'。例如,s="abacbd",第一个只出现一次的字符是'c'。 #include<stdio.h> char fun(char *s){ /*******space*******/ /*******space*******/ } int main(){ char s[200]; scanf("%s",s); char result = fun(s); if(result != '\0') printf("%c ", result); else printf("无 "); return 0; } 9.编写函数fun,计算斐波那契数列前n项中所有偶数的和。斐波那契数列:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。例如,n=10,前10项为:1,1,2,3,5,8,13,21,34,55,偶数为2,8,34,和为44。 #include<stdio.h> int fun(int n){ /*******space*******/ /*******space*******/ } int main(){ int n; scanf("%d", &n); printf("%d ", fun(n)); return 0; } 10.编写函数fun,将字符串s中的所有小写字母转换为大写字母,其他字符不变。不能使用库函数toupper() #include<stdio.h> void fun(char *s){ /*******space*******/ /*******space*******/ }int main(){ char s[200]; gets(s); fun(s); printf("%s ", s); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

期末复习卷《C语言程序设计》(上海科学普及出版社)(九)
1
期末复习卷《C语言程序设计》(上海科学普及出版社)(九)
2
期末复习卷《C语言程序设计》(上海科学普及出版社)(九)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。