
C语言程序设计(第3版)(何钦铭 颜晖 主编)
该专栏发布的内容为作者自学过程中所写出的本教材的课后习题的答案。该专栏旨在记录作者的学习过程,并希望能帮助更多的使用这本书进行学习的C语言初学者。
FANFANYC
就读于湖南大学数学学院,刚开始学计算机,还请大家多多指教。
展开
-
习题11-6 查找子串 (20 分)
题目链接:习题11-6 查找子串 (20 分)#include <stdio.h>#define MAXS 30char *search(char *s, char *t);void ReadString( char s[] ); /* 裁判提供,细节不表 */int main(){ char s[MAXS], t[MAXS], *pos; ReadString(s); ReadString(t); pos = search(s, t);原创 2021-10-08 00:17:06 · 221 阅读 · 0 评论 -
习题11-5 指定位置输出字符串 (20 分)
题目链接:习题11-5 指定位置输出字符串 (20 分)#include <stdio.h>#define MAXS 10char *match( char *s, char ch1, char ch2 );int main(){ char str[MAXS], ch_start, ch_end, *p; scanf("%s\n", str); scanf("%c %c", &ch_start, &ch_end); p = ma原创 2021-10-08 00:15:08 · 198 阅读 · 0 评论 -
习题11-4 字符串的连接 (15 分)
题目链接:习题11-4 字符串的连接 (15 分)#include <stdio.h>#include <string.h>#define MAXS 10char *str_cat( char *s, char *t );int main(){ char *p; char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'}; scanf("%s%s", str1, str2); p = st原创 2021-10-08 00:14:31 · 152 阅读 · 0 评论 -
习题11-3 计算最长的字符串长度 (15 分)
题目链接:习题11-3 计算最长的字符串长度 (15 分)#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXN 10#define MAXS 20int max_len( char *s[], int n );int main(){ int i, n; char *string[MAXN] = {NULL}; scanf("%d", &am原创 2021-10-08 00:12:54 · 176 阅读 · 0 评论 -
习题9-5 通讯录排序 (20 分)
题目链接:习题9-5 通讯录排序 (20 分)#include<stdio.h>struct ren{ char name[20]; int birthday; char s[25];}REN[10],t;int main(){ int n,i,j; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s %d",&REN[i].name,&REN[i].birthday); gets(REN[i].s);原创 2021-10-08 00:12:06 · 135 阅读 · 0 评论 -
习题9-4 查找书籍 (20 分)
题目链接:习题9-4 查找书籍 (20 分)#include<stdio.h>struct book{ char name[31]; double price;}BOOK[10];int main(){ int n,i,u,l; char c; scanf("%d",&n); u=l=0; for(i=0;i<n;i++){ scanf("%c",&c); gets(BOOK[i].name); scanf("%lf",&BOO原创 2021-10-08 00:11:27 · 99 阅读 · 0 评论 -
习题9-3 平面向量加法 (15 分)
题目链接:习题9-3 平面向量加法 (15 分)#include<stdio.h>#include<math.h>struct xiangliang{ double x1; double x2;};int main(){ struct xiangliang v1,v2,v; scanf("%lf %lf %lf %lf",&v1.x1,&v1.x2,&v2.x1,&v2.x2); v.x1=v1.x1+v2.x1; v.x2=原创 2021-10-08 00:09:42 · 159 阅读 · 0 评论 -
习题5-5 使用函数统计指定数字的个数 (15 分)
题目链接:习题5-5 使用函数统计指定数字的个数 (15 分)#include <stdio.h>int CountDigit( int number, int digit );int main(){ int number, digit; scanf("%d %d", &number, &digit); printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(nu原创 2021-10-08 00:08:27 · 82 阅读 · 0 评论 -
习题5-4 使用函数求素数和 (20 分)
题目链接:习题5-4 使用函数求素数和 (20 分)#include <stdio.h>#include <math.h>int prime( int p );int PrimeSum( int m, int n );int main(){ int m, n, p; scanf("%d %d", &m, &n); printf("Sum of ( "); for( p=m; p<=n; p++ ) {原创 2021-10-08 00:06:40 · 81 阅读 · 0 评论 -
习题5-3 使用函数计算两点间的距离 (10 分)
题目链接:习题5-3 使用函数计算两点间的距离 (10 分)#include <stdio.h>#include <math.h>double dist( double x1, double y1, double x2, double y2 );int main(){ double x1, y1, x2, y2; scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);原创 2021-10-08 00:05:49 · 154 阅读 · 0 评论 -
习题11-2 查找星期 (15 分)
题目链接:习题11-2 查找星期 (15 分)#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原创 2021-10-06 19:47:38 · 172 阅读 · 0 评论 -
习题11-1 输出月份英文名 (15 分)
题目链接:习题11-1 输出月份英文名 (15 分)#include <stdio.h>char *getmonth( int n );int main(){ int n; char *s; scanf("%d", &n); s = getmonth(n); if ( s==NULL ) printf("wrong input!\n"); else printf("%s\n", s); return 0;}/原创 2021-10-06 19:47:00 · 127 阅读 · 0 评论 -
习题10-8 递归实现顺序输出整数 (15 分)
题目链接:习题10-8 递归实现顺序输出整数 (15 分)#include <stdio.h>void printdigits( int n );int main(){ int n; scanf("%d", &n); printdigits(n); return 0;}/* 你的代码将被嵌在这里 */void printdigits(int n){ int i; if(n==0){ printf("0"); } if(原创 2021-10-06 19:45:14 · 83 阅读 · 0 评论 -
习题10-7 十进制转换二进制 (15 分)
题目链接:习题10-7 十进制转换二进制 (15 分)#include <stdio.h>void dectobin( int n );int main(){ int n; scanf("%d", &n); dectobin(n); return 0;}/* 你的代码将被嵌在这里 */void dectobin(int n){ if(n==0){ printf("0"); } else if(n==1){ print原创 2021-10-06 19:44:10 · 256 阅读 · 0 评论 -
习题10-6 递归求Fabonacci数列 (10 分)
题目链接:习题10-6 递归求Fabonacci数列 (10 分)#include <stdio.h>int f( int n );int main(){ int n; scanf("%d", &n); printf("%d\n", f(n)); return 0;}/* 你的代码将被嵌在这里 */int f(int n){ if(n==0){ return 0; }else if(n==1){ return 1;原创 2021-10-06 19:41:12 · 150 阅读 · 0 评论 -
习题10-5 递归计算Ackermenn函数 (15 分)
题目链接:习题10-5 递归计算Ackermenn函数 (15 分)#include <stdio.h>int Ack( int m, int n );int main(){ int m, n; scanf("%d %d", &m, &n); printf("%d\n", Ack(m, n)); return 0;}/* 你的代码将被嵌在这里 */int Ack(int m,int n){ if(m==0){ ret原创 2021-10-06 19:40:22 · 105 阅读 · 0 评论 -
习题10-4 递归求简单交错幂级数的部分和 (15 分)
题目链接:习题10-4 递归求简单交错幂级数的部分和 (15 分)#include <stdio.h>double fn( double x, int n );int main(){ double x; int n; scanf("%lf %d", &x, &n); printf("%.2f\n", fn(x,n)); return 0;}/* 你的代码将被嵌在这里 */double fn(double x,int原创 2021-10-06 19:39:36 · 99 阅读 · 0 评论 -
习题10-3 递归实现指数函数 (15 分)
题目链接:习题10-3 递归实现指数函数 (15 分)#include <stdio.h>double 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;}/* 你的代码将被嵌在这里 */double calc_pow原创 2021-10-06 19:22:44 · 98 阅读 · 0 评论 -
习题10-2 递归求阶乘和 (15 分)
题目链接:习题10-2 递归求阶乘和 (15 分)#include <stdio.h>double 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;}/*原创 2021-10-06 19:21:30 · 91 阅读 · 0 评论 -
习题10-1 判断满足条件的三位数 (15分)
题目链接:习题10-1 判断满足条件的三位数 (15分)#include <stdio.h>#include <math.h>int search( int n );int main(){ int number; scanf("%d",&number); printf("count=%d\n",search(number)); return 0;}/* 你的代码将被嵌在这里 */...原创 2021-10-06 19:19:22 · 80 阅读 · 0 评论 -
习题9-6 按等级统计学生成绩 (20分)
题目链接:习题9-6 按等级统计学生成绩 (20分)#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原创 2021-01-24 23:43:48 · 564 阅读 · 1 评论 -
习题9-2 计算两个复数之积 (15分)
题目链接:习题9-2 计算两个复数之积 (15分)#include <stdio.h>struct 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.ima原创 2020-07-16 08:57:35 · 325 阅读 · 0 评论 -
习题9-1 时间换算 (15分)
题目链接:习题9-1 时间换算 (15分)#include<stdio.h>int main(){ int h,m,s,n; scanf("%d:%d:%d",&h,&m,&s); scanf("%d",&n); if(s+n>=60){ m++; s=s+n-60; }else{ s+=n; } if(m==60){ m=0; h++; } if(h==24){ h=0; } printf("%02d:原创 2020-07-16 08:56:35 · 244 阅读 · 0 评论 -
习题8-10 输出学生成绩 (20分)
题目链接:习题8-10 输出学生成绩 (20分)#include<stdio.h>#include<stdlib.h>int main(){ double a,u,l,*p; int n,i; scanf("%d",&n); if((p=(double *)calloc(n,sizeof(double)))==NULL){ exit(1); } u=0; l=100; for(i=0;i<n;i++){ scanf("%lf",p+i)原创 2020-07-16 08:55:18 · 493 阅读 · 0 评论 -
习题8-9 分类统计各类字符个数 (15分)
题目链接:习题8-9 分类统计各类字符个数 (15分)#include <stdio.h>#define MAXS 15void StringCount( char *s );void ReadString( char *s ); /* 由裁判实现,略去不表 */int main(){ char s[MAXS]; //ReadString(s); gets(s); StringCount(s); return 0;}/* You原创 2020-07-16 08:54:09 · 573 阅读 · 0 评论 -
习题8-8 判断回文字符串 (20分)
题目链接:习题8-8 判断回文字符串 (20分)#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原创 2020-07-16 08:51:40 · 638 阅读 · 0 评论 -
习题8-7 字符串排序 (20分)
题目链接:习题8-7 字符串排序 (20分)#include<stdio.h>#include<string.h>int main(){ char a[5][80]={NULL},t[80]={NULL}; int i,j; for(i=0;i<5;i++){ scanf("%s",a[i]); } for(i=0;i<5;i++){ for(j=0;j<5-i;j++){ if(strcmp(a[j],a[j+1])>0){原创 2020-07-16 08:49:35 · 338 阅读 · 0 评论 -
习题8-4 报数 (20分)
题目链接:习题8-4 报数 (20分)#include <stdio.h>#define MAXN 20void CountOff( int n, int m, int out[] );int main(){ int out[MAXN], n, m; int i; scanf("%d %d", &n, &m); CountOff( n, m, out ); for ( i = 0; i < n; i++ )原创 2020-07-12 19:00:54 · 151 阅读 · 0 评论 -
习题8-6 删除字符 (20分)
题目链接:习题8-6 删除字符 (20分)#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); gets(str); //ReadString(str); del原创 2020-07-12 19:01:36 · 256 阅读 · 0 评论 -
习题8-5 使用函数实现字符串部分复制 (20分)
题目链接:习题8-5 使用函数实现字符串部分复制 (20分)#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); //ReadStrin原创 2020-07-12 19:01:25 · 711 阅读 · 0 评论 -
习题8-3 数组循环右移 (20分)
题目链接:习题8-3 数组循环右移 (20分)#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]); A原创 2020-07-09 11:26:14 · 507 阅读 · 2 评论 -
习题8-2 在数组中查找指定元素 (15分)
题目链接:习题8-2 在数组中查找指定元素 (15分)#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]);原创 2020-07-09 11:24:46 · 236 阅读 · 0 评论 -
习题8-1 拆分实数的整数与小数部分 (15分)
题目链接:习题8-1 拆分实数的整数与小数部分 (15分)#include <stdio.h>void splitfloat( float x, int *intpart, float *fracpart );int main(){ float x, fracpart; int intpart; scanf("%f", &x); splitfloat(x, &intpart, &fracpart); printf("原创 2020-07-09 11:24:00 · 287 阅读 · 0 评论 -
习题7-8 字符串转换成十进制整数 (15分)
题目链接:习题7-8 字符串转换成十进制整数 (15分)#include<stdio.h>int main(){ int i,k,f=0; char a[80],str[80]; long number; i=0; while((str[i]=getchar())!='#'){ i++; } str[i]='\0'; k=0; for(i=1;str[i]!='\0';i++){ if(k==0&&str[i]=='-'){ f=1;原创 2020-07-09 11:22:19 · 1328 阅读 · 0 评论 -
习题7-7 字符串替换 (15分)
题目链接:习题7-7 字符串替换 (15分)#include <stdio.h> //英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。int main() { //输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 char a[80]; int d,i,j,k; i=0; while((d=getchar())!='\n'){ a[i]=(char)d; i++; } a[i]='\0';原创 2020-07-06 10:37:11 · 419 阅读 · 0 评论 -
习题7-6 统计大写辅音字母 (15分)
题目链接:习题7-6 统计大写辅音字母 (15分)#include <stdio.h> //英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。int main() { //输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 char a[80]; int d,i,j,k; i=0; while((d=getchar())!='\n'){ a[i]=(char)d; i++; } a[i]='\0'原创 2020-07-06 10:29:53 · 165 阅读 · 0 评论 -
习题7-5 找鞍点 (20分)
题目链接:习题7-5 找鞍点 (20分)#include<stdio.h>int main(){ int a[10][10],n,min,i,j,k,f,x,y; scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&a[i][j]); } } for(i=0;i<n;i++){ min=a[i][0]; x=i; y=0; f=1; fo原创 2020-07-06 10:27:55 · 120 阅读 · 0 评论 -
习题7-4 求矩阵各行元素之和 (15分)
题目链接:习题7-4 求矩阵各行元素之和 (15分)#include<stdio.h>int main(){ int a[6][6],n,m,i,j,b[6]; scanf("%d %d",&m,&n); for(i=0;i<6;i++){ b[i]=0; } for(i=0;i<m;i++){ for(j=0;j<n;j++){ scanf("%d",&a[i][j]); b[i]+=a[i][j]; } }原创 2020-07-06 10:27:14 · 185 阅读 · 0 评论 -
习题6-8 统计一行文本的单词个数 (15分)
题目链接:习题6-8 统计一行文本的单词个数 (15分)#include<stdio.h>#include<string.h>int main(){ int n=0,i,j; char a[1000]; gets(a); i=strlen(a); for(j=0;j<i;j++){ if(a[j]!=' '&&a[j+1]==' '){ n++; }else if(a[j]!=' '&&a[j+1]=='\0')原创 2020-07-05 20:56:24 · 282 阅读 · 0 评论 -
习题7-3 判断上三角矩阵 (15分)
题目链接:习题7-3 判断上三角矩阵 (15分)#include<stdio.h>int main(){ int a[10][10],n,m,i,j,k,f=1; scanf("%d",&n); int b[100]={0}; for(k=0;k<n;k++){ scanf("%d",&m); for(i=0;i<m;i++){ for(j=0;j<m;j++){ scanf("%d",&a[i][j]); }原创 2020-07-05 20:57:48 · 308 阅读 · 0 评论