谭浩强C语言程序设计(1-3章代码学习)

article/2025/8/20 6:48:24

谭浩强C语言程序设计 参考书

C语言学习笔记记录,学习为主,新手小白入门

我所用的C语言在线编译器:lightly在线编译工具

可新建工程

谭浩强C语言程序设计书籍所包含的代码示例加注释说明如下:


/*笔记记录者:xy;学习教材 谭浩强C语言程序设计*/
/*时间:2022年11月15日14:40:36*/
/*使用本代码测试将 #if 0 ------> #if 1 即可*/
/*代码未必全部理解正确,欢迎萌新大佬对其修正*/
#include <stdio.h>	//输入输出头文件
/*--------------------(第一章 C语言教程)--------------------*/
#if 1
/*例1.1,p14*/
int main(void)
{printf("hello world!\n");return 0;
}
#endif#if 0
/*例1.2,p15*/
#include <math.h>
int main(void)
{double x,s;printf("请输入任意一个整数:");scanf("%lf",&x);s = sin(x);printf("%lf",s);return 0;
}
#endif#if 0
/*比较两个数的大小*/
//#include "math.h"
int max(int a,int b);//函数声明
int main(void)//主函数
{int x,y,z;//int max(int a,int b);/*可有可无,无影响*/printf("Input two number:\n");scanf("%d%d",&x,&y);z=max(x,y);//----------------调用比较函数max---------------printf("maxnum = %d\n",z);
}
int max(int a,int b)//自定义比较函数
{if(a>b)return a;elsereturn b;
}
#endif/*--------------------(第二章 程序的灵魂——算法)--------------------*/
#if 0
/*数据结构+算法=程序*/
/*
算法分类:1)数值运算算法:求解数值.2)非数值运算算法:事务管理领域.
*/
/*例2.1 求1*2*3*4*5,p32*/
#if 0
int main()
{int i,s = 1;for(i = 1;i <= 5;i++){s = s*i;}printf("s = %d\n",s);
}
#else
/*例2.1.1 求1*3*5*7*9*11*/
int main()
{int n,m;printf("输入相乘的个数m:");scanf("%d",&m);int i = 1,s = 1;for(n = 1;n <= m;n++){s = s*i;i = i+2;}printf("输出m(%d)个数相乘1*3*5*...*%d*%d的值:",m,i-2,i);printf("s = %d\n",s);
}
#endif
#endif#if 0
/*例2.2,输出50(或m)个学生中,分数在80分以上的,p33*/
int main()
{int m,i = 0;int n[50] = {0};//学号(输入的学号不能以0开头如:001,在十进制中以0开头不合法,0无法输出出来,第三章会有介绍)int g[50] = {0};//分数printf("一共需要录入成绩的人数有m:");scanf("%d",&m);for(i=1;i<=m;i++)//循环输入50个人的成绩{printf("请输入第%d个学生的学号和成绩\n",i);scanf("%d%d",&n[i-1],&g[i-1]);}printf("\n\n 成绩大于80的学生的学号和成绩为\n\n");for(i=1;i<=m;i++)//有几人则循环几次{if(g[i-1]>=80){printf("学号:%d   成绩:%d\n",n[i-1],g[i-1]);}}return 0;
}
#endif#if 0
/*例2.3,判断2000——2500年中的闰年,并输出,p33*/
/*在此基础上修改判断任意时间段中的闰年*/
#if 0
int main(void)
{int i;for(i=2000;i<=2500;i++){if(i%4==0&&i%100!=0){printf("%d是闰年\n",i);}else if(i%100==0&&i%400==0){printf("%d是闰年\n",i);}}return 0;
}
#else
int main(void)
{int i,m,n;printf("输入任意两段年限,判断是否为闰年:");scanf("%d%d",&m,&n);for(i=m;i<=n;i++){if(i%4==0&&i%100!=0){printf("%d是闰年\n",i);}else if(i%100==0&&i%400==0){printf("%d是闰年\n",i);}}return 0;
}
#endif
#endif#if 0
/*例2.4,求1-1/2+1/3-1/4+....+1/99-1/100,p34*/
int main(void)
{int i;double a = 1.0,s = 1.0;for(i=2;i<=100;i++){a = (-1) * a;s = s + a/i;}printf("输出1-1/2+1/3-1/4+....+1/99-1/100的值s = %f",s);return 0;
}
#endif#if 0
/*例2.5,对于一个大于或等于3的正整数,判断它是不是一个素数,p34*/
int main(void)
{int i;//要判断的数字int m;//用于辅助判断 int k;//k用作除数printf("输入一个大于或等于3的正整数i:");scanf("%d",&i);for(k=2;k<=i;k++){  //k用作除数,用于判断是否为素数 m=i%k;if(m==0) break;}if(k>=i){printf("%d是素数\n",i);}else{printf("%d不是素数\n",i);}return 0;
}
#endif/*--------------------(第三章 数据类型、运算符与表达式)--------------------*/
/************************************************************************
3.1数据类型分类:(1)基本数据类型:1)整型:1.基本型:int(2 byte(字节))2.短整型:short int或short(2 byte)3.长整型:long int或long(4 byte)4.无符号型:unsigned*无符号基本型:unsigned int*无符号短整型:unsigned short int*无符号长整型:unsigned long int**无符号型数据,所占空间不变,正数最大范围变为原来的2倍,但无法表示负数(p48)**2)字符型:char(1 byte)3)实型(浮点型)1.单精度型:float(4 byte)2.双精度型:double(8 byte)4)枚举类型(2)构造数据类型1)数组类型2)结构体类型3)共用体(联合)类型(3)指针类型(4)空类型
***************************************************************************/
#if 0
/*例3.1,符号常量的使用,p45*/
#define PRICE 30 //宏定义全局变量
int main(void)
{int num,total;num = 10;total = num*PRICE;printf("total = %d\n",total);return 0;
}
#endif#if 0
/*例3.2,整型变量的定义与使用,p49*/
int main(void)
{int a,b,c,d;	//a,b,c,d为整型变量unsigned u;		//u为无符号整型变量a = 12;b = -24;u = 10;//对各个变量赋值c = a + u;d = b + u;printf("a+u = %d,b+u = %d\n",c,d);return 0;
}
#endif#if 0
/*例3.3整型数据的溢出,p49*/
#if 0
int main(void)
{	/*在我的编译器中定义int被默认为了long int(4 byte),正常情况下应为基本类型int(2 byte)*/int a,b;a = 2147483647;//在此处为long int(4 byte) 数值范围-2147483648~2147483647,查看p62b = a + 1;printf("%d,%d\n",a,b);return 0;
}
#else
int main(void)
{short int a,b;a = 32767;//此处为short int (2 byte)数值范围-32768~32767,查看p62b = a + 1;printf("%d,%d\n",a,b);return 0;
}
#endif
#endif#if 0
/*例3.4,类型转换,p50*/
int main(void)
{long x,y;int a,b,c,d;x = 5,y = 6;a = 7,b = 8;c = x + a;d = y + b;printf("c=x+a= %d,d=y+b= %d\n",c,d);return 0;
}
#endif#if 0
/*eg3.5,c允许浮点型使用后缀,p51*/
int main(void)
{printf("%f\n",356.);printf("%f\n",356);printf("%f\n",356f);return 0;
}
#endif#if 0
/*eg3.6,实行数据的舍入误差,p51*/
int main(void)
{float a,b;a = 123456.789e5;b = a + 20;printf("%f\n",a);printf("%f\n",b);
}
#endif#if 0
/*eg3.7,实行数据的舍入误差,p52*/
int main(void)
{float a;//单精度有效位为7位,所以小数点后2位以后无效double b;//双精度有效位16位,但C规定小数后最多保留六位,其余部分四舍五入a=33333.33333;b=33333.33333333333333;printf("%f\n%f\n",a,b);return 0;
}
#endif#if 0
/*****************************************************************************
转义字符:1)\n 回车换行			2)\t 横向跳到下一制表位置3)\b 退格			    4)\r 回车5)\f 走纸换页			6)\\ 反斜线符"\"7)\' 单引号符			8)\" 双引号符9)\a 鸣铃				10)\add 1~3位八进制所代表的字符11)\xhh 1~2位十六进制所代表的字符
******************************************************************************/
/*eg3.8,转义字符的使用,p53*/
int main(void)
{int a,b,c;a = 5;b = 6;c = 7;printf("  ab  c\tde\rf\n");printf("hijk\tL\bM\n");return 0;
}
#endif#if 0
/*eg3.9,向字符变量赋以整数,p54*/
int main(void)
{char a,b;a = 120;b = 121;printf("%c,%c\n",a,b);//输出字符型数据printf("%d,%d\n",a,b);//输出整型数据return 0;
}
#endif#if 0
/*eg3.10,字母大小写转换,p54*/
int main(void)
{char a,b;a = 'a';b = 'b';a = a - 32;//字母大小写的ASSCII码相差32b = b - 32;printf("%c,%c\n%d,%d\n",a,b,a,b);//输出转换字符,和相应的ASCII码值return 0;
}
#endif#if 0
/*eg3.11,变量赋初值操作,p55*/
int main(void)
{int a = 3,b,c = 5;b = a + c;printf("a=%d,b=%d,c=%d\n",a,b,c);return 0;
}
#endif#if 0
/*
数据类型自动转换规则:char,short——>int——>unsigned——>long——>double将char转为int用atoi()进行转换(该函数包含在stdlib.h头文件中)
*/
/*eg3.12,数据类型转换,p56*/
#include <stdlib.h>		//目的调用atoi函数进行数据转换
int main(void)
{char PI[8] = "3.14159";int s,r = 5;s = r*r*atoi(PI);printf("s=%d\n",s);return 0;
}
#endif#if 0
/*eg3.13,强制类型转换,p57*/
int main(void)
{float f = 5.75;printf("(int)f=%d,f=%f\n",(int)f,f);//将float强制转换为intreturn 0;
}
#endif#if 0
/*eg3.14,基本的算术运算符,p58*/
int main(void)
{printf("\n\n%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);return 0;
}
#endif#if 0
/*eg3.15,%取余运算符的使用,p58*/
int main(void)
{	/*100除以3取余数*/printf("%d\n",100%3);//本例输出 100 除以 3 所得的余数 1。return 0;
}
#endif#if 0
/*eg3.16,自增自减运算符操作,p59*/
int main(void)
{int i = 8;printf("%d\n",++i);//9,++i先自加,后运算//printf("%d\n",i);//9printf("%d\n",--i);//8,--i先自减,后运算//printf("%d\n",i);//8printf("%d\n",i++);//8,i++先运算,后自加//printf("%d\n",i);//9printf("%d\n",i--);//9,i--先运算,后自减//printf("%d\n",i);//8printf("%d\n",-i++);//-8,//printf("%d\n",i);//9printf("%d\n",-i--);//-9//printf("%d\n",i);//8return 0;
}
#endif#if 0
/*eg3.17,自加运算分析,p60*/
/*可运行出结果,会有报错,解决报错需将p,q分行写即可*/
#if 1 
int main(void)
{	/*报错(Multiple unsequenced modifications to 'i'clang(-Wunsequenced))但可运行*/int i = 5,j = 5,p,q;p = (i++) + (i++) + (i++);//5+6+7 = 18q = (++j) + (++j) + (++j);//6+7+8 = 21printf("p=%d,q=%d,i=%d,j=%d\n",p,q,i,j);//18,21,7,8return 0;
}
#else
int main(void)
{	/*解决报错*/int i = 5,j = 5,p,q;p = i++;//5p = p + (i++);//5+6 = 11p = p + (i++);//11+7 =18q = ++j;//6q = q + (++j);//6+7 = 13q = q + (++j);//13+8 = 21printf("p=%d,q=%d,i=%d,j=%d\n",p,q,i,j);//18,21,7,8return 0;
}
#endif
#endif#if 0
/*eg3.19,逗号运算符的使用,p62*/
int main(void)
{int a = 2,b = 4,c = 6,x,y;y = (x=a+b),c=(b+c);printf("y=%d,x=%d,c=%d",y,x,c);//6,6,10return 0;
}
#endif


http://chatgpt.dhexx.cn/article/YZJluBNr.shtml

相关文章

谭浩强C语言第九章知识总结

第九章 shyu 结构体&#xff1a;用户自定义的数据类型 如&#xff1a;在描述一个学生的相关信息时&#xff0c;需要整型变量来记录学号&#xff0c;字符数组来记录名字&#xff0c;等等&#xff0c;物品们可以通过定义结构体改变变量的数据类型&#xff0c;把这些信息整成一…

谭浩强C语言第七章知识总结

第七章 定义函数 定义没有参数的函数&#xff0c; 类型名 函数名&#xff08;&#xff09; 类型名 函数名&#xff08;void&#xff09; { { 函数体 或 函数体 } …

C语言 谭浩强 题目 -第六章

文章目录 笔记字符数组字符数组输出字符串处理函数输入字符串的函数 gets&#xff08;&#xff09;字符串连接函数--strcat字符串赋值函数--strcpy字符串比较函数---strcmp测字符串长度的函数--strlen转换为大小写的函数 EG 1EG 2EG 3 排序 冒泡排序 不用函数EG 4EG 5EG 6EG 7E…

C语言 谭浩强 题目 -第八章

文章目录 笔记通过指针引用数组用数组名作函数参数以变量名和数组名作为函数参数的比较 例题【例8.2】【例8.6】【例8.3】【例 8.4】【例 8.5】【例 8.6】【例8.7】【例8.8】【例8.9】【例 8.10】选择法起泡法 【例 8.11】【例 8.12】【例 8.13】【例8.30】 用指向数组的指针作…

C语言 谭浩强 题目 -第七章

文章目录 笔记函数参数函数调用返回值函数的嵌套函数的递归数组作为函数参数多维数组名作函数参数局部变量和全局变量全局变量 变量的存储方式和生存期自动变量(auto变量)static静态局部变量寄存器变量(register变量) 全局变量在一个文件内扩展外部变量的作用域将外部变量的作用…

【C语言】谭浩强

1.分支选择结构 #include<stdio.h> int main(){ char grade; scanf(“%c”,&grade); printf(“Your score:”); switch(grade) { case’A’:printf(“85~100\n”);break; case’B’:printf(“70~84\n”);break; case’C’:printf(“60~69\n”);break; case’D’:prin…

C语言 谭浩强第五版 课后习题解答

第一章 1.什么是程序?什么是程序设计? 程序&#xff1a;就是一组能识别和执行的指令&#xff0c;每一条指令使计算机执行特定的操作 程序设计&#xff1a;是指从确定任务到得到结果、写出文档的全过程 2.为什么需要计算机语言?高级语言有哪些特点? 为什么需要计算机语言&am…

谭浩强c语言课后习题(更新中)

1.第三章 纯代公式题 #include<stdio.h>int main() {float p1.07; //第一年倍数for (int i 1; i < 10; i) //只用循环了9次&#xff0c;因为是从第一年开始{p p * 1.07;}printf("%f%%%",p*100); }第2题也是代进公式即可 其实也是代给出的公式&#xff0…

C语言学习笔记(C程序设计-谭浩强)

入门&#xff1a; 计算机程序&#xff1a; 一组计算机能够识别和执行的指令。计算机的每一个操作都是根据指令进行的&#xff0c;计算机的一切操作都是由程序控制的 计算机指令&#xff1a;指挥机器工作的指示和命令。 指令包含操作码和操作数&#xff0c;操作码决定要完成的…

清风数学建模笔记--熵权法

是一种可以客观赋权的方法&#xff08;我们可以从数据中查看权重&#xff09; 依据的原理&#xff1a;指标的变异程度越小&#xff0c;所反映的信息量也越少&#xff0c;其对应的权值也应该越低。 本文借鉴了数学建模清风老师的课件与视频&#xff0c;如果大家发现文章中有不正…

c语言计算文本信息熵,C语言求信息熵,条件熵,联合熵

C语言求信息熵,条件熵,联合熵 (3页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 11.90 积分 #include#include#define u 20int i,j,n,m;float H_X,H_Y,H_XY,H_XpY,Pypx[u][u],Px[u],H_YpX,Py[u],…

谭浩强C语言笔记

文章目录 谭浩强C语言笔记1.C语言基础知识1.常量和变量1.1入门程序1.2 常量1.2.1 整型常量1.2.2 实型&#xff08;浮点型&#xff09;常量1.2.3 字符常量1.2.4 字符串常量1.2.5 符号常量 1.3 变量1.4 常变量 2.标识符和关键字2.1 标识符2.2 关键字2.3 小习题 3. 基本数据类型3.…

天池比赛总结1

这次参加天池的一场比赛 先把数据读取了如下 接下来准备使用YOLO框出图片中的字符&#xff0c;然后进行识别

比赛总结+近期总结

比赛总结&#xff1a; 这次比赛没考好 20(没加高精度)0&#xff08;文件输出写错&#xff09;1000120 T1&#xff1a;这一题的方法是分解质因数高精度 T2&#xff1a;明显就是一道spfa的题嘛 T3&#xff1a;强大的四维DP&#xff08;我的神啊&#xff01;&#xff09; T4&#…

计算机课件比赛总结,课件制作比赛活动总结

【www.gz85.com - 投篮比赛活动工作总结】 课件制作比赛&#xff0c;是对计算机多媒体等辅助手段的一次检阅&#xff0c;也有力地促进了制作多媒体课件技艺的提高。下面是小编为您整理的“课件制作比赛活动总结”&#xff0c;仅供参考&#xff0c;希望您喜欢&#xff01;更多详…

2018年全国邀请赛(江苏) 比赛总结

先吐槽一下中矿大。。。周六在食堂吃的午饭&#xff0c;肉菜一个鱼一个辣土豆炒牛肉&#xff0c;对于对鱼过敏又感冒比较严重的我来说。。。&#xff08;然后再也没去食堂吃饭&#xff09; 南湖校区大是真大&#xff0c;风景也不错&#xff0c;就是门口离体育馆有点远。。。&a…

比赛总结

比赛总结 比赛总结-a5165.png 初赛终于结束了&#xff0c;头一次如此投入去打比赛&#xff0c;这一个多月以来真是痛并快乐着。最大的感悟是&#xff1a;构造线下验证集并没有什么用&#xff0c;做了一堆工作还不如一个leak。首先取得这个成绩算是给自己一个交代了&#xff0c;…

关于全国大学生软件测试大赛总结与反思

关于全国大学生软件测试大赛总结与反思 文章目录 一、软件测试大赛简介二、可能出现的错误三、个人总结与反思四、谈谈软件测试工程师1、测试的三个阶段2、就业优势3、就业要求4、参考薪资 一、软件测试大赛简介 由教育部软件工程专业教学指导委员会、全国高等院校计算机基础教…

【赛后总结】第十三届服务外包创新创业大赛总结——A14

目录 前言组队&#xff06;选题分工&项目推进提交材料&项目答辩区域赛初赛区域赛决赛全国总决赛 写在最后 前言 先摆两个参赛视频 初赛视频 决赛视频 比赛已经过去几个月了&#xff0c;也算是想起来这个比赛可以写一个总结了。在历时8个月左右的时间之后&#xff0c;我…

计算机大赛总结发言稿,学校技能比赛总结发言稿

学校技能比赛总结发言稿 总结就是把一个时间段取得的成绩、存在的问题及得到的经验和教训进行一次全面系统的总结的书面材料&#xff0c;写总结有利于我们学习和工作能力的提高&#xff0c;因此十分有必须要写一份总结哦。那么总结要注意有什么内容呢&#xff1f;以下是小编帮大…