c语言

C语言-进制转换

此生再无相见时 提交于 2020-03-01 14:42:22
//将一个正整数转换成其他基数的函数 #include <stdio.h> int convertedNumber [64]; long int numberToConvert; int base; int digit = 0; void getNumberAndBase (void) { printf ("请输入你需要转换的数字:\n"); scanf ("%li", &numberToConvert); printf ("你想转换成几进制? "); scanf ("%i", &base); if ( base < 2 || base > 16) { printf ("!!输入错误,必须是2--16之间的数字!!\n"); base = 10; } } void convertNumber (void) { do { convertedNumber[digit] = numberToConvert % base; ++digit; numberToConvert /= base; } while (numberToConvert != 0); } void displayConvertedNumber (void) { const char baseDigits [16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

C语言基础学习学习前的准备-2

只谈情不闲聊 提交于 2020-03-01 14:30:38
注释让程序更明了 注释帮助我们阅读代码,对代码的运行不会造成任何影响。C语言主要有两种注释方法,一种是使用//进行单行注释,注释内容放在//之后: //需要注释的内容 当你的注释内容不止一行时,可以使用/*和*/进行多行注释,注释内容放在/*和*/之间: /* 这是一段 需要注释 的内容 */ 当然,多行注释也可以用来进行单行注释: /*需要注释的内容*/ 之后的C语言的教程将会开始真正的学习哦~ 更多学习内容就在码芽网http://www.mayacoder.com/lesson/index 来源: oschina 链接: https://my.oschina.net/u/2814141/blog/729877

C语言的注释

社会主义新天地 提交于 2020-03-01 14:20:32
在C/C++语言中, 在对源文件做预处理的时候,有两条基本原则: 1、凡是以//开头的为单行注释 2、凡是以\结尾的代表此行尚未结束 于是预处理器在处理的时候会先按第二条规则,看每行的末尾的那个 字符 是不是”\”,是的话,就下一行接到本行。然后把所有 以//开头的注释 和 /* */的块注释 去掉。 但是存在一个问题,入下: 对于big5中的汉字而言,其第一个字节的编码范围是0xA1 - 0xFE,第二个字节是0x40 - 0xFE。而’\'的ASCII码是0x5c,这就意味着:凡是以big5编码的文件,如果gcc没有正确的认为它的 源文件 的编码是big5,那么就可能出现因为 单行注释 末尾是汉字,而把下行的代码吃掉的情况。这样是很危险的,但是gcc会给出一个警告:”warning: multi-line comment In file”。这样的问题在gbk中同样存在。 将下面的代码 // 你好\ int main(int argc, char* argv[]) { return 0; } 以gbk的方式保存 ,并采用gcc 3.4编译。 无论是solaris 8还是freebsd 6.2,无论shell的locale的设置是 zh_CN.GBK 还是 zh_CN.UTF-8 ,所得到的错误都是相同的。 $ gcc -c testgbk.cpp testgbk.cpp:5:

C语言程序的基本结构

久未见 提交于 2020-03-01 13:53:54
一、C语言基础知识的学习方法 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。 2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉。 3)不要记笔记,不要记关键字,不要记函数的参数,忘了就忘了,忘了是因为没有经过实战,所以,到了项目实战课程的时候,忘了内容很自然的会全部想起来。 4)不要用手机看视频,看着看着就想睡觉,学习的过程是边看边写,没有看出来的程序员。赵括,知道不?就是那个空读兵书不成器的家伙,只看书看视频不写程序,和赵括没什么不同。 5)程序员的指法很重要,翘着二郎腿,嘴里叨着烟,挥舞一指禅,一副吊儿郎当的样子,是成不了程序员的。 6)学习的过程中遇到的问题,如果三十分钟解决不了,不要纠缠,在群里向大家请教。但是,反对遇到问题不经思考就提问的方式。 7)开始学习C语言之前,必须先熟悉Linux环境,掌握Linux常用命令和vi的基本用法。 8)高手都是从菜鸟开始的,只要您按视频教程一步一个脚印的学习,一定能成为优秀的程序员。 二、C语言程序开发的流程 现阶段,我们编写的C程序比较简单,程序开发的流程如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzYMWbVU-1583040912134)

