西宁网站建设王道下拉惠,网站有后台更新不了,网站诚信体制建设,响应式网站在线目录81、习题7-7 字符串替换82、习题8-10 输出学生成绩83、习题8-2 在数组中查找指定元素84、习题8-3 数组循环右移85、题8-9 分类统计各类字符个数86、习题9-2 计算两个复数之积87、习题9-6 按等级统计学生成绩88、习题11-1 输出月份英文名89、习题11-2 查找星期90、练习10-1 …目录81、习题7-7 字符串替换82、习题8-10 输出学生成绩83、习题8-2 在数组中查找指定元素84、习题8-3 数组循环右移85、题8-9 分类统计各类字符个数86、习题9-2 计算两个复数之积87、习题9-6 按等级统计学生成绩88、习题11-1 输出月份英文名89、习题11-2 查找星期90、练习10-1 使用递归函数计算1到n之和91、习题10-2 递归求阶乘和92、习题8-5 使用函数实现字符串部分复制93、习题8-6 删除字符94、习题8-8 判断回文字符串95、习题10-3 递归实现指数函数96、习题10-4 递归求简单交错幂级数的部分和97、习题10-5 递归计算Ackermenn函数98、习题10-6 递归求Fabonacci数列99、习题10-7 十进制转换二进制100、习题10-8 递归实现顺序输出整数81、习题7-7 字符串替换本题要求编写程序将给定字符串中的大写英文字母按以下对应规则替换原字母对应字母AZBYCXDW......XCYBZA输入格式输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式输出在一行中给出替换完成后的字符串。输入样例Only the 11 CAPItaL LeTtERS are replaced.输出样例Lnly the 11 XZKRtaO OeGtVIH are replaced.注 编程重点AZ155BY155CX155DW155… …XC155YB155ZA155代码#includestdio.h// AZ155
// BY155
// ......
int main()
{char str[81];gets(str);int i;for(i0;istrlen(str);i){if(str[i]Astr[i]Z){str[i]155-str[i];}}puts(str);
}82、习题8-10 输出学生成绩本题要求编写程序根据输入学生的成绩统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式输入第一行首先给出一个正整数N表示学生的个数。接下来一行给出N个学生的成绩数字间以空格分隔。输出格式按照以下格式输出average 平均成绩max 最高成绩min 最低成绩结果均保留两位小数。输入样例385 90 95输出样例average 90.00max 95.00min 85.00代码#includestdio.hdouble fun(int *arr,int n,int l)
{int i;int index0;for(i1;in;i){if(l1){if(arr[i]arr[index]) indexi;}else{if(arr[i]arr[index]) indexi;}}return arr[index]/1.0;
}
int main()
{int N;int arr[10000];scanf(%d,N);int i;int sum0;for(i0;iN;i){scanf(%d,arr[i]);sumarr[i];}printf(average %.2lf\n,sum/(double)N);printf(max %.2lf\n,fun(arr,N,1));printf(min %.2lf\n,fun(arr,N,2));return 0;}83、习题8-2 在数组中查找指定元素本题要求实现一个在数组中查找指定元素的简单函数。函数接口定义int search( int list[], int n, int x );其中list[]是用户传入的数组n≥0是list[]中元素的个数x是待查找的元素。如果找到则函数search返回相应元素的最小下标下标从0开始否则返回−1。裁判测试程序样例#include stdio.h
#define MAXN 10int search( int list[], int n, int x );int main()
{int i, index, n, x;int a[MAXN];scanf(%d, n);for( i 0; i n; i )scanf(%d, a[i]);scanf(%d, x);index search( a, n, x );if( index ! -1 )printf(index %d\n, index);elseprintf(Not found\n);return 0;
}/* 你的代码将被嵌在这里 */输入样例151 2 2 5 42输出样例1index 1输入样例251 2 2 5 40输出样例2Not found代码int search( int list[], int n, int x )
{int i;int l-1;for(i0;in;i){if(list[i]x){l1;break;}}if(l1) return i;else return l;
}84、习题8-3 数组循环右移本题要求实现一个对数组进行循环右移的简单函数一个数组a中存有n0个整数将每个整数循环向右移m≥0个位置即将a中的数据由变换为最后m个数循环移最前面的m个位置。函数接口定义int ArrayShift( int a[], int n, int m );其中 a[] 是用户传入的数组n是数组的大小m是右移的位数。函数 ArrayShift 须将循环右移后的数组仍然存在a[]中。裁判测试程序样例#include stdio.h
#define MAXN 10int ArrayShift( int a[], int n, int m );int main()
{int a[MAXN], n, m;int i;scanf(%d %d, n, m);for ( i 0; i n; i ) scanf(%d, a[i]);ArrayShift(a, n, m);for ( i 0; i n; i ) {if (i ! 0) printf( );printf(%d, a[i]);}printf(\n);return 0;
}/* 你的代码将被嵌在这里 */输入样例6 21 2 3 4 5 6输出样例5 6 1 2 3 4代码int ArrayShift( int a[], int n, int m )
{int i;int k;for(k1;km;k){int tempa[n-1];for(in-1;i0;i--){a[i]a[i-1];}a[0]temp;}
}85、题8-9 分类统计各类字符个数本题要求实现一个函数统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。函数接口定义void StringCount( char *s );其中 char *s 是用户传入的字符串。函数 StringCount 须在一行内按照大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数的格式输出。裁判测试程序样例#include stdio.h
#define MAXS 15void StringCount( char *s );
void ReadString( char *s ); /* 由裁判实现略去不表 */int main()
{char s[MAXS];ReadString(s);StringCount(s);return 0;
}/* Your function will be put here */输入样例aZ*?093 Az输出样例2 2 1 3 4代码void StringCount( char *s )
{int suma0; //小写字母个数int sumA0; //大写字母个数int sum_0; //空格个数int sum10; //数字个数// int sumO0;int i;int lenstrlen(s);for(i0;ilen;i){if(s[i]As[i]Z) sumA;if(s[i]as[i]z) suma;if(s[i] ) sum_;if(s[i]0s[i]9) sum1;}printf(%d %d %d %d %d\n,sumA,suma,sum_,sum1,len-(sumasumAsum_sum1));
}86、习题9-2 计算两个复数之积本题要求实现一个计算复数之积的简单函数。函数接口定义struct complex multiply(struct complex x, struct complex y);其中 struct complex 是复数结构体其定义如下struct complex{int real;int imag;
};裁判测试程序样例#include stdio.hstruct complex{int real;int imag;
};struct complex multiply(struct complex x, struct complex y);int main()
{struct complex product, x, y;scanf(%d%d%d%d, x.real, x.imag, y.real, y.imag);product multiply(x, y);printf((%d%di) * (%d%di) %d %di\n, x.real, x.imag, y.real, y.imag, product.real, product.imag);return 0;
}/* 你的代码将被嵌在这里 */输入样例3 4 5 6输出样例(34i) * (56i) -9 38i代码struct complex multiply(struct complex x, struct complex y)
{struct complex t;t.realx.real*y.real-x.imag*y.imag;t.imagx.real*y.imagy.real*x.imag;return t;
};87、习题9-6 按等级统计学生成绩本题要求实现一个根据学生成绩设置其等级并统计不及格人数的简单函数。函数接口定义int set_grade( struct student *p, int n );其中 p 是指向学生信息的结构体数组的指针该结构体的定义为struct student{int num;char name[20];int score;char grade;
};n 是数组元素个数。学号 num 、姓名 name 和成绩 score 均是已经存储好的。set_grade 函数需要根据学生的成绩 score 设置其等级 grade 。等级设置85100为A7084为B6069为C059为D。同时 set_grade 还需要返回不及格的人数。裁判测试程序样例#include stdio.h
#define MAXN 10struct student{int num;char name[20];int score;char grade;
};int set_grade( struct student *p, int n );int main()
{ struct student stu[MAXN], *ptr;int n, i, count;ptr stu;scanf(%d\n, n);for(i 0; i n; i){scanf(%d%s%d, stu[i].num, stu[i].name, stu[i].score);} count set_grade(ptr, n);printf(The count for failed (60): %d\n, count);printf(The grades:\n); for(i 0; i n; i)printf(%d %s %c\n, stu[i].num, stu[i].name, stu[i].grade);return 0;
}/* 你的代码将被嵌在这里 */输入样例1031001 annie 8531002 bonny 7531003 carol 7031004 dan 8431005 susan 9031006 paul 6931007 pam 6031008 apple 5031009 nancy 10031010 bob 78输出样例The count for failed (60): 1The grades:31001 annie A31002 bonny B31003 carol B31004 dan B31005 susan A31006 paul C31007 pam C31008 apple D31009 nancy A31010 bob B代码int set_grade( struct student *p, int n )
{int i;int temp0;for(i0;in;i){if(p[i].score85p[i].score100) p[i].gradeA;if(p[i].score70p[i].score84) p[i].gradeB;if(p[i].score60p[i].score69) p[i].gradeC;if(p[i].score0p[i].score59) {p[i].gradeD;temp;}}return temp;
}88、习题11-1 输出月份英文名本题要求实现函数可以返回一个给定月份的英文名称。函数接口定义char *getmonth( int n );函数 getmonth 应返回存储了 n 对应的月份英文名称的字符串头指针。如果传入的参数 n 不是一个代表月份的数字则返回空指针NULL。裁判测试程序样例#include stdio.hchar *getmonth( int n );int main()
{int n;char *s;scanf(%d, n);s getmonth(n);if ( sNULL ) printf(wrong input!\n);else printf(%s\n, s);return 0;
}/* 你的代码将被嵌在这里 */输入样例15输出样例1May输入样例215输出样例2wrong input!代码char *getmonth( int n )
{if(n12||n0) return NULL;else{if(n1) return January;if(n2) return February;if(n3) return March;if(n4) return April;if(n5) return May;if(n6) return June;if(n7) return July;if(n8) return August;if(n9) return September;if(n10) return October;if(n11) return November;if(n12) return December;}
}89、习题11-2 查找星期本题要求实现函数可以根据下表查找到星期返回对应的序号。序号星期0Sunday1Monday2Tuesday3Wednesday4Thursday5Friday6Saturday函数接口定义int getindex( char *s );函数 getindex 应返回字符串 s 序号。如果传入的参数 s 不是一个代表星期的字符串则返回-1。裁判测试程序样例#include stdio.h
#include string.h#define MAXS 80int getindex( char *s );int main()
{int n;char s[MAXS];scanf(%s, s);n getindex(s);if ( n-1 ) printf(wrong input!\n);else printf(%d\n, n);return 0;
}/* 你的代码将被嵌在这里 */输入样例1Tuesday输出样例12输入样例2today输出样例2wrong input!代码int getindex( char *s )
{char str[8][10]{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};int i,j;int lenstrlen(s);int l-1;for(i0;i7;i){if(strcmp(s,str[i])0){l1;break;}}if(l1) return i;else return -1;
}90、练习10-1 使用递归函数计算1到n之和本题要求实现一个用递归计算123…n的和的简单函数。函数接口定义int sum( int n );该函数对于传入的正整数n返回123…n的和若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。裁判测试程序样例#include stdio.hint sum( int n );int main()
{int n;scanf(%d, n);printf (%d\n, sum(n));return 0;
}/* 你的代码将被嵌在这里 */输入样例110输出样例155输入样例20输出样例20代码int sum( int n )
{if(n0){if(n1) return 1;else return nsum(n-1);}else return 0;
}91、习题10-2 递归求阶乘和本题要求实现一个计算非负整数阶乘的简单函数并利用该函数求 1!2!3!...n! 的值。函数接口定义double fact( int n );double factsum( int n );函数 fact 应返回 n 的阶乘建议用递归实现。函数 factsum 应返回 1!2!... n! 的值。题目保证输入输出在双精度范围内。裁判测试程序样例#include stdio.hdouble fact( int n );
double factsum( int n );int main()
{int n;scanf(%d,n);printf(fact(%d) %.0f\n, n, fact(n));printf(sum %.0f\n, factsum(n));return 0;
}/* 你的代码将被嵌在这里 */输入样例110输出样例1fact(10) 3628800sum 4037913输入样例20输出样例2fact(0) 1sum 0代码double fact( int n )
{if(n1||n0) return 1;else return n*fact(n-1);
}
double factsum( int n )
{int i;double sum0;if(n0) return 0;else{for(i1;in;i)sumfact(i);return sum;}
}92、习题8-5 使用函数实现字符串部分复制本题要求编写函数将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数接口定义void strmcpy( char *t, int m, char *s );函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度则结果字符串应为空串。裁判测试程序样例
#include stdio.h
#define MAXN 20void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现略去不表 */int main()
{char t[MAXN], s[MAXN];int m;scanf(%d\n, m);ReadString(t);strmcpy( t, m, s );printf(%s\n, s);return 0;
}/* 你的代码将被嵌在这里 */输入样例7happy new year输出样例new year代码void strmcpy( char *t, int m, char *s )
{int lenstrlen(t);int i0;if(mlen) *sNULL;else{mm-1;while(t[m]!\0){s[i]t[m];m;}s[i]\0;}
}93、习题8-6 删除字符本题要求实现一个删除字符串中的指定字符的简单函数。函数接口定义void delchar( char *str, char c );其中char *str是传入的字符串c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。裁判测试程序样例#include stdio.h
#define MAXN 20void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现略去不表 */int main()
{char str[MAXN], c;scanf(%c\n, c);ReadString(str);delchar(str, c);printf(%s\n, str);return 0;
}/* 你的代码将被嵌在这里 */输入样例ahappy new year输出样例hppy new yer代码void delchar( char *str, char c )
{int lenstrlen(str);char *strTemp(char*)malloc(sizeof(char)*len);int i0;int t0;while(str[i]!\0){if(str[i]!c) strTemp[t]str[i];i;}strTemp[t]\0;for(i0;it;i)str[i]strTemp[i];
}94、习题8-8 判断回文字符串本题要求编写函数判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回 true 否则返回 false 。裁判测试程序样例#include stdio.h
#include string.h#define MAXN 20
typedef enum {false, true} bool;bool palindrome( char *s );int main()
{char s[MAXN];scanf(%s, s);if ( palindrome(s)true )printf(Yes\n);elseprintf(No\n);printf(%s\n, s);return 0;
}/* 你的代码将被嵌在这里 */输入样例1thisistrueurtsisiht输出样例1Yesthisistrueurtsisiht输入样例2thisisnottrue输出样例2Nothisisnottrue代码bool palindrome( char *s )
{int lenstrlen(s);int i;int l1;for(i0;ilen/2;i){if(s[i]!s[len-1-i]){l0;break;}}if(l1) return true;else return false;
}95、习题10-3 递归实现指数函数本题要求实现一个计算n≥1的函数。函数接口定义double calc_pow( double x, int n );函数 calc_pow 应返回 x 的 n 次幂的值。建议用递归实现。题目保证结果在双精度范围内。裁判测试程序样例#include stdio.hdouble calc_pow( double x, int n );int main()
{double x;int n;scanf(%lf %d, x, n);printf(%.0f\n, calc_pow(x, n));return 0;
}/* 你的代码将被嵌在这里 */输入样例2 3输出样例8代码double calc_pow( double x, int n )
{if(n1) return x;else return x*calc_pow(x,n-1);
}96、习题10-4 递归求简单交错幂级数的部分和本题要求实现一个函数计算下列简单交错幂级数的部分和f(x,n)x−−−函数接口定义double fn( double x, int n );其中题目保证传入的n是正整数并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。裁判测试程序样例#include stdio.hdouble fn( double x, int n );int main()
{double x;int n;scanf(%lf %d, x, n);printf(%.2f\n, fn(x,n));return 0;
}/* 你的代码将被嵌在这里 */输入样例0.5 12输出样例0.33代码double fn( double x, int n )
{if(n1) return x;else return pow(-1,n-1)*pow(x,n)fn(x,n-1);
}97、习题10-5 递归计算Ackermenn函数本题要求实现Ackermenn函数的计算其函数定义如下函数接口定义int Ack( int m, int n );其中 m 和 n 是用户传入的非负整数。函数 Ack 返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。裁判测试程序样例#include stdio.hint Ack( int m, int n );int main()
{int m, n;scanf(%d %d, m, n);printf(%d\n, Ack(m, n));return 0;
}/* 你的代码将被嵌在这里 */输入样例2 3输出样例9代码int Ack( int m, int n )
{if(m0) return n1;else{if(n0m0) return Ack(m-1,1);if(n0m0) return Ack(m-1,Ack(m,n-1));}
}98、习题10-6 递归求Fabonacci数列本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下f(n)f(n−2)f(n−1) (n≥2)其中f(0)0f(1)1。函数接口定义int f( int n );函数 f 应返回第 n 个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。裁判测试程序样例#include stdio.hint f( int n );int main()
{int n;scanf(%d, n);printf(%d\n, f(n));return 0;
}/* 你的代码将被嵌在这里 */输入样例6输出样例8代码int f( int n )
{if(n0||n1) return n;//else if(n1) return 1;else{return f(n-2)f(n-1);}
}99、习题10-7 十进制转换二进制本题要求实现一个函数将正整数n转换为二进制后输出。函数接口定义void dectobin( int n );函数 dectobin 应在一行中打印出二进制的 n 。建议用递归实现。裁判测试程序样例#include stdio.hvoid dectobin( int n );int main()
{int n;scanf(%d, n);dectobin(n);return 0;
}/* 你的代码将被嵌在这里 */输入样例10输出样例1010代码void dectobin( int n )
{if(n2) printf(%d,n%2);else{dectobin(n/2);printf(%d,n%2);}
}100、习题10-8 递归实现顺序输出整数本题要求实现一个函数对一个整数进行按位顺序输出。函数接口定义void printdigits( int n );函数 printdigits 应将 n 的每一位数字从高位到低位顺序打印出来每位数字占一行。裁判测试程序样例#include stdio.hvoid printdigits( int n );int main()
{int n;scanf(%d, n);printdigits(n);return 0;
}/* 你的代码将被嵌在这里 */输入样例12345输出样例12345代码void printdigits( int n )
{if(n10) printf(%d\n,n%10);else{ printdigits(n/10);printf(%d\n,n%10);}
}