- 博客(22)
- 收藏
- 关注
原创 练习5-5,实现库函数strncpy,strncat,strncmp,它们最多对参数字符串中的前n个字符进行操作
C程序设计语言,练习5-5测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>void strncpy(char *s,char *t,int n);void strncat(char *s,char *t,int n);int strncmp(char *s,char *t,int n);int main(){ char s[100]; char *t = "hello world!"; int cmp; strncpy(s,t,5);
2020-05-21 17:40:10 299
原创 练习4-14,定义宏SWAP(t,x,y)以交换t类型的两个参数
C程序设计语言,练习4-14#include <stdio.h>#define swap(t,x,y) {t temp = x;x = y;y = temp;}int main(){ char x = 'a'; char y = 'b'; swap(char,x,y); printf("%c%c\n",x,y); return 0;}
2020-05-19 15:41:17 919
原创 练习 4-13,编写一个递归版本的 reverse(s)函数,以将字符串s倒置
C程序设计语言,练习4-13实现用倒置后的字符串替换原有的字符串。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>//定义两个外部变量分别用于取值与赋值//定义为static型使外部变量仅限此源文件中的函数可用static int sp1 = 0;static int sp2 = 0;void reverse(char *s);int main(){ char s[100]; printf("请输入待转换字符串:\n"); sca
2020-05-19 11:43:36 1256
原创 练习 4-12,运用 printd 函数的设计思想编写一个递归版本的 itoa 函数,即通过递归调用把整数转换为字符串
C程序设计语言,练习4-12测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>//定义一个外部变量用来标识数组位置//定义为static型使外部变量仅限此源文件中的函数可用static int sp = 0;void itoa(int n,char s[]);int main(){ int n; char s[100]; printf("请输入待转换整数:\n"); scanf_s("%d",&n,sizeof(int));
2020-05-19 11:18:21 677
原创 练习4-7,编写一个函数ungets(),将整个字符串压回到输入中
C程序设计语言,练习4-7测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <stdlib.h>#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(char s[],int p){ return (p > 0) ? s[--p] : getchar();}void ungetch(int c){ if(bufp >= BU
2020-05-19 10:47:41 440
原创 练习4-2,对atof函数进行扩充,使它可以处理形如123.456e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)
C程序设计语言,练习4-2测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <math.h>double atof(char *s);int main(){ char s[100]; printf("输入带转换字符串:\n"); scanf_s("%s",s,
2020-05-16 15:22:03 662 1
原创 练习3-6,修改 itoa 函数,使得该函数可以接收三个参数。其中,第三个参数为最小 字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在 所得结果的左边填充一定的空格。
C程序设计语言,练习3-6测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <string.h>void my_itoa(int n,char *s,int b);void reverse(char *s);int main(){ char s[100]; int n,b; printf("输入带转换数:\n"); scanf_s("%d",&n,sizeof(int)); printf("输入宽
2020-05-15 18:04:17 206
原创 练习3-5,编写函数itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成16进制整数保存在s中。
C程序设计语言,练习3-5测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <string.h>#include <stdlib.h>void itob(int n,char *s,int b);void reverse(char *s);int main(){ char s[100]; int n,b; printf("输入带转换数:\n"); scanf_s("%d",&n,siz
2020-05-15 17:38:51 728
原创 练习3-3,编写函数expand(s1, s2),将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz
C程序设计语言,练习3-3测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <string.h>#include <stdlib.h>void expand(char *s1,char*s2);int main(){ char *s1; char *s2; s1 = (char*)malloc(100*sizeof(char)); s2 = (char*)malloc(100*sizeof(ch
2020-05-15 16:56:21 1377
原创 练习3-2,编写一个函数escape(s,t),将字符串t复制到字符串s中,并在复制过程中将换行符、制表符等不可见字符转换为\n、\t等相应的可见的转义字符序列。要求使用switch语句。
C程序设计语言,练习3-2测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <string.h>#include <stdlib.h>void escape(char *s,char *t);int main(){ char *s; char *t; s = (char*)malloc(100*sizeof(char)); t = (char*)malloc(100*sizeof(char));
2020-05-15 12:34:12 1035
原创 练习2-9,在求对二的补码时,表达式x &= (x-1)可以删除x中最右边值为1的一个二进制位。请解释这样做的道理。用这一方法重写下面的bitcount函数,以加快其执行速度。
C程序设计语言,练习2-9逐个删除x最右边值为1的二进制位,直至x的值为0.测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>int bitcount(unsigned x);int main(){ unsigned a; int i; for(i = 0; i < 3; i++) { printf("输入一个十六进制数:"); scanf_s("%X",&a,sizeof(unsigned)); printf(
2020-05-14 21:57:24 312
原创 练习2-8,编写一个函数rightrot(x,n),该函数返回将x循环右移(即从最右端移除的位将从最左端移入)n(二进制)位后所得到的值。
C程序设计语言,练习2-8测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>unsigned rightrot(unsigned x,int n);int main(){ unsigned a; int n = 2;//循环右移n位 scanf_s("%X",&a,sizeof(unsigned)); printf("%#X\n",rightrot(a,n)); return 0;}unsigned rightrot(un
2020-05-14 21:40:50 788
原创 练习2-7 编写一个函数invert(x,p,n),该函数返回对x执行下列操作后的结果:将x从第p位开始的n个(二进制)位求反(即1变成0,0变成1),x的其余各位保持不变。
C程序设计语言,练习2-7把想要取反的位置1,其它位置0,然后进行异或运算即可。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>unsigned invert(unsigned x, int p, int n);int main(){ int i; unsigned a; for(i = 0; i < 3; i++) { printf("输入一个整数:"); scanf_s("%X",&a,sizeof(unsig
2020-05-14 16:47:29 989
原创 练习2-4,重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。
C程序设计语言,练习2-4测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>void squeeze(char s1[],char s2[]);int main(){ char s1[100],s2[100]; printf("输入字符串1:"); scanf_s("%s",s1,100); printf("输入字符串2:"); scanf_s("%s",s2,100); squeeze(s1,s2); printf("%s\n"
2020-05-13 22:08:47 1079
原创 练习2-3,编写函数htoi(s),把由十六进制数字组成的字符串转换为与之等价的整型值
C程序设计语言,练习2-3测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#include <math.h>//malloc()头文件#include <stdlib.h>int htoi(char *s);int main(){ char *s;//保存输入的十六进制数 int dec;//保存十进制数 int i; //给指针分配空间 s = (char*)malloc(10*sizeof(char))
2020-05-13 17:16:15 1309
原创 练习1-23,编写一个程序,删除C语言程序中所有的注释语句
C程序设计语言,练习1-23注意正确处理带引号的字符串与字符常量。只需在之前练习的基础上修改getline()函数,注意注释后面的字符要先从输入缓存区中读出来再舍弃。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#define MAXLEN 1000int getline(char s[],int lim);int copy(char from[],char to[],int len,int line_num);int main(){
2020-05-12 16:28:41 1254 1
原创 练习1-21,编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变。
C程序设计语言,练习1-21依然在之前我写的练习17~练习20的基础上修改,这里需将getline()函数改写为entab()函数,为使结果更为直观,空格统一用星号替代。思路:因为要保持字符之间的间隔不表,所以只有到达制表符终止位的空格串(星号串)才需要替换为’\t’测试结果与代码如下,有bug欢迎指正!结果中的空格均为单个制表符,实现了将空格串替换为最少数量的制表符和空格。代码:#include <stdio.h>#define MAXLEN 1000int entab(
2020-05-12 15:11:56 529 1
原创 练习1-20,编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。
C程序设计语言,练习1-20这里有一个知识点:制表符终止位为8的整数倍。依然在之前练习的基础上修改,将getline()函数改写为detab(),当有’\t’输入时进行字符替换。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#define MAXLEN 1000int detab(char s[],int lim);int copy(char from[],char to[],int len,int line_num);int main
2020-05-12 14:20:59 475
原创 练习1-19 编写函数 reverse(s),将字符串s中的字符顺序颠倒过来。
C程序设计语言,练习1-19改写copy()函数即可实现(每行从后向前复制到c_out中)。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#define MAXLEN 1000int getline(char s[],int lim);int reverse(char from[],char to[],int len,int line_num);int main(){ int len; int line_num = 0; char
2020-05-11 21:45:15 1448
原创 练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行
C程序设计语言,练习1-18相比练习1-17,见https://blog.csdn.net/daobiying123/article/details/106049051只需对main函数进行少量修改,即对每行输入都从后向前进行检测,直至检测到有效字符。测试结果与代码如下,有bug欢迎指正!代码:#include <stdio.h>#define MINLEN 10#define MAXLEN 1000int getline(char s[],int lim);int co
2020-05-11 11:52:47 588
原创 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行
(C语言)编写一个程序,打印长度大于80个字符的所有输入行为方便测试,长度设置为10,更改长度修改宏定义即可。在原例程的基础上copy()函数加入了返回值line_num,用来记录c_out数组的更新位置。下面给出结果和代码,有bug欢迎指正!代码:#include <stdio.h>#define MINLEN 10#define MAXLEN 1000int getline(char s[],int lim);int copy(char from[],char to[]
2020-05-11 10:47:20 911
原创 练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图(垂直)
打印输入中各个字符出现频度的直方图(垂直),输入任意字符话不多说,直接附上结果和代码。个人测试没问题,有bug欢迎大家指正!代码:#include <stdio.h>int main(){ int c,i,j,star; int get_c[20],sum[20],p_last = -1,flag_match = 0; char *p = "---------------------";//初始化 for(i = 0; i < 20; i++) { sum[i
2020-05-09 12:06:49 473 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人