C语言指针用法详解(二) 指针的算术运算

…衆ロ難τιáo~ 提交于 2020-03-01 12:24:00
例题1: Question : char a[20]; int *ptr = (int * )a; ptr++ Practice : Reason : #include <bits/stdc++.h> using namespace std; int main() { char a[20]; int *ptr = (int * )a;/// 强制类型转换不会改变a的类型 /*** ** 吾日三醒指针:指针的类型,指针指向的类型,指针指向哪里 ** ptr 的类型是 int* , 指向的类型是 int , 指向整形变量 a ***/ cout<<" befor : " << ptr<<endl; ptr++; cout<< " sizeof (ptr) "<< sizeof(ptr)<<endl; /*** ** ptr 类型是指针,指针的自增,当然是增加自身的大小了 ** sizeof(ptr) 为4, ptr 增加4 ***/ cout<<" after : "<<ptr<<endl; } 例题2: Question : int arr[20] = {0}; int *ptr = arr; for (int i=0; i<20; i++) { (*ptr)++; ptr++; } Practice : Reason : #include <bits/stdc++.h> using

[c语言]左移和右移

僤鯓⒐⒋嵵緔 提交于 2020-03-01 11:41:40
左移和右移都是位运算的概念。我们知道计算机是基于二进制保存数据的,因此左移和右移的概念十分重要。 本文约定是32位的机器。 [左移] 丢弃最高位,0补最低位 左移是把一个数按照二进制每位向左移动若干位,在c语言中用运算符 << 表示。例如: int x = 1; x = x << 2; //把x的值左移2位 1对应的二进制数为000……0001(前面一共31个0),左移2位之后变成000……0100,在十进制下为4。所以看起来左移n位相当于乘以2的n次方。(有符号数不完全适用,因为左移有可能导致符号的变化,下面将给出解释) 需要注意的是,当左移结果超出数据类型所能表示的范围时,会出现溢出(产生数据丢失并造成结果错误)。我们知道,int是有符号的整型数,最高位是符号位,0表示正数,1表示负数。那么移位的时候就会出现溢出,例如: int x = 0x40000000; //16进制的40000000,为2进制的0100……0000 x = x << 1; 这时候,x左移1位之后变成0x80000000,也就是2进制的1000……0000,符号位被置为1,变成了int型变量所能表示的最小值(因为负数是用补码表示的,计算补码:取反后加1),这个值在十进制下为-2147483648,我们成为溢出。如果把这个x再继续左移1位,那么最高位被丢弃,最低位补0,x的值就变成了0

嵌入式C语言编程小知识总结

試著忘記壹切 提交于 2020-03-01 08:38:58
嵌入式C语言编程小知识总结 1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。 2. 在LPC2200系列中: 可以通过过下面的程序延迟10毫秒: for(i=0;i<200;i++) { for(j=0;j<200;j++); } 3. 通过下面语句将一个16位的变量放在两个8位的变量中。 //IP数据报总长度高字节 IpHeadUint8[10]=(IpHead.e_ip.Crc&0xff00)>>8; //IP数据报总长度低字节 IpHeadUint8[11]=IpHead.e_ip.Crc&0x00ff; 4. 在对全部数组元素赋初值时,可以不指定数组长度。 eg;inta[]={1,2,3,4,5}; 但如果当输出第a[5]以上的元素时,系统回输出随机数值,所以使用此方法时,不能使用超过初始值元素以上的元素。 5. 由于ADS先天性的对printf不支持;因此不便于我们调试,可以利用串口输出来代替printf来调试。 6. 用或运算,可使某位置为1,其它位不变 eg: PINSEL0 |= 0x00000005; //设置串口引脚 使第0位和第二位置一,其他位不变。 7

