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

2026-06-14
| 2份
| 13页
| 19人阅读
| 0人下载

资源信息

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

内容正文:

《C语言程序设计》 期末复习卷(八) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.编写程序统计区间[m, n]内所有各位数字之积大于各位数字之和的数的个数(m和n均大于0,且n大于m) #include<stdio.h> int main(){ int m,n,i,count=0; scanf("%d%d",&m,&n); /*******space*******/ for(i=m;i<=n;i++){ int num=i,sum=0,product=1,digit; while(num>0){ digit=num%10; sum+=digit; product*=digit; num/=10; } if(product>sum){ count++; } } /*******space*******/ printf("%d ",count); return 0; } 2.输入由若干个单词组成的字符串,使用指针统计该字符串中单词的个数(单词之间以空格分隔) #include<stdio.h> int count_words(char *s){ /*******space*******/ int count = 0; int in_word = 0; while(*s!='\0'){ if(*s!=' '&&in_word==0){ in_word=1; count++; } else if(*s==' '){ in_word = 0; } s++; } return count; /*******space*******/ } int main(){ char str[100]; gets(str); printf("%d ", count_words(str)); return 0; } 3.编写程序输入一个整数n,将其各位数字重组成最大的整数输出(n大于0) #include<stdio.h> int main(){ int n; /*******space*******/ scanf("%d ",&n); int digits[10]={0}; int temp=n; if(n<0) n=-n; while(temp!=0){ digits[temp % 10]++; temp /= 10; } int result=0; for(int i=9;i>=0;i--){ while(digits[i]>0) { result=result*10+i; digits[i]--; } } n = result; /*******space*******/ printf("%d ", n); return 0; } 4.编写程序,输入一个整数列表,将所有奇数放在前面,偶数放在后面,各自保持原顺序,并输出结果 #include<stdio.h> int main(){ int nums[100],result[100],n,i,odd_index=0,even_index; scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d",&nums[i]); /*******space*******/ even_index=n-1; for(i=n-1;i>=0;i--){ if(nums[i]%2==0){ result[even_index--]=nums[i]; } } for(i=0;i<n;i++){ if(nums[i]%2==1){ result[odd_index++] = nums[i]; } } /*******space*******/ for(i = 0; i < n; i++) printf("%d ", result[i]); return 0; } 5.输入一个句子(单词间用空格隔开),找出出现次数最多的单词(忽略大小写,假设唯一)。 #include<stdio.h> #include<string.h> #include<ctype.h> void main(){ char a[100],count=0; int i,flag=1; /*******space*******/ char words[50][50]={0}; int counts[50]={0}; int word_count=0; int j=0,k=0; gets(a); for(i=0;a[i]!='\0';i++){ if(a[i] != ' '){ words[j][k++] = tolower(a[i]); } else if(k>0){ words[j][k]='\0'; j++; k=0; } } if(k>0){ words[j][k]='\0'; j++; } word_count=j; for(i=0;i<word_count;i++){ counts[i]=1; for(j=i+1;j<word_count;j++){ if(strcmp(words[i], words[j]) == 0){ counts[i]++; strcpy(words[j], ""); } } } int max_idx=0; for(i=0; i<word_count;i++){ if(counts[i]>counts[max_idx]){ max_idx=i; } } printf("%s %d",words[max_idx],counts[max_idx]); /*******space*******/ } 6.小球从100米落下,每次弹起高度为上次的2/3,求第n次落地时经过的总路程。 #include<stdio.h> int main(){ int n, i; double height=100, total=100; scanf("%d", &n); /*******space*******/ if(n==1){ total=100; } else{ for(i=2;i<=n;i++){ height=height * 2.0 / 3.0; total+=height * 2; } } /*******space*******/ printf("%.2f ", total); return 0; } 7.输入一个整数数组(可能有负数),求连续子数组的最大和。例如输入数组长度为8,输入的8个整数为-2 1 -3 4 -1 2 1 -5。输出结果为6 #include<stdio.h> int main(){ int a[100],n,i,cur_sum=0,max_sum; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); /*******space*******/ max_sum=a[0]; cur_sum=0; for(i=0;i<n;i++){ cur_sum+=a[i]; if(cur_sum>max_sum){ max_sum=cur_sum; } if(cur_sum<0){ cur_sum=0; } } /*******space*******/ printf("%d ", max_sum); return 0; } 8.输入一个字符串,找出第一个不重复的字符(只出现一次),输出该字符;如果没有,输出-1 #include<stdio.h> #include<string.h> int main(){ char s[200]; int freq[256] = {0},i; gets(s); /*******space*******/ for(i=0;s[i]!='\0';i++){ freq[(int)s[i]]++; } for(i=0;s[i]!= '\0';i++){ if(freq[(int)s[i]]==1){ printf("%c ", s[i]); return 0; } } printf("-1 "); /*******space*******/ return 0; } 9.输入一个字符串(只含大小写字母,不区分大小写),统计每个字母出现次数,按次数从高到低输出字母和次数(次数相同按字母顺序) 例如输入:banana, 输出结果: a:3, n:2, b:1 #include<stdio.h> #include<ctype.h> #include<string.h> struct Freq{ char ch; int count; }; int main(){ char s[200]; int count[26]={0},i,j; struct Freq freq[26],temp; gets(s); /*******space*******/ for(i=0;s[i]!='\0';i++){ if(isalpha(s[i])){ count[tolower(s[i]) - 'a']++; } } int idx =0; for(i =0;i<26;i++){ if(count[i]>0){ freq[idx].ch='a'+i; freq[idx].count=count[i]; idx++; } } for(i=0;i<idx-1;i++){ for(j=0;j<idx-i-1;j++){ if(freq[j].count<freq[j+1].count||(freq[j].count==freq[j+1].count&&freq[j].ch>freq[j+1].ch)){ temp = freq[j]; freq[j] = freq[j + 1]; freq[j + 1] = temp; } } } for(i = 0; i < idx; i++) { printf("%c:%d", freq[i].ch, freq[i].count); if(i < idx - 1) printf(", "); } /*******space*******/ return 0; } 10.输入一个整数(可能为负数),输出各位反转后的数,末尾的0反转后去掉。例如输入-12300,输出-321 #include<stdio.h> int main(){ int n,reversed=0,sign=1; scanf("%d", &n); /*******space*******/ if(n<0){ sign=-1; n=-n; } while(n>0){ reversed=reversed*10+n%10; n/=10; } reversed=sign*reversed; /*******space*******/ printf("%d ", reversed); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《C语言程序设计》 期末复习卷(八) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.编写程序统计区间[m, n]内所有各位数字之积大于各位数字之和的数的个数(m和n均大于0,且n大于m) #include<stdio.h> int main(){ int m,n,i,count=0; scanf("%d%d",&m,&n); /*******space*******/ /*******space*******/ printf("%d ",count); return 0; } 2.输入由若干个单词组成的字符串,使用指针统计该字符串中单词的个数(单词之间以空格分隔) #include<stdio.h> int count_words(char *s){ /*******space*******/ /*******space*******/ } int main(){ char str[100]; gets(str); printf("%d ", count_words(str)); return 0; } 3.编写程序输入一个整数n,将其各位数字重组成最大的整数输出(n大于0) #include<stdio.h> int main(){ int n; /*******space*******/ /*******space*******/ printf("%d ", n); return 0; } 4.编写程序,输入一个整数列表,将所有奇数放在前面,偶数放在后面,各自保持原顺序,并输出结果 #include<stdio.h> int main(){ int nums[100],result[100],n,i,odd_index=0,even_index; scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d",&nums[i]); /*******space*******/ /*******space*******/ for(i = 0; i < n; i++) printf("%d ", result[i]); return 0; } 5.输入一个句子(单词间用空格隔开),找出出现次数最多的单词(忽略大小写,假设唯一)。 #include<stdio.h> #include<string.h> #include<ctype.h> void main(){ char a[100],count=0; int i,flag=1; /*******space*******/ /*******space*******/ } 6.小球从100米落下,每次弹起高度为上次的2/3,求第n次落地时经过的总路程。 #include<stdio.h> int main(){ int n, i; double height=100, total=100; scanf("%d", &n); /*******space*******/ /*******space*******/ printf("%.2f ", total); return 0; } 7.输入一个整数数组(可能有负数),求连续子数组的最大和。例如输入数组长度为8,输入的8个整数为-2 1 -3 4 -1 2 1 -5。输出结果为6 #include<stdio.h> int main(){ int a[100],n,i,cur_sum=0,max_sum; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); /*******space*******/ /*******space*******/ printf("%d ", max_sum); return 0; } 8.输入一个字符串,找出第一个不重复的字符(只出现一次),输出该字符;如果没有,输出-1 #include<stdio.h> #include<string.h> int main(){ char s[200]; int freq[256] = {0},i; gets(s); /*******space*******/ /*******space*******/ return 0; } 9.输入一个字符串(只含大小写字母,不区分大小写),统计每个字母出现次数,按次数从高到低输出字母和次数(次数相同按字母顺序) 例如输入:banana, 输出结果: a:3, n:2, b:1 #include<stdio.h> #include<ctype.h> #include<string.h> struct Freq{ char ch; int count; }; int main(){ char s[200]; int count[26]={0},i,j; struct Freq freq[26],temp; gets(s); /*******space*******/ /*******space*******/ return 0; } 10.输入一个整数(可能为负数),输出各位反转后的数,末尾的0反转后去掉。例如输入-12300,输出-321 #include<stdio.h> int main(){ int n,reversed=0,sign=1; scanf("%d", &n); /*******space*******/ /*******space*******/ printf("%d ", reversed); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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