内容正文:
《C语言程序设计》
期末复习卷(十)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。加密规则:若单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则循环右移一次。例如:单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。
数组原数据:she is able to abide her.
加密后数据:she is blea to eabid her.
#include <stdio.h>
#include <ctype.h>
void wordchange(char str[])
{
int i,j,k,m;
char c;
for(i=0;str[i];i++)
{
for(j=i,k=i;isalpha(str[k]);k++);
/*******space*******/
/*******space*******/
i=k;
}
}
int main()
{
char string[80]="she is able to abide her.";
puts(string);
wordchange(string);
puts(string);
return 0;
}
2.有一个字符串a为12345678,在第二个位置开始后面插入abcd,最终结果为12abcd345678
#include<stdio.h>
#intclude<string.h>
int main(){
char src_str[100]="12345678";
char new_str[]="abcd";
int addr=2;
/*******space*******/
/*******space*******/
}
3.完成函数功能,接收两个整数x,y,求x^y次方。
#include <stdio.h>
#intclude<string.h>
float mypow(int x,int y){
/*******space*******/
/*******space*******/
}
void main(){
int x,y;
scanf("%d%d",&x,&y);
printf("x^y次方=%f",mypow(x,y));
}
4.该程序实现的功能是:已知数列1,3,6,10,15,…… ,计算该数列的第n项
#include<stdio.h>
#include<math.h>
double fun(int n)
{
double u=0.0;
/*******space*******/
/*******space*******/
}
void main()
{
int n=0;
double u=0.0;
scanf("%d",&n);
u=fun(n);
printf("该数列的第n项为:%f",u);
}
5.程序实现的功能是:输入字符串(不包含空格),删除其中的非数字字符后输出
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int l,i,j;
gets(a);
l=strlen(a);
j=0;
/*******space*******/
/*******space*******/
b[j]='\0';
printf("去掉数字后的字符串为:");
puts(b);
}
6.一个数列的头三个数是0,0,1,第四个数是前三个数之和,以后每个都是前三个数之和,输入一个整数,数列最后一个数刚好大于输入的整数,这个数字在数列的第几项?
#include<stdio.h>
int main()
{
int i,j,k,l,m,n;
i=j=0;
k=1;
n=3;
/*******space*******/
/*******space*******/
printf("%d
",n);
}
7.输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数.
#include<stdio.h>
void main()
{
int sum,n,i,temp,k=0;
scanf("%d",&n);
/*******space*******/
/*******space*******/
printf("%d
",k);
}
8.一个盒子中放有100个球,其中45个红的,25个白的,30个黑的,输入小于100的整数n,从中任取n个球,问共有多少种不同的颜色搭配。
#include<stdio.h>
int main()
{
int i,j,k,l,n,s=0;
scanf("%d",&n);
/*******space*******/
/*******space*******/
printf("共有%d种搭配方式
",s);
return 0;
}
9.请编写函数 fun,它的功能是:将s所指字符串中除了下标为偶数、同时 ASCII 值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在 t 所指的数组中
示例:
【请输入一个字符串: 】ABCDEFG123456
【筛选后的字符串为: 】246
#include<stdio.h>
#include<string.h>
void fun(char *s, char *t) {
/*******space*******/
/*******space*******/
}
int main() {
char s[100];
char t[100];
printf("【请输入一个字符串: 】");
scanf("%99s", s);
fun(s, t);
if (t[0] == '\0') {
printf("没有满足条件的字符串
");
} else {
printf("【筛选后的字符串为: 】%s
", t);
}
return 0;
}
10.编写函数 fun ,它的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII 值大或相等的字符依次存放到c 所指数组中,形成一个新的字符串。
示例:
【请输入第一个字符串: 】aBCDeFgH
【请输入第二个字符串: 】ABcd
【生成的新字符串为: 】aBcdeFgH
#include<stdio.h>
#include<string.h>
void fun(char *p, char *q, char *c) {
/*******space*******/
/*******space*******/
}
int main() {
char a[100], b[100], c[100];
printf("【请输入第一个字符串: 】");
scanf("%99s", a);
printf("【请输入第二个字符串: 】");
scanf("%99s", b);
fun(a, b, c);
printf("【生成的新字符串为: 】%s
", c);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《C语言程序设计》
期末复习卷(十)
时间:90分钟 总分:100分
班级 姓名 学号 成绩
一.程序设计题(本大题共10小题,每小题10分,共100分)
1.编写程序对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。加密规则:若单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则循环右移一次。例如:单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。
数组原数据:she is able to abide her.
加密后数据:she is blea to eabid her.
#include <stdio.h>
#include <ctype.h>
void wordchange(char str[])
{
int i,j,k,m;
char c;
for(i=0;str[i];i++)
{
for(j=i,k=i;isalpha(str[k]);k++);
/*******space*******/
if(str[j] == 'a' && str[k-1] == 'e'){
int len = k - j;
if(len % 2 == 0){
c = str[j];
for(m=j;m<k-1;m++){
str[m]=str[m+1];
}
str[k-1] = c;
}else{
c = str[k-1];
for(m = k-1; m > j; m--){
str[m] = str[m-1];
}
str[j] = c;
}
}
/*******space*******/
i=k;
}
}
int main()
{
char string[80]="she is able to abide her.";
puts(string);
wordchange(string);
puts(string);
return 0;
}
2.有一个字符串a为12345678,在第二个位置开始后面插入abcd,最终结果为12abcd345678
#include <stdio.h>
#intclude<string.h>
int main(){
char src_str[100]="12345678";
char new_str[]="abcd";
int addr=2;
/*******space*******/
int src_len = strlen(src_str);
int new_len = strlen(new_str);
for(int i = src_len; i >= addr; i--){
src_str[i + new_len] = src_str[i];
}
for(int i = 0; i < new_len; i++){
src_str[addr + i] = new_str[i];
}
printf("%s
", src_str);
/*******space*******/
}
3.完成函数功能,接收两个整数x,y,求x^y次方。
#include <stdio.h>
#intclude<string.h>
float mypow(int x,int y){
/*******space*******/
float result = 1.0;
int abs_y = y > 0 ? y : -y;
for(int i = 0; i < abs_y; i++){
result *= x;
}
if(y < 0){
result = 1.0 / result;
}
return result;
/*******space*******/
}
void main(){
int x,y;
scanf("%d%d",&x,&y);
printf("x^y次方=%f",mypow(x,y));
}
4.该程序实现的功能是:已知数列1,3,6,10,15,…… ,计算该数列的第n项
#include<stdio.h>
#include<math.h>
double fun(int n)
{
double u=0.0;
/*******space*******/
u = n * (n + 1) / 2.0;
return u;
/*******space*******/
}
void main()
{
int n=0;
double u=0.0;
scanf("%d",&n);
u=fun(n);
printf("该数列的第n项为:%f",u);
}
5.程序实现的功能是:输入字符串(不包含空格),删除其中的非数字字符后输出
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int l,i,j;
gets(a);
l=strlen(a);
j=0;
/*******space*******/
for(i = 0; i < l; i++){
if(a[i] >= '0' && a[i] <= '9'){
b[j++] = a[i];
}
}
/*******space*******/
b[j]='\0';
printf("去掉数字后的字符串为:");
puts(b);
}
6.一个数列的头三个数是0,0,1,第四个数是前三个数之和,以后每个都是前三个数之和,输入一个整数,数列最后一个数刚好大于输入的整数,这个数字在数列的第几项?
#include<stdio.h>
int main()
{
int i,j,k,l,m,n;
i=j=0;
k=1;
n=3;
/*******space*******/
int target;
scanf("%d", &target);
while(k <= target){
l = i + j + k;
i = j;
j = k;
k = l;
n++;
}
/*******space*******/
printf("%d
",n);
}
7.输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数.
#include<stdio.h>
void main()
{
int n,i,temp,sum,k=0;
scanf("%d",&n);
/*******space*******/
for(i=100;i<=n;i++){
int sum=0;
int temp=i;
while(temp>0){
sum+=temp % 10;
temp/=10;
}
if(sum == 5){
k++;
}
}
/*******space*******/
printf("%d
",k);
}
8.一个盒子中放有100个球,其中45个红的,25个白的,30个黑的,输入小于100的整数n,从中任取n个球,问共有多少种不同的颜色搭配。
#include<stdio.h>
int main()
{
int i,j,k,l,n,s=0;
scanf("%d",&n);
/*******space*******/
for(i = 0; i <= 45; i++){
for(j = 0; j <= 25; j++){
for(k = 0; k <= 30; k++){
if(i + j + k == n)
{
s++;
}
}
}
}
/*******space*******/
printf("共有%d种搭配方式
",s);
return 0;
}
9.请编写函数 fun,它的功能是:将s所指字符串中除了下标为偶数、同时 ASCII 值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在 t 所指的数组中
示例:
【请输入一个字符串: 】ABCDEFG123456
【筛选后的字符串为: 】246
#include<stdio.h>
#include<string.h>
void fun(char *s, char *t) {
/*******space*******/
int i, j = 0;
for(i = 0; s[i] != '\0'; i++){
if(i % 2 == 0 && s[i] % 2 == 0){
t[j++] = s[i];
}
}
t[j] = '\0';
/*******space*******/
}
int main() {
char s[100];
char t[100];
printf("【请输入一个字符串: 】");
scanf("%99s", s);
fun(s, t);
if (t[0] == '\0') {
printf("没有满足条件的字符串
");
} else {
printf("【筛选后的字符串为: 】%s
", t);
}
return 0;
}
10.编写函数 fun ,它的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII 值大或相等的字符依次存放到c 所指数组中,形成一个新的字符串。
示例:
【请输入第一个字符串: 】aBCDeFgH
【请输入第二个字符串: 】ABcd
【生成的新字符串为: 】aBcdeFgH
#include<stdio.h>
#include<string.h>
void fun(char *p, char *q, char *c) {
/*******space*******/
int i = 0;
while(p[i] != '\0' || q[i] != '\0'){
if(p[i] == '\0'){
c[i] = q[i];
}
else if(q[i] == '\0'){
c[i] = p[i];
}else{
c[i] = (p[i] >= q[i]) ? p[i] : q[i];
}
i++;
}
c[i] = '\0';
/*******space*******/
}
int main() {
char a[100], b[100], c[100];
printf("【请输入第一个字符串: 】");
scanf("%99s", a);
printf("【请输入第二个字符串: 】");
scanf("%99s", b);
fun(a, b, c);
printf("【生成的新字符串为: 】%s
", c);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$