为什么要选择学Python

有些话、适合烂在心里 提交于 2020-03-01 08:31:59
说起来也挺有趣的,刚开始我对于Python这一名词,并不怎么感冒。刚上大学的时候,第一次接触编程的语言是C语言,那时候我还不知道C语言和C++不一样,还傻乎乎的以为两者是一样的语言只是叫法不同。到了大一下学期的时候,因为课程的原因,老师教了一点点内容,这时候我才慢慢接触Python。 那时候的我并不知道Python的好处,因为那时候的我是处于比较懒散的,很迷茫的在过大学生活,没有现在的那种热情,所以就没好好学。到了差不多暑假的时候,看了很多公众号,很多都在讲关于Python语言,那时候就勾起我的好奇,很想去了解这门语言,感觉有利无害,所以就买了体验课,去学学看。慢慢的,那种热情就来了,正是因为感兴趣,所以想去学,努力学好一门语言。 Python的应用领域挺广泛的,例如Web开发(服务器端的),网络爬虫,数据分析,数学,机器学习,软件开发等等,相信那些有一点基础的小伙伴们都有去了解过。 对于我的话,我是对网络爬虫更感兴趣一点,其能够从网络自动化上自动批量地爬取和整理自己需要的信息用于商业分析,调研学习、娱乐生活等、、、(可以说爬取一些网站是我的兴趣哈哈哈) 在我开始想要深入了解Python的时候,就遇到了挺多问题,比如越深入了解,会发现遇到新名词新的英文名词会越多,然后就逼自己再深入去学,在这中间会发现很艰难,因为想要去总结起来自己所遇到的问题,然后再解决,是一个难上加难的过程

java通过JNI调用C语言写的函数,能提高运行效率吗?

我只是一个虾纸丫 提交于 2020-03-01 05:06:03
C语言比Java快早就是公认的事实了。 而Java可以通过JNI调用C语言写的库很多人也都知道。 但通过JNI调用C语言写的函数能提高效率吗?一直以来我都认为 是的 。昨晚心血来潮做了个测试,本意是想看看传说中强大的C语言在速度上到底有多强大,结果让我发现了 通过JNI调有C语言并不能提高效率 。不知道这样的结论有没有错,先说一下我测试的过程吧: 第一个测试:用java循环1亿次System.out.printf() 耗时:21 分 34.8 秒 第二个测试:用C语言循环1亿次printf() 耗时:6 分 12.6 秒 刚做完以上两个测试,就深刻体会到了C语言的效率。高兴了十几秒,我就想也许是java的 System.out.printf 和C语言的 printf 有较大区别造成的。于是做了第三个测试。 第三个测试:通过JNI调用C语言的printf(),同样循环1亿次输出 1. 2. 耗时:20 分 23.3 秒(这是第二天的测试的) 使用时间跟直接用java的 System.out.printf 差不多。本人不知道每次调用 native 方法会不会有额外的耗时(先给个不确定的定论:会)也就是说第三个测试之所以不会加速,是因为调用 native 方法时损耗了其它时间,还不能确定 通过JNI调用C语言能不能提高运行效率。又做了第四个测试 第四个测试

C语言获取SYSTEMTIME

╄→尐↘猪︶ㄣ 提交于 2020-03-01 04:55:10
C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 计算时间差使用double difftime( time_t timer1,time_t timer0 ) 4 使用DWORD GetTickCount() 精确到毫秒 5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 6 要获取高精度时间,可以使用 BOOLQueryPerformanceFrequency(LARGE_INTEGER lpFrequency) 获取系统的计数器的频率 BOOLQueryPerformanceCounter(LARGE_INTEGER lpPerformanceCount) 获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 7 Multimedia Timer Functions The following functions areused with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime // ************************