资源描述
编程作业系统AnyviewC —— 支持可视化运行调试
Anyview题库:C程序设计 72题(2011-6-8)
第6章 循环、序列求和(4/27题)
6.020 n和s是系统给定的外部整型变量(不需要自行定义)。编写程序,求1到n之间的整数之和,并将结果存放到s。
6.022 n是系统给定的外部变量。编写程序,求1到n间的自然数之和。请定义局部变量s存放求和的结果,并用下列语句输出结果
printf("1+2+...+n=%d\n",s);
6.026 n和s是系统给定的外部整型变量(不需要自行定义)。编写程序,求1到n之间的奇数之和,并将结果存放到s。
6.028 n和s是系统给定的外部整型变量(不需要自行定义)。编写程序,求1到n之间的偶数之和,并将结果存放到s。
6.030 系统给定外部整型变量n和长整型变量f(不需要自行定义)。编写程序,求n的阶乘n!,并将结果存放到f。
例如,当n=6时,f=6!=1*2*...*6=720。注意:0!=1。
6.032 系统给定外部整型变量n和长整型变量f(不需要自行定义)。编写程序,求n的双阶乘n!!,并将结果存放到f。双阶乘的定义是:
当n是奇数时,n!为不大于n的所有奇数的乘积,如:7!!=1×3×5×7。
当n为偶数时表示不大于n的所有偶数的乘积(0除外),如:8!!=2×4×6×8。
6.034 系统给定外部整型变量n和浮点变量f(不需要自行定义)。编写程序,求负整数n的阶乘n!,并将结果存放到f。假设m是正整数,负整数-m的阶乘定义是:(-m)!=1/(m+1)!。
6.040 m,n和s是系统定义的外部整型变量(不需要自行定义)。编写程序,根据m的值求满足1+2+...+n>=m的最小n,并将1+2+...+n的结果存放到s。例如,若m=50,则n=10,s=55。
6.042 m,n和s是系统定义的外部整型变量(不需要自行定义)。编写程序,根据m的值求满足1+2+...+n<m的最大n,并将1+2+...+n的结果存放到s。例如,若m=50,则n=9,s=45。
6.050 n和s是系统给定的外部整型变量(不需要自行定义)。编写程序,求1+1/2+1/3+...+1/n,并将结果存放到s。
6.051 系统给定外部整型变量n和浮点型变量s(不需要自行定义)。编写程序,求1-1/2+1/3-1/4+...1/n,并将结果存放到s。
6.053 系统给定外部整型变量n和浮点型变量s(不需要自行定义)。编写程序,求1+1/(1+2)+1/(1+2+3)+...+1/(1+2+...+n),并将结果存放到s。
6.055 系统给定外部整型变量n和浮点型变量pi(不需要自行定义)。编写程序,求序列4,-4/3,4/5,-4/7,4/9,-4/11...的前n项和,并将结果存放到pi。
6.056 系统给定外部整型变量n和浮点型变量pi2(不需要自行定义)。编写程序,求1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+...+1*2*...*n/(3*5*7*...*(2n+1)),并将结果存放到pi2。
6.095 n和s是分别是系统给定的外部整型变量和实型变量(不需要自行定义)。编写程序,求分数序列2/1,3/2,5/3,8/5,13/8,21/13,...的前n项和,并将结果存放到s。
6.161 n和s是分别是系统给定的外部整型变量和长整型变量(不需要自行定义)。编写程序,求1!+2!+3!+4!+5!+…+n!,并将结果存放到s。
6.163 n和e是分别是系统给定的外部整型变量和浮点型变量(不需要自行定义)。编写程序,求1+1/1!+1/2!+1/3!+…+1/n!,并将结果存放到e。
6.165 系统给定外部整型变量n和浮点型变量x和e(不需要自行定义)。编写程序,求1+x/1!+x^2/2!+x^3/3!+…+x^n/n!,并将结果存放到e,其中,^是幂运算,x^2表示x的平方,x^n表示x的n次方。
6.172 系统给定外部长整型变量s,整型变量a和n,且a和n的值均在0和9之间(不需要自行定义)。编写程序,求a+aa+aaa+…+aa…aaa(有n个a)之值,并将结果存放到s。例如:a=3和n=5时,求3+33+333+3333+33333。
6.175 系统给定外部长整型变量s,整型变量a、m和n,1<=a<=9且1<=m<=n<=9(不需要自行定义)。编写程序,求序列a,aa,aaa,…,aa…a(第n项为n个a)中,第m项至第n项之和,并将结果存放到s。例如:当a=8,m=3且n=6时,置s=888+8888+88888+888888。
6.176 系统给定外部长整型变量s,整型变量a、m和k,1<=a<=9,1<=m<=9且m+k<=9(不需要自行定义)。编写程序,求数列a,aa,aaa,…,aa…a,…(第i项为i个a)中,第m项起的k项之和,并将结果存放到s。例如:当a=6,m=4且k=3时,置s=6666+66666+666666。
6.183 系统给定外部长整型变量s和整型变量n,且n的值在0和9之间(不需要自行定义)。编写程序,求1+12+123+…+12…n之值,并将结果存放到s。例如,n=5时,置s=1+12+123+1234+12345。
6.184 系统给定外部长整型变量s和整型变量n,且n的值在0和9之间(不需要自行定义)。编写程序,求1+21+321+…+n…21之值,并将结果存放到s。例如,n=5时,置s=1+21+321+4321+54321。
6.186 系统给定外部长整型变量s,整型变量m和n,且1<=m<=n<=9(不需要自行定义)。编写程序,求12…m+12…(m+1)+…+12…n之值,并将结果存放到s。例如,m=3且n=6时,置s=123+1234+12345+123456。
6.187 系统给定外部长整型变量s,整型变量m和n,且1<=m<=n<=9(不需要自行定义)。编写程序,求m…21+(m+1)…21+…+n…21之值,并将结果存放到s。例如,m=3且n=6时,置s=321+4321+54321+654321。
6.220 系统给定外部字符串s和整型数组c[26](不需要自行定义)。编写程序,将字符串s中26个小写字母出现的次数依次统计到数组c中。例如,当s=“abcijkabcdexyzuvwx”时,数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1。
6.221 系统给定外部字符串s和整型数组c[26](不需要自行定义)。编写程序,将字符串s中26个字母(不区分大小写)出现的次数依次统计到数组c中。例如,当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1。
第7章 数组(0/3题)
7.110 系统给定外部字符数组变量s和数组长度n(不需要自行定义)。main函数的功能是:把字符串s中所有小写字母转换为大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。
7.120 系统给定外部长整型变量n和字符数组变量s(不需要自行定义)。main函数的功能是:把n的整数值转换成字符串,并逆序保存在s中。例如,当n=20120826时,由n转换得到s="62802102"。
请仅在空缺处填入合适内容,使其实现上述功能。
7.121 系统给定外部长整型变量n和字符数组变量s(不需要自行定义)。main函数的功能是:把n的整数值转换成字符串,并保存在s中。例如,当n=20120826时,由n转换得到s="20120826"。
请仅在空缺处填入合适内容,使其实现上述功能。
第8章 函数、数组(8/15题)
8.010 写一函数求3个整数中最小的数。
要求实现下列函数:
int min(int x,int y,int z);
8.020 编写函数,求将整笔钱换为1元、5元和10元的零钱共有多少种换法?
要求实现下列函数:
int change(int n);
8.030 先编写一个判断素数的函数。再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。注:素数指只能被1和自身整除的正整数。规定0,1不是素数。
要求实现下列2个函数:
int prime(int n);
/* 判断素数,如果是素数返回1,不是素数则返回0 */
int f(int i);
/* 将偶数i表示为两个素数之和,返回其中较小的素数*/
8.050 编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。
要求实现下列函数:
void func(char str[]);
8.060 编写函数将一个nxn的二维数组按“次对角线”翻转。
例如:翻转前的数组 翻转后的数组
1 2 3 9 6 3
4 5 6 ---> 8 5 2
7 8 9 7 4 1
要求实现的函数原型为:
void invert(char a[N][N]);
8.064 编写函数将一个NxN的二维数组“水平”翻转。
例如:翻转前的数组 翻转后的数组
1 2 3 7 8 9
4 5 6 ---> 4 5 6
7 8 9 1 2 3
要求实现的函数原型为:
void invertH(char a[N][N]);
8.065 编写函数将一个NxN的二维数组“垂直”翻转。
例如:翻转前的数组 翻转后的数组
1 2 3 3 2 1
4 5 6 ---> 6 5 4
7 8 9 9 8 7
要求实现的函数原型为:
void invertV(char a[N][N]);
8.067 编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 4 1 2
4 5 6 ---> 7 5 3
7 8 9 8 9 6
要求实现的函数原型为:
void turningClockwise(char a[N][N]);
8.068 编写函数将一个NxN的二维数组的周边元素“逆时针”轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 2 3 6
4 5 6 ---> 1 5 9
7 8 9 4 7 8
要求实现的函数原型为:
void turningAnticlockwise(char a[N][N]);
8.072 编写函数将一个NxN的二维数组a的元素按行向右轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 3 1 2
4 5 6 ---> 6 4 5
7 8 9 9 7 8
要求实现的函数原型为:
void turningRight(char a[N][N]);
8.075 编写函数将一个NxN的二维数组a的元素按行向左轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 2 3 1
4 5 6 ---> 5 6 4
7 8 9 8 9 7
要求实现的函数原型为:
void turningLeft(char a[N][N]);
8.082 编写函数将一个NxN的二维数组a的元素按列向下轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 7 8 9
4 5 6 ---> 1 2 3
7 8 9 4 5 6
要求实现的函数原型为:
void turningDown(char a[N][N]);
8.085 编写函数将一个NxN的二维数组a的元素按列向上轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 4 5 6
4 5 6 ---> 7 8 9
7 8 9 1 2 3
要求实现的函数原型为:
void turningUp(char a[N][N]);
8.103 编写函数,求整数m和n的最大公约数,并作为函数的返回值。
要求实现的函数原型为:
int gdc(int m, int n);
8.105 编写函数,求整数m和n的最小公倍数,并作为函数的返回值。
要求实现的函数原型为:
int lcm(int m, int n);
第10章 数组、指针和字符串(9/10题)
10.011 请编写一个函数func(char s[], char t[], int n),由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列s=“are”求得逆序列t=“era”;由s=“time”求得t=“emit”。
要求实现函数:
void func(char s[], char t[], int n);
/* 数组s的前n个元素存放给定的字符序列,
数组t的前n个元素存放s的逆序列。
注意:数组的下标从0开始。
*/
10.012 请编写一个函数func(char*s, char *t),由字符串s构造其逆串t。
例如,由给定串s=“are”求得逆串t=“era”;由s=“time”求得t=“emit”。
要求实现函数:
void func(char *s, char *t);
/* s是给定字符串的起始地址,
t是新字符串的起始地址
*/
10.015 对长度为n的字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。
要求实现函数:
void func(char *s1, char *s2, int n);
/* s1为字符串的起始地址,
s2为新字符串的起始地址,
n是字符串的长度。
要求:s1串不能发生改变,
s2串存放新的字符串。
*/
10.016 对字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。
要求实现函数:
void func(char *s1, char *s2);
/* s1为字符串的起始地址,
s2为新字符串的起始地址,
注意:字符串尾字符之后跟随着一个结束符‘\0’,
即ASCII码为0的字符,结束符不属于字符串。
要求:s1串不能发生改变,
s2串存放新的字符串。
*/
10.018 以字符串s第m(>=0)个字符开始的所有字符,按升序的次序构成字符串t。
要求实现函数:
void substr(char *s, int m, char *t);
/* s为字符串的起始地址,
m>=0,
t为新字符串的起始地址,
注意:字符串尾字符之后跟随着一个结束符‘\0’,
即ASCII码为0的字符,结束符不属于字符串。
要求:s串不能发生改变,
t串存放新的字符串。
*/
10.020 在字符串s中查找字符c,如果找到,返回字符c首次出现在字符串s中的位置指针;否则,返回空指针NULL。
要求实现函数:
char *match(char *s, char c);
/* s为字符串的起始地址,
c为要查找的字符,
返回值为字符c在字符串s中首次出现的位置指针,
若c未在s中出现,则返回空指针NULL。
*/
10.033 编写函数,计算年份year中第yearday天相应的月和日。例如,调用函数month_day(2000,61,&m,&d)之后,m=3,d=1,即2000年的第61天是3月1日。
要求实现函数:
int month_day(int year, int yearday, int *pmonth, int *pday)
/* year是年,
yearday是天数,
若year和yearday合理,
则*pmonth和*pday是计算得出的月和日,函数返回1;
否则,函数返回0。
*/
10.044 请编写一个函数func,通过略去非数字字符,将字符串s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
要求实现函数:
long func(char *s);
/* s是一个数字字符串的地址,
函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)
*/
10.105 请编写一个函数findmax(int s[], int n),返回数组s中n(>0)个整数中的最大值。注意:要求在函数中采用指针(而不是下标)来处理数组元素。
要求实现函数:
int findmax(int s[], int n);
/* 返回s中n(>0)个整数的最大值。
注意:要求在函数中采用指针(而不是下标)来处理数组元素。
*/
10.124 请编写一个函数min3adj(int s[], int n),数组s中有n(>0)个整数,返回在s中相邻三个数的和中的最小值。
要求实现函数:
int min3adj(int s[], int n);
/* 数组s含n(>0)个整数,
返回在s中相邻三个数的和中的最小值。
*/
第11章 结构体和链表(7/9题)
11.023 结构体类型定义如下:
struct date{int year; int month; int day;}; //定义日期结构体类型
struct student
{ char name[10]; //人名
struct date birth; //出生日期
};
结构体数组s存储了n个人的名字和出生日期。写一函数,求这n个人中年龄最大(即出生日期最小)者的姓名。
要求实现下列函数:
char *oldest(struct student s[], int n);
11.033 日期和链表结点的结构体类型定义如下:
struct date{int year; int month; int day;}; //日期结构体类型
struct studentNode //链表结点的结构体类型
{ char name[10]; //人名
struct date birth; //出生日期
struct studentNode *next
};
结构体链表L存储了n个人的名字和出生日期。写一函数,求这n个人中年龄
最大(即出生日期最小)者的名字。
要求实现下列函数:
char *oldest(struct studentNode *L);
/* 若L是空表,则返回空指针null
否则返回表中年龄最大者的名字
*/
11.063 结构体类型定义如下:
struct course
{ int cID; //课程号,取值0~99
char name[10]; //课程名
float credit; //学分,取值0~5
int semester; //学期,取值1~8
};
结构体数组c存储了n门课程的信息。写一函数,求学期s的总学分。
要求实现下列函数:
float creditSum(struct course c[], int n, int s);
11.073 课程链表结点的结构体类型定义如下:
struct courseNode //课程链表结点的结构体类型
{ int cID; //课程号,取值0~99
char name[10]; //课程名
float credit; //学分,取值0~5
int semester; //学期,取值1~8
struct courseNode *next;
};
结构体链表Lc存储了各学期多门课程的信息。写一函数,求学期s的总学分。
要求实现下列函数:
float creditSum(struct courseNode *Lc, int s);
/* 若Lc是空表,则返回0;
否则返回学期s的总学分
*/
11.133 日期和结构体类型定义如下:
struct date{int year; int month; int day;}; //日期结构体类型
struct student //结构体类型
{ char name[10]; //人名
struct date birth; //出生日期
};
结构体数组s存储了n个人的名字和出生日期。写一函数,由数组s中n个人
的信息及其顺序构造相应的链表。链表的结点的结构体类型定义如下:
struct studentNode //结构体类型
{ char name[10]; //人名
struct date birth; //出生日期
struct studentNode *next
};
要求实现下列函数:
struct studentNode *CreateLinkList(struct student s[], int n);
11.173 课程链表结点的结构体类型定义如下:
struct courseNode //课程链表结点的结构体类型
{ int cID; //课程号,取值0~99
char name[10]; //课程名
float credit; //学分,取值0~5
int semester; //学期,取值1~8
struct courseNode *next;
};
结构体链表Lc存储了多门课程的信息。写一函数,将课程号为c的课程的学分修改为t。
要求实现下列函数:
struct courseNode *creditChange(struct courseNode *Lc, int c, float t);
/* 若课程c不存在,则修改不成功,返回null;
否则修改该课程的学分为t,返回指向该课程结点的指针。
*/
11.183 课程链表结点的结构体类型定义如下:
struct courseNode //课程链表结点的结构体类型
{ int cID; //课程号,取值0~99
char name[10]; //课程名
float credit; //学分,取值0~5
int semester; //学期,取值1~8
struct courseNode *next;
};
结构体链表Lc存储了多门课程的信息。写一函数,将课程号为c的课程结点删除。
要求实现下列函数:
struct courseNode *deleteCourse(struct courseNode **Lc, int c);
/* 若在链表Lc中课程c不存在,则删除不成功,返回null;
否则从链表Lc中删除该课程结点,并返回指向该课程结点的指针。
*/
11.302 单向链表的结点类型定义如下:
struct node{
char ch;
struct node *next;
};
编写函数,对单向链表L实现就地逆置,即将所有结点的指针反向,原链头当作链尾,原链尾当作链头,并返回逆置后链表的头指针。
实现下列函数:
struct node *inverse(struct node *L);
/* 对单向链表L实现就地逆置,并返回逆置后链表的头指针。*/
11.352 单向链表的结点类型定义如下:
struct node{
char ch;
struct node *next;
};
编写函数,对单向链表L实现排序,即按结点的ch值,从小到大重构链表L,并返回排序后的链表的头指针。
实现下列函数:
struct node *sorting(struct node *L);
/* 对单向链表L实现从小到大排序,并返回重构后的链表的头指针。*/
- 11 -
展开阅读全文