1. c语言编程用什么笔记本电脑,内存硬盘大的cpu处理快点的笔记本
看你用什么软件,如果是用 TC 或 Free C 或 VC6 等,十年前的主流配置就行。如果 VS2013、2015,近 3 年现在的主流配置即可。
2. 我发现我的CPU一运行C语言程序,它的使用率就为100%,我发现我的内存小了,这个会影响CUP的使用率吗
TC等都是16位的编程工具,编译出来的程序都是16位的,而在windows下运行16位的程序都是这样的(使用率100%)
但如像不会影响windows的运行速度
3. 用c语言编辑很大很大很大型的程序是不是很考验CPU的性能如果CPU性能跟不上的话是不是就会很卡很
你确定是“编辑”???不是“编译”???
编辑是肯定没问题。
编译要看你用什么编译环境,如果是集成开发环境(IDE),那么很吃CPU和内存,程序小可能也会卡更别说很大的程序了。
4. C语言如何利用CPU指令
C可以直接调用汇编语言:例如
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
5. 如何获取电脑CPU,内存,硬盘的信息。用C语言编写的。
用win32 api,QueryValue查询注册表,可以获取cpu信息,也可以用NtQuerySystemInformation,比较齐全。
别的东西可以查询相关api吧
6. c语言 用最少的资源(内存 cpu)将一个元素插入一维数组指定的位置中去
LS程序思路大体正确,但是实现有误。
C的标准库函数memcpy需要被复制的存储器源和目标不能有重叠,否则后果不确定。
对于LZ这种基本上总是有元素占用空间重叠的情况,应该用memmove代替mem。
具体实例(假设数组类型是int)可以参考LS,关键行
memcpy(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos);
改为
memmove(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos));即可(LS还漏了个括号= =)。
这行代码把&array[pos]处开始到数组结尾的所有元素向后移动一个位置,以便在&array[pos]起始的地址空间空出sizeof(int)的空间,供要插入的元素占用。
然后
array[pos]=value;即可在移动空出来的位置插入新元素value。
如果不需要运行期安全性,可以定义#define NDEBUG,这样按LS的实例生成的代码中assert宏会被留空,不会进行检查而提高效率。
这是一般情况下最高效的解决方案。内嵌汇编优化可能可以有更高效率的实现,但这是平台相关的,且不是纯粹的C语言表达。
====
[原创回答团]
7. 在C语言蓝桥杯中的:资源约定: 峰值内存消耗 < 64M CPU消耗 < 1000ms是什么意思
这个是由服务器的评测系统来运行你提交的源代码来进行判定的,你要做的就是保证算法的空间和时间效率足够高,也就是在问题规模较大时,避免N次方或者指数增长。
8. C语言怎么取CPU的各项信息
intel IA32架构下CPU提供了获取CPU信息的指令CPUID,用该指令能获取CPU信息,使用方法和说明如下。要注意的是,一下如有小于号的,都不是英文的小于号,要用都得该为英文的小于号。 1、什么是cpuid指令 CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西。 2、cpuid指令的使用 cpuid使用eax作为输入参数,eax,ebx,ecx,edx作为输出参数,举个例子: __asm { mov eax, 1 cpuid ... } 以上代码以1为输入参数,执行cpuid后,所有寄存器的值都被返回值填充。针对不同的输入参数eax的值,输出参数的意义都不相同。 为了更好的在C++中使用cpuid指令,可以使用类对指令进行封装,在类中定义一个专门的函数负责cpuid的执行,他需要一个输入参数。还需要定义四个成员变量存储cpuid执行以后返回来的值。由于这四个寄存器都是32位长的,可以使用unsinged long 类型变量存储。 typedef unsigned long DWORD class CPUID { public: ... private: void Executecpuid(DWORD eax); // 用来实现cpuid DWORD m_eax; // 存储返回的eax DWORD m_ebx; // 存储返回的ebx DWORD m_ecx; // 存储返回的ecx DWORD m_edx; // 存储返回的edx ... } void CPUID::Executecpuid(DWORD veax) { // 因为嵌入式的汇编代码不能识别 类成员变量 // 所以定义四个临时变量作为过渡 DWORD deax; DWORD debx; DWORD decx; DWORD dedx; __asm { mov eax, veax ;将输入参数移入eax cpuid ;执行cpuid mov deax, eax ;以下四行代码把寄存器中的变量存入临时变量 mov debx, ebx mov decx, ecx mov dedx, edx } m_eax = deax; // 把临时变量中的内容放入类成员变量 m_ebx = debx; m_ecx = decx; m_edx = dedx; } 这样就可以通过直接调用Executecupid()函数的方式来执行cpuid指令了,返回值存在类成员变量m_eax, m_ebx, m_ecx和m_edx中。 3、获得CPU的制造商信息(Vender ID String) 把eax = 0作为输入参数,可以得到CPU的制造商信息。 cpuid指令执行以后,会返回一个12字符的制造商信息,前四个字符的ASC码按低位到高位放在ebx,中间四个放在edx,最后四个字符放在ecx。比如说,对于intel的cpu,会返回一个“GenuineIntel”的字符串,返回值的存储格式为: 31 23 15 07 00 EBX| u (75)| n (6E)| e (65)| G (47) EDX| I (49)| e (65)| n (6E)| i (69) ECX| l (6C)| e (65)| t (74)| n (6E) 因此可以这样实现他: string CPUID::GetVID() { char cVID[13]; // 字符串,用来存储制造商信息 memset(cVID, 0, 13); // 把数组清0 Executecpuid(0); // 执行cpuid指令,使用输入参数 eax = 0 memcpy(cVID, &m_ebx, 4); // 复制前四个字符到数组 memcpy(cVID+4, &m_edx, 4); // 复制中间四个字符到数组 memcpy(cVID+8, &m_ecx, 4); // 复制最后四个字符到数组 return string(cVID); // 以string的形式返回 } 4、获得CPU商标信息(Brand String) 在我的电脑上点击右键,选择属性,可以在窗口的下面看到一条CPU的信息,这就是CPU的商标字符串。CPU的商标字符串也是通过cpuid得到的。由于商标的字符串很长(48个字符),所以不能在一次cpuid指令执行时全部得到,所以intel把它分成了3个操作,eax的输入参数分别是0x80000002,0x80000003,0x80000004,每次返回的16个字符,按照从低位到高位的顺序依次放在eax, ebx, ecx, edx。因此,可以用循环的方式,每次执行完以后保存结果,然后执行下一次cpuid。 string CPUID::GetBrand() { const DWORD BRANDID = 0x80000002; // 从0x80000002开始,到0x80000004结束 char cBrand[49]; // 用来存储商标字符串,48个字符 memset(cBrand, 0, 49); // 初始化为0 for (DWORD i = 0; i<3; i++) // 依次执行3个指令 { Executecpuid(BRANDID + i); memcpy(cBrand + i*16, &m_eax, 16); // 每次执行结束后,保存四个寄存器里的asc码到数组 } // 由于在内存中,m_eax, m_ebx, m_ecx, m_edx是连续排列 // 所以可以直接以内存的方式进行保存 return string(cBrand); // 以string的形式返回 } 5、检测CPU特(CPU feature) 现在的intel CPU,台式机的好点的都支持Hyper-Threading了,移动的要支持Speed Sted。这些都是CPU的特性。CPU的特性可以通过cpuid获得,参数是eax = 1,返回值放在edx和ecx,通过验证edx或者ecx的某一个bit,可以获得CPU的一个特性是否被支持。比如说,edx的bit 32代表是否支持MMX,edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed sted。下面就是获得CPU特性的例子: bool CPUID::IsHyperThreading() // 判断是否支持hyper-threading { Executecpuid(1); // 执行cpuid指令,使用输入参数 eax = 1 return m_edx & (1<<28); // 返回edx的bit 28 } bool CPUID::IsEST() // 判断是否支持speed step { Executecpuid(1); // 执行cpuid指令,使用输入参数 eax = 1 return m_ecx & (1<<7); // 返回ecx的bit 7 } bool CPUID::IsMMX() // 判断是否支持MMX { Executecpuid(1); // 执行cpuid指令,使用输入参数 eax = 1 return m_edx & (1<<23); // 返回edx的bit 23 } CPU的特性还有很多,这只是平时我们听到比较多的三个,更多的特性请参考intel的资料。
9. 汇编语言编辑cpu的,c语言等好像是编辑内存的,定义一个数组就开辟内
这两门语言的功能基本是一样的 不过汇编要比C语言不那么好理解
c语言也要操作CPU 汇编也要操作内存的
10. 请教下:C语言获取计算机系统CPU使用率,内存使用情况的思路或流程是怎样的!
查WINDOW提供的接口是什么,然后用C去调用获取当前数值,就好了,然后设置一个轮询,每间隔一段时间轮询一次就好了。