内容正文:
《C语言程序设计》
期末复习卷(一)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序求1+2!+3!+4!+.....+20!的和。
#include<stdio.h>
void main(){
int i,t=1,s=0;
/*******space*******/
for(i=1;i<=20;i++)
{
t=t*i;
s=s+t
}
/*******space*******/
printf("1+2!+...+20! = %d
",s)
}
2.将一个正整数分解质因数,例如:输入90,打印出90=2*3*3*5
#include<stdio.h>
void main(){
int n,i;
/*******space*******/
printf("请输入一个正整数: ");
scanf("%d", &n);
printf("%d=", n);
i = 2;
while(n > 1){
if(n % i == 0){
printf("%d", i);
n = n / i;
if(n > 1) printf("*");
}
else{
i++;
}
}
/*******space*******/
}
3.利用递归函数调用的方式,将所输入的5个字符,以相反的顺序打印出来
#include<stdio.h>
void main(){
char a[5];
int i;
/*******space*******/
void reverse(char a[], int n){
if(n >= 0){
printf("%c", a[n]);
reverse(a, n-1);
}
}
printf("请输入5个字符: ");
for(i=0;i<5;i++) scanf(" %c", &a[i]);
printf("反序输出: ");
reverse(a, 4);
/*******space*******/
}
4.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
#include<stdio.h>
#include<string.h>
void main(){
int n,m,i;
int a[100],temp[100];
/*******space*******/
printf("请输入整数个数n: ");
scanf("%d", &n);
printf("请输入%d个整数: ", n);
for(i=0;i<n;i++)
scanf("%d", &a[i]);
printf("请输入后移位数m: ");
scanf("%d", &m);
m = m % n;
for(i=0;i<m;i++) temp[i] = a[n-m+i];
for(i=n-1;i>=m;i--) a[i] = a[i-m];
for(i=0;i<m;i++) a[i] = temp[i];
printf("移动后的数组: ");
for(i=0;i<n;i++) printf("%d ", a[i]);
/*******space*******/
}
5.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数是多少?(输出前40个月即可)
#include<stdio.h>
void main(){
long f1=1,f2=1,f3;
int i;
/*******space*******/
printf("第1个月: 1对
");
printf("第2个月: 1对
");
for(i=3;i<=40;i++){
f3 = f1 + f2;
printf("第%d个月: %ld对
", i, f3);
f1 = f2;
f2 = f3;
}
/*******space*******/
}
6.输入一串字符串和一个指定字符,将字符串中的指定字符删除
#include<stdio.h>
#include<string.h>
void main(){
char str[100],ch;
int i,j;
/*******space*******/
printf("请输入字符串: ");
gets(str);
printf("请输入要删除的字符: ");
scanf("%c", &ch);
for(i=j=0; str[i]!='\0'; i++){
if(str[i] != ch){
str[j++] = str[i];
}
}
str[j] = '\0';
printf("删除后的字符串: %s
", str);
/*******space*******/
}
7.有一数组a[10]已经排好序,现输入一个整数,要求按原来的规律将它插入到数组中。
#include<stdio.h>
#include<string.h>
void main(){
int a[10]={1,3,5,7,9,11,13,15,17,19};
int num,i,j;
/*******space*******/
printf("原数组: ");
for(i=0;i<10;i++) printf("%d ", a[i]);
printf("
请输入要插入的数: ");
scanf("%d", &num);
for(i=0;i<10;i++){
if(num < a[i]){
for(j=9;j>=i;j--) a[j+1] = a[j];
a[i] = num;
break;
}
}
if(i==10) a[10] = num;
printf("插入后数组: ");
for(i=0;i<11;i++) printf("%d ", a[i]);
/*******space*******/
}
8.有一数组a[10],现输入一个小于10的整数n以及要移动的个数m,最后m个数变成最前面的m个数
#include<stdio.h>
void main(){
int a[10],temp[10];
int n,m,i;
/*******space*******/
printf("请输入整数个数n(<10): ");
scanf("%d", &n);
printf("请输入%d个整数: ", n);
for(i=0;i<n;i++) scanf("%d", &a[i]);
printf("请输入后移位数m: ");
scanf("%d", &m);
m = m % n;
for(i=0;i<m;i++) temp[i] = a[n-m+i];
for(i=n-1;i>=m;i--) a[i] = a[i-m];
for(i=0;i<m;i++) a[i] = temp[i];
printf("移动后: ");
for(i=0;i<n;i++) printf("%d ", a[i]);
/*******space*******/
}
9.输入一个八进制的整数,将其转换成十进制后并输出
#include<stdio.h>
void main(){
char oct[20];
int dec=0,i=0;
/*******space*******/
printf("请输入一个八进制数: ");
scanf("%s", oct);
while(oct[i] != '\0'){
dec = dec * 8 + (oct[i] - '0');
i++;
}
printf("十进制值为: %d
", dec);
/*******space*******/
}
10.有5个大学生坐在一起,问第五个人月工资多少?他说比第4个人多2000,问第4个人工资,他说比第3个人多2000,问第3个人,又说比第2个人多2000,问第2个人,又说比第1个人多2000,最后问第一个人,他说工资是4000,问第5个人的工资是多少并输出
#include<stdio.h>
void main(){
/*******space*******/
int salary(int n){
if(n == 1) return 4000;
else return salary(n-1) + 2000;
}
printf("第5个人的工资是: %d元
", salary(5));
/*******space*******/
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《C语言程序设计》
期末复习卷(一)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序求1+2!+3!+4!+.....+20!的和。
#include<stdio.h>
void main(){
int i,t=1,s=0;
/*******space*******/
/*******space*******/
}
2.将一个正整数分解质因数,例如:输入90,打印出90=2*3*3*5
#include<stdio.h>
void main(){
int n,i;
/*******space*******/
/*******space*******/
}
3.利用递归函数调用的方式,将所输入的5个字符,以相反的顺序打印出来
#include<stdio.h>
void main(){
char a[5];
int i;
/*******space*******/
/*******space*******/
}
4.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
#include<stdio.h>
#include<string.h>
void main(){
int n,m,i;
int a[100],temp[100];
/*******space*******/
/*******space*******/
}
5.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数是多少?(输出前40个月即可)
#include<stdio.h>
void main(){
long f1=1,f2=1,f3;
int i;
/*******space*******/
/*******space*******/
}
6.输入一串字符串和一个指定字符,将字符串中的指定字符删除
#include<stdio.h>
#include<string.h>
void main(){
char str[100],ch;
int i,j;
/*******space*******/
/*******space*******/
}
7.有一数组a[10]已经排好序,现输入一个整数,要求按原来的规律将它插入到数组中。
#include<stdio.h>
#include<string.h>
void main(){
int a[10]={1,3,5,7,9,11,13,15,17,19};
int num,i,j;
/*******space*******/
/*******space*******/
}
8.有一数组a[10],现输入一个小于10的整数n以及要移动的个数m,最后m个数变成最前面的m个数
#include<stdio.h>
void main(){
int a[10],temp[10];
int n,m,i;
/*******space*******/
/*******space*******/
}
9.输入一个八进制的整数,将其转换成十进制后并输出
#include<stdio.h>
void main(){
char oct[20];
int dec=0,i=0;
/*******space*******/
/*******space*******/
}
10.有5个大学生坐在一起,问第五个人月工资多少?他说比第4个人多2000,问第4个人工资,他说比第3个人多2000,问第3个人,又说比第2个人多2000,问第2个人,又说比第1个人多2000,最后问第一个人,他说工资是4000,问第5个人的工资是多少并输出
#include<stdio.h>
void main(){
/*******space*******/
/*******space*******/
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$