c语言考试编程题练习

2025-02-24

c语言考试编程题练习(共14篇)

1.c语言考试编程题练习 篇一

1.打印出所有的“水仙花数”,并按照一行5个的格式输出。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。#include void main(){

int a,b,c,s,i=0;

for(s=100;s<1000;s++)

{

c=s%10;

b=s/10%10;

a=s/100;

if(s==a*a*a+b*b*b+c*c*c)

{

printf(“%dt”,s);

++i;

if(i%5==0)

printf(“n”);

}

} } 2.求1+2!+3!+...+20!的和 #include void main(){ double fact=1.0,sum=0.0;int i,j;for(i=1;i<=20;i++){ for(j=1;j<=i;j++)fact*=j;sum+=fact;fact=1;} printf(“%.0fn”,sum);} 3.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#include #include void main(){ long num;int a,b,c,d;printf(“Please input the number:”);scanf(“%d”,&num);if(num<=9999||num>=100000){ printf(“%The number error!n”);exit(0);} a=num/10000;b=num/1000%10;c=num/10%10;d=num%10;if(a==d&&b==c)printf(“nYes,the %ld palindrome!n”,num);else

is is printf(“nNo,the %ld is not palindrome!n”,num);} 4.求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并并按照一行5个的格式输出。

#include void main(){ int num,i=0;for(num=1;num<=1000;num++)

if(((num%7||num%11)==1)&&((num%7&&num%11)==0)){ printf(“%dt”,num);++i;if(i%5==0)printf(“n”);} } 5.编程列出200以内所有的素数,按照一行10个的格式输出,并求出所有素数的平均值,#include #include void main(){ int i,j,k=0,sum=0,avg=0;for(i=2;i<200;i++){ for(j=2;j<=sqrt(i);j++)if(i%j==0)break;if(j>sqrt(i)){ printf(“%dt”,i);++k;sum+=i;if(k%10==0)printf(“n”);} } avg=sum/k;printf(“nThe is %dn”,avg);}

average

6、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1+1/3+1/5...+1/n #include void main(){ void odd(int n);void even(int n);int n;printf(“Please input the number:”);scanf(“%d”,&n);if(n%2)odd(n);else even(n);} void odd(int n){ float sum=0.0;float j;int i;for(i=1;i<=n;i+=2){ j=1.0/i;sum+=j;} printf(“%fn”,sum);} void even(int n){ float sum=0.0;int i;float j;if(n==0)printf(“%fn”,sum);else { for(i=2;i<=n;i+=2){ j=1.0/i;sum+=j;} printf(“%fn”,sum);} }

7、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有 组合。

#include void main(){ int a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=1;c<=9;c++)

if((100*a+10*b+c+100*c+10*b+a)==1333)

printf(“a=%d,b=%d,c=%dn”,a,b,c);}

8、用户输入12个0-100之间的整数,统计出小于60,60到79,80到100三个范围的整数各有多少个? #include #include void main(){ int i,j,k,n,num;i=j=k=0;printf(“Please input the 12 numbers with 0~100:”);for(n=1;n<=12;n++){ scanf(“%d”,&num);if(!(num>=0&&num<=100))exit(0);if(num<60)++i;else if(num<80)++j;else ++k;} printf(“nThere

are

%d numbers less than 60,%d numbers between 60 and 79,%d numbers between 80 and 100.n”,i,j,k);}

9、求这样一个三位数并输出该数字,该三位数等于其每位数字的阶乘之和。

即: abc = a!+ b!+ c!#include void main(){ int a,b,c,num;int s(int);for(num=100;num<1000;num++){ a=num/100;b=num/10%10;c=num%10;if(num==s(a)+s(b)+s(c)){ printf(“The is %dn”,num);break;} } } s(int n){ int i,sum=1;for(i=1;i<=n;i++)sum*=i;

number return sum;}

10、猜数游戏:由用户随机输入一个1位正整数数让人来猜,只能猜5次,如果人猜对了,则在屏幕上显示“You are so clever”,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止或者5次都猜不对给出提示“Game Over”。#include #include void main(){ int num,i,n;printf(“Please input the number with 0~9 for guessing:”);scanf(“%d”,&num);system(“cls”);if(num<0||num>9)exit(0);for(i=1;i<=5;i++){ printf(“nPlease input the number you guess:”);scanf(“%d”,&n);if(num==n){ printf(“nYou are so clever!n”);break;} else if(n

have

%d

times left!n”,5-i);continue;} else { printf(“nThe number you input is large,go on please!You

have

%d

times left!n”,5-i);continue;} } if(i>5)Over!n“);}

11、设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。#include void main(){ int n,k,a,b,c,d;for(n=1000;n<=9999;n++){ a=n/1000;

printf(”Game b=n/100%10;c=n/10%10;d=n%10;k=1000*d+100*c+10*b+a;if(k==9*n)printf(“N=%dn”,n);} } 12、100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。试编写程序计算大、中、小马的数目。#include void main(){ int h1,h2,h3;for(h1=0;h1<=100;h1++)for(h2=0;h2<=100;h2++)for(h3=0;h3<=100;h3+=2){

if(h1+h2+h3==100&&3*h1+2*h2+1/2*h3==100)printf(“The horse has has

%d,middle

old horse horse

%d,young has %dn”,h1,h2,h3);} }

13、一位司机酒驾撞人逃跑。现场三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。(车号为4位数)#include #include void main(){ int n,a,b,c,d,i;for(n=1000;n<=9999;n++){ a=n/1000;b=n/100%10;c=n/10%10;d=n%10;i=sqrt(n);if(a==b&&c==d&&i*i==n)printf(“%dn”,n);} } 14、求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和并输出结果。#include void main(){ float i;float s=0;for(i=1;i<51;i++)s+=1.0/(i*(i+1));printf(“%f”,s);}

15、编程求出所有1000到3000之间能被7、11、17同时整除的整数,并求其平均值,并输出结果(结果保留两位小数)。#include void main(){ int i,k=0,sum=0;for(i=1000;i<=3000;i++)if(i%7==0&&i%11==0&&i%17==0){ sum+=i;++k;printf(“%dt”,i);}

printf(“n%d”,sum/k);}

16、编程找出满足下列条件的所有四位数的和并输出:该数第一、三位数字之和为10,第二、四位数字之积为12。

#include #include int main(void){ int i,j,x,y,z,m;for(i = 1000;i< 10000;i++){ x = i/1000;y =(i/100)%10;z =(i/10)%10;m = i%10;if((x + z)==10&&(y+ m)==12){ printf(“%dt”,i);} } printf(“n”);return 0;}

17、求并输出所有满足如下条件的三位正整数:它是某整数的平方,它的三位数码有两位是相同的。(如100是10的平方,它有两个0,225是15的平方,它有两个2)。#include #include void main(){ int n,i,a,b,c;for(n=100;n<=999;n++){ a=n/100;b=n/10%10;c=n%10;i=sqrt(n);

if((a==b||a==c||b==c)&&n==i*i)printf(“%dt”,n);} }

18、输出所有大于1010的4位偶数,且该类偶数的各位数字两两不相同。#include void main(){ int num,a,b,c,d;

for(num=1012;num<=9999;num+=2){ a=num/1000;b=num/100%10;c=num/10%10;d=num%10;if(a!=b&&b!=c&&c!=d)printf(“%dt”,num);} }

19、编制程序要求输入整数a和b,若a+b大于100,则输出a+b百位以上的数字,否则输出两数字之和。#include 2

222void main(){ int a,b,s;printf(“Please input a and b:”);scanf(“%d%d”,&a,&b);s=a*a+b*b;if(s>100)printf(“n%dn”,s/100);else printf(“n%dn”,a+b);} 20、编写一个程序实现如下功能:计算1~100之间所有包含4或者包含5的数字,并显示其累加之和 #include void main(){ int a,b,i,sum=0;for(i=1;i<=99;i++){ a=i/10;b=i%10;

if(a==4||a==5||b==4||b==5){ sum+=i;printf(“%dt”,i);} } printf(“n%dn”,sum);}

2.c语言考试编程题练习 篇二

关键词:C程序,编译,参数,数组

1、引言

《C语言程序设计》是工科类专业学生入学后要学习的第一门高级程序设计语言,它在软件开发中具有很强的实用性和灵活性。由于在开设此课程之前绝大部分学生都没有编程的经历,再加上C编译的程序对语法限制不太严格,程序设计的自由度大,所以对于初学者经常会出一些连自己都不知道错在哪里的错误。程序一旦出现错误就会中断执行而不能完成具体任务,这就会使得学生束手无策,不知该如何下手。因此本文总结C程序中常见错误的类型和产生原因,提高学生的编程效率和正确率。

2、C语言编程中的常见错误及分析

2.1 语法书写格式错误

这是初学者最容易犯也是最常见的错误。

例1:

此程序在编译的时出错,有两个错误提示。

错误一提示:Statement missing;in function main.

错误二提示:Undefined symbol‘A’in function main.

错误分析:

错误一出现在语句“int a=l”的后面少了一个“;”。在C语言中,“;”是语句间隔符。因为在C语言中语句书写比较自由,可以一个语句占多行,也可以一行写多个语句。而C语言的编译系统就是以“;”来判断当前语句是否结束。一旦分号漏写就会在编译的时候出错从而无法完成相应的操作。

错误二出现在语句“printf(“%d”,A);”上,编程者在书写的时候忽略了大小写字母的区别。在C语言的编译系统中将大写字母和小写字母认为是两个不同的字符。因此“a”和“A”是两个不同的变量名。所以会出现出错信息。一般,符号常量名用大写字母表示,变量名用小写字母表示,以增强可读性。

纠正:

例1中两个错误语句应改为:int a=1;printf(“%d”,a);

类似的书写格式错误还有变量未定义先使用、花括号的遗漏等等都是容易出现的错误,希望同学们在编程的时候尽量避免。

2.2 输入数据的方式与要求不符

例2:

程序段:scanf(“%5.2f”,a);

在此程序段中存在这两个关于输入函数scanf的错误。

错误分析:

错误一,因为在C语言中输入数据时不能规定精度,所以程序段中的“5.2f”是不合法的。不能企图用这样的scanf函数输入数据而企图规定变量a的精度。

错误二,scanf函数中的“格式控制”后面应当是变量地址,而不应该是变量名。应将程序段中的“a”改成“&a”。

纠正:

所以上程序段正确的书写方法应为:scanf(“%f”,&a);

关于输入数据还有一个经常犯的错误那就是,如果在“格式控制”字符串中出了格式说明以外还有其他字符,则在输入数据时在对应位置输入与这些字符相同的字符,如:

例3:

scanf(“%d,%d”,&a,&b);

输入时应用如下形式:

1,2↙

分析:在数字1后面的是逗号,它与scanf函数中的“格式控制”中的逗号对应。

2.3 语句循环由于未更新循环控制变量而造成循环无终止

例4:

此程序在编译运行的时候就无法终止。

错误分析:

在这个程序中因为没有更新循环控制变量i,而是这个循环得不到终止而造成了死循环。在C语言中循环的正常退出有5种方式,第一种就是当循环条件不满足的时候结束循环体。或者是利用C语言中的break、continue、exit、return语句来结束循环。但这四种方式又有所区别:break——完全推出循环;continue——退出本次循环,继续下次循环,exit——退出整个程序;return——在子函数中,退出函数体,在main函数中退出整个程序。

纠正:

在循环体内再加一个语句:i=i+1;

2.4 关于数组中的错误

2.4.1 定义数组时误用变量

例5:

此程序中数组定义有错误。

错误分析:

在C语言中数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量,不能包含变量,也就是说,C语言不允许对数组的大小做动态定义。

纠正:

定义数组的语句改为int b[10]或将m定义成一个常量即可。至于具体的数字大小根据自己程序的要求情况而定。

2.4.2 在定义数组的时候,将定义的“元素个数”误认为是数组的最大下标值

例6:

此程序中输出的元素有错误。

错误分析:C语言中规定,数组名后面的方括号内的数字表示的是数组的元素个数。而数组的下标值是由0开始的到n-1为止(其中n指数组元素的个数)。所以此程序中的数组元素a[5]是不存在的。

纠正:

要想输出数组a的最后一个元素,应书写为:printf (“%d”,a[41);

2.5 函数参数定义的位置有误

例7:

在此程序中形参变量a,b的定义错误。

错误分析:

在C语言中,形参应该定义在函数体的外面,而局部变量定义在函数体内。

纠正:

或改为:

2.6 复合语句漏掉了花括号

例8:

在例8和例9当中,两个程序的区别只有一点,在例8中if语句后面跟了一对花括号,使花括号内的三个语句构成了一个复合语句。而例9当中没有这对花括号,这就使得两个程序的运行结果完全不同。例8中整个复合语句都属于if条件语句,功能是当条件满足时实现了x,y两个变量的交换,最后输出结果是:10,20。而例9当中if语句里面只有一个语句:t=x;最后输出结果是:20,0。

2.7 引用指针变量时应注意的问题

例10:

此程序中最后输出的并不是10而是随机的一个数。

错误分析:

指针变量必须先赋值再使用,此程序中只是定义了一个指针变量p,但他们并未指向任何一个整形变量,所以程序在编译的时候指针变量p所指向的是一个随机的值。

纠正:

2.8 编译路径的设定

往往很多同学在编译程序时会遇到这样的错误提示“Unable to open input file‘COS.OBJ’”。对于这个错误很多同学会习惯性的在编写的程序中寻找而又不得获。此错误主要是因为安装时存放tc文件夹的路径和tc界面环境菜单中默认的路径不一致。

纠正:

按键盘上的“F10”键激活菜单,选择tc界面环境中“options”菜单。如果电脑上的turboc是安装在D盘根目录下的,那么就把“options”菜单中的“directiores”命令下的第一条命令的路径改为D:turbocinclude;第二条命令的路径改为D:turboc\ib;第四条命令的路径改为D:turboc,再运行程序就不会出现这个错误了。

3、总结

C语言自由的书写格式使得我们编程时产生的错误也多种多样。本文只是列举了一些常见的错误,我们碰到的肯定远不止这些。同学们在编程的时候可以通过系统的编译提示对程序中的一些语法错误进行修改。至于编译器不报错的隐蔽性错误,学生可以根据程序的基本算法进行分析调试。所谓熟能生巧,多做多练,自然解决起问题也会越来越熟练。相信C语言必会成为同学们得心应手的编程工具。

参考文献

[1]谭浩强.C程序设计[M](第三版).北京:清华大学出版社.2005.

[2]谭浩强,张基温,唐永炎.C程序设计教程[M].北京:高等教育出版社.1992

3.c语言考试编程题练习 篇三

【关键词】C语言;编程技巧;学习技巧;教学效果

前言:我国高校已经普遍开展C语言的学习,对培养知识经济时代下高素质、复合型人才起到了重要的推动作用。然而在实践过程中却发现,学生学习C语言的动力不足、掌握及运用能力较低,为C语言进一步发展蒙上了一层阴影。所以本文首先对C语言学习过程中的难点进行分析,随后探讨C语言编程技巧的应用内容,以为学生学习及课堂教学效果的提升提供帮助。

一、当前C语言学习难点

(一)函数的定义和应用

由于C语言是一门较为高级的计算机汇编语言,在学习过程中包含了大量的函数,而相应函数如何定义和使用成为当前学生学习的难点之所在。众所周知,C语言编程过程中往往会通过汇编语言来将函数功能在相应代码中实现[1]。然而,在实际运用及学习过程中经常会出现函数嵌套的事情发生,而产生该现象的原因则是在C语言编程过程中已經定义了一个函数,但是操作者并没有注意到此种情况,当使用不同定义的函数时,系统就会提示不能在函数体内定义函数。所以在C语言学习过程中关于函数的定于和使用是困扰学生的主要问题。

(二)编写程序的工整严谨性

运用C语言编写程序是当前知识经济时代下较为常用的程序编写方式,需要操作人员具有较强的逻辑思维能力以及编写水平,并且耐心要足够良好。编写程序主要是通过计算机检验来实现相应的功能,在编写过程中每一个细节问题都需要处理到位。一旦某个环节某个字母没有正确书写,那么将会导致编写的整段程序无法运行,降低了程序编写效率。而编程工整性和严谨性是考验每一个学生学习效果及能力的重要指标。但是对于当前大多数学生来说,编写程序仍然是一个难点问题,出错几率始终居高不下,导致学生在经过了很长时间学习后依然无法掌握正确的编写技巧,继而丧失了继续学习的兴趣和信心。所以C语言学习过程如何运用编程技巧来提高编写程序的工整严谨性成为当前亟待解决的问题。

二、C语言编程技巧在C语言学习中的应用

(一)指针技巧的掌握与运用

C语言编程技巧中指针是一个较为特殊的变量,在其中存储着大量的数值,可以被称作是内存地址之一。指针技巧可以通过分解来将各部分内容展现在学生面前,以促使学生明确指针的使用。当前C语言学习中指针由指针类型、指针指向类型、指针值、指针自身所占内存区所组成。指针类型是C语言学习及编程中最为常见的知识点,学生可以通过去除指针声明语句中所包含的指针名字来判断该指针类型,如:int*ptr、char*ptr,将指针名字ptr去掉后剩下的int*、char*即为指针类型。学生通过该技巧的使用可以在短时间内明确所有C语言指针的类型,为其应用提供了便利条件。指针指向类型相较于指针类型稍稍复杂一些,上例中去掉*后剩下的int、char等即为指针指向类型。所以指针技巧的掌握与运用主要在于学习者的耐心及细心程度,加强其主观重视程度后,学习C语言将会更加得心应手。

(二)C语言特有函数技巧的掌握于应用

C语言编程中函数的应用是实现特定功能的基础与前提,学生往往在函数的定义及使用过程中出现不同程度的问题,造成其学习效果不佳。因此,在C语言课堂教学中教师可以在函数定义所包含的名字、参数名称、类型以及函数返回值类型逐步分解并一一明确其各组成部分的功能,并且将独立的函数存储在编译系统数据库中,使用时输入#include指令即可将想要使用的头文件放入本文件中,使得C语言特有函数能够在短时间内被学生掌握及利用[2]。随着计算机技术快速发展,C语言特有函数的编写已经可以通过程序化步骤来实现,在方便了使用的同时,也降低了学生学习难度,使得C语言教学效果得到大幅提升。

(三)算法技巧的掌握与应用

算法是程序编写工作的重要组成部分,也是学习过程中花费时间较长的环节。为了能够提高学生学习效率,教师需要在课堂教学中将常用流程符号普及给学生,并且利用流程图来讲算法的应用逐一分解,向学生直观展示算法的应用。当前还可以利用自然语言来表示算法,同时与流程图讲解相结合,使得具备一定数学知识的学习者能够熟练掌握算法技巧,并运用在具体的程序编写工作中。C语言是建立在数学思想基础上的应用学科,数学思维在算法技巧掌握及应用中起到了重要的辅助所用。所以,在通过系统展示及分步讲解基础上拓展数学思维去寻找C语言程序编写规律,可以为其血气起到事半功倍的效果。

(四)位运算技巧的熟练掌握与应用

C语言之所以独立于其他计算机语言,就在于位运算使用。位运算是一种以二进制为对象、进行各种程序、数据、结果运算的一种基本算法。特别是在计算机文件中其应用更为频繁,掌握了位运算技巧,就相当于掌握了打开宝藏大门的钥匙。比如:数独时需要使用大量Hash表来统计九宫格里已经存在那些数据,如果在一个九宫格之中已经存在数字2和5,那么采用位运算后该九宫格可以使用数字18来表示;如果某一行或某一个九宫格为运算状态为511,则代表了该九宫格空间已满。要想改变其状态,只需要对其进行位操作,而省去了将数据重新转换成为二进制修改之后在转回来的步骤,使得整个C语言学习效率得到大幅提升[3]。

结论:综上所述,本文通过对当前C语言学习难点的分析得出了困扰学生的主要问题在于函数的定义及使用和编写程序的工整严谨性。并以此为依据提出了C语言编程技巧中指针、特有函数、算法、位运算等技巧熟练掌握是提高C语言学习效率的关键。希望通过本文的分析能够为我国高校改进C语言教学提供帮助,以促使C语言知识正迁移。

参考文献:

[1]段煅.C语言编程技巧在C语言学习中的应用[J].电脑编程技巧与维护,2010,12(20):150-151.

[2]余勍,王捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,2013,25(07):108.

4.C语言面向对象编程学习笔记 篇四

1、在底层驱动函数前加static标识符的作用:

a:加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见 b:当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过该函数名来调用该函数,这也是对1的解析与说明

2、底层驱动的封装模板

通常将存储类,显示类,AD-DA类的外设驱动函数封装为以下几个函数: Void Open(void);

此函数用于开启外设,通常函数体中包涵IO和外设的初始化 Void Close(void)此函数用于关闭外设,特别是一些在休眠下功耗很大的外设,可用mos管控制其Vcc的通断,以此达到降低系统功耗的目的

Void Read(unsigned int address,unsigned char *data[],unsigned int count)

此函数用于读取数据,参数分别为:address,地址,*data[],存放数据的数组,count,要读取的字节数

Void Write(unsigned int address,unsigned char *data[],unsigned int count)此函数用于写数据,参数功能与读函数中相似。

Void control(unsigned char cmd,unsigned char data)此函数用于控制外设的工作状态,如休眠,低功耗等等

3、命名规则

A、宏定义全部用大写

如:#define OLED_CS PBout(12)B、驱动函数名称大小写,并且动词放置在末尾如

static long _OLED_Close(void)C、结构体的名称,结构体名大写,变量名小写,“驱动”的首字母大写

如:struct OLED_DEVICE oledDevice;

4、关于外设的数据手册

5.C语言C++程序员编程必备 篇五

今天我们整理了一些令人印象深刻的IDE(集成开发环境)和编译器推荐给 C 和 C++ 程序员。集成开发环境,主要用于提供软件应用的各种组件而开发的,其中最流行的功能是它们都有吸引力的用户界面。1)Best IDE for C/C++ – kDevelop KDevelop 是基于 KDevPlatform 的可使用开源插件扩展的 IDE。KDevPlatform 是一种可以用来作为 IDE 的基础库的开源集。

2)Best IDE for C/C++-Anjuta Anjuta Devstudio 具有先进的编程工具,包括项目管理,应用程序向导,交互式调试器,源代码编辑器,版本控制,GUI设计器,分析器和许多工具,另一个伟大的开发工作室。此工具提供的 C/C++ 程序员有很大强大的用户界面开发接口。

3)Best IDE for C/C++Eclipse CDT Eclipse CD 是最强大和最流行的IDE之一,提供了更高效的功能,如:项目的创建和管理,构建支持不同的工具链,标准make编译,源代码导航,各种来源的知识工具,代码编辑器,语法高亮,折叠和超链接导航,源代码重构和代码生成,可视化调试工具,包括内存,寄存器等等。

7)Best IDE for C/C++ – Compilr Compilr 是在线集成开发工具,让您与令人印象深刻的功能和简单的用户界面编写代码。该工具支持的编程语言中广泛的C,C + + JAVA,HTML等等。

8)Best IDE for C/C++Netbeans C++ Netbeans 的工具包括许多适合 C 和 C++ 项目类型模板,可以 使用动态库和静态创建 C/C++ 应用程序库。它拥有迷人的功能:代码协助,编译器配置,单元测试,源检查,远程开发和文件导航等等。

10)Best IDE/Compiler for C/C++Ultimate++ Ultimate++是对于 C++ 程序员来说是很好框架。这个 IDE 引入了模块化概念,可以结合 GCC,MinGW 和 Visual C++。

12)Best Compiler for C/C++-Digital Mars DigitalMars 是一款高性能的 C/C++ 编译器。包括的功能,如速度最快的编译/链接时,强

HTML文档,反汇编,图书管理员,资源编译器,make等,命令行和GUI版本,教程,代码示例,在线更新,标准模板库等等。

13)Best IDE for C-C-Free

14)Best Compiler for C/C++ – MinGW MinGW 编译器提供访问微软的C运行库和一些特定语言运行库的功能。

15)Best Compiler for C – Tiny C Compiler iny C Compiler 是最好的编译器之一,让开发人员可以在任何地方编译代码,可以使用任何 C 动态库,编译并直接执行C++源程序,也包含完整的 C 预处理器和 GNU 汇编器。

6.用c语言实现单纯形法的编程 篇六

用c语言实现单纯形法的编程

#include “stdio.h” #include “math.h” #include int M,N;float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100];int Fn[100];int K,L,ths;float zy;int shuru();void findmm();void chang();main(){ float max_Z,sum=0,s=0;int i,j,r=0;if(!shuru()){ printf(“ERROR!!n”);return 0;} while(r0){findmm();if(ths==M){goto loop;} else chang();} else r++;} } loop: if(ths==M){printf(“n此线性规划没有有限最优解!!n”);printf(“n此线性规划最终迭代结果为:”);printf(“n Cj ”);for(j=0;jDn[K])max=i;K=max;for(i=0;i0)&&(th[i]Dn[K])K=i;for(i=0;i

7.c语言考试编程题练习 篇七

C语言是一种最基础也是计算机专业学生必修的一门计算机程序设计语言, 它既具有高级语言的特点, 又具有汇编语言的特点。1978年后, C语言已经先后被移植到大, 中, 小以及微型计算机上。它的应用范围比较广泛, 具备非常强的数据处理能力, 不仅仅是在软件开发商, 而且各类科研都需要用到C语言, 适用于编写系统软件, 三维, 二维, 图形和动画, 具体应用比如单片机以及嵌入式系统开发。汇编语言是面向机器的一门程序设计语言, 在汇编语言中, 用助记符代替机器指令的操作码, 用地址符号或标号代替指令或者操作数的地址, 如果就增强了程序的可读性和编写难度, 像这样的符号化的程序设计语言就是汇编语言, 因此亦称为符号语言。

2 汇编语言与 C 语言混合编程

C语言是一种高效且有力的语言 , 尽管他们能够产生极快而又极紧凑的目标代码, 然而他们还是不可能达到汇编语言所生成的高质量的目标码。在某些特殊应用场合中, 还需要借助于汇编语言实现一些特定的操作, 象对某种硬设备进行准确定时等, 此时用汇编语言实现就比用C语言比较方便且目标质量更高。相反, 在用汇编语言编程过程过程中, 有些过程或某些算法用汇编语言完成比较困难, 而用C语言书写可用C的现有函数, 则更为自然且更具商业价值。因此在虚拟开发中两种语言的混合使用是经常发生的。一般而言, 在高级语言中使用汇编语言有以下几个原因: 提高程序中某些关键部分的执行速度与效率; 完成高级语言难以实现或者没有的功能; 缩短程序中某些模块的目标代码以减少存储开销;使用给汇编语言的通用软件包, 利用别人已开发的较为成熟的汇编子程序。

3 需解决的问题

汇编语言与C语言进行混合编程时, 一个任务采用多个功能模块实现, 每个模块可以编写为一个子程序, 根据模块功能不同可以选用适合的编程语言, 汇编语言与C语言混合编程就是一种很好的选择, 为了实现混合编程需解决一下几个问题。

(1) 存储模式统一问题 , C语言共有6种不同的存储模式, 不同的存储模式定义了不同的数据段和代码段。而在汇编语言中使用简化段定义伪指令Model, 该指令为用户自动生成适合于用户所选的存储模式的段定义。因此混合编程时必须保持汇编语言和C语言的存储模式统一, 通常情况下尽量采用小模式进行混合编程, 如C语言中采用Small, 汇编语言中采用Model Small。

(2) 命名方式约定问题 , C源程序编译时会在变量名或函数名前面加下划线。为保证连接后的程序的一致性, 被C语言调用的汇编子程序中, 所有标识符都要加下划线, 因此汇编子程序中函数命名时要用extern伪命令予以说明, 定义的格式为extern int fun (int, int), 同时汇编语言须用public操作符定义标识符, 定义格式为: Model。

public _fun.

(3) 混合编程中参数传递问题 , 在汇编子语言程序之间通常采用寄存器作为参数传递的工具, C语言程序间的参数传递, 一般采用堆栈来传递, 即调用程序将参数依次压入堆栈中, 当被转调用程序后,再从堆栈中依次弹出参数作为操作数使用。为此, 必须了解各种语言的堆栈结构、生成方式和入栈方式等。而对于汇编语言和C语言混合编程, 对于参数个数可变的子程序, 当参数不超过4个时, 可以使用寄存器R0~R3来进行参数传递, 当参数超过4个时, 还可以使用数据栈来传递参数。在参数传递时, 将所有参数看做是存放在连续的内存单元中的字数据。然后, 依次将各名字数据传送到寄存器R0, R1, R2, R3; 如果参数多于4个, 将剩余的字数据传送到数据栈中, 入栈的顺序与参数顺序相反, 即最后一个字数据先入栈。此外混合编程中参数传递问题还涉及到返回值的返回以及汇编程序中各个寄存器中内容的保护等问题。

(4) 混合编程中的程序调试方法 , 步骤一 : 用汇编程序(MASM) 对汇编语言源程序进行汇编 , 生成二进制的汇编语言目标文件 (.OBJ文件); 步骤二: 在TURBO C集成环境下建立一个工程文件, 该文件包括生成的二进制汇编语言目标文件名 (.OBJ) 和需要编译连接的C语言编写源程序; 步骤三: 在TURBO C集成环境下, 按Ctrl+F9功能键, 生成可执行文件 (.EXE文件); 第四步: 在TURBO C集成环境下, 按Alt+F5功能键执行程序。

4 实现方法

汇编语言和C语言混合编程可以常用的方法: 一是在C语言程序设计的过程中直接嵌人汇编语言指令; 二是汇编语言程序和C语言程序都是分别编写的, 然后采用各自的编译方法编译成目标模块, 再进行目标模块的链接, 下面就这两种两种方法做以介绍。

4.1 C 程序中嵌入汇编指令

C语言程序能支持汇编语言ASM指令 , 因此可以利用这条指令直接将汇编指令嵌入到C语言程序中。这种方法要求编写汇编指令时两边加上双引号并用小括号括起来, 前面再加上ASM关键字, 其格式为: “ASM (“汇编语句”);”。需要注意的是, 汇编指令要与前一个双引号之间有空格。例如, 在汇编语言 中中断指 令INTM, 嵌入到C语言中为 “ASM(“INTM”);”。这种方式的优点是操作简单 , 但是存在很多的弊端, 汇编代码插入很有可能破坏原来的C语言环境, 从而导致无法预料的结果。因此可在程序开始的系统初始化部分少量使用, 而在C语言中嵌入实现一完整功能的大量汇编语言指令时, 不建议采用这种方式。

4.2 汇编语言程序与 C 语言程序的调用

(1) C语言中调用汇编函数

在使用C语言编写程序时候, 涉及到调用汇编 函数时 ,若汇编代码比较简洁, 则可使用C语言中直接内嵌汇编指令;若是完整的功能模块, 要将汇编语言程序以文件的形式加入到C语言的项目中。

例如: 汇编函数定义如下:

那么在C语言程序文件中调用汇编时, C中写出的汇编函数名是 _CSL_intc Ivp Set() ;

(2) 汇编语言程序中调用C函数

在汇编语言程序调用C函数时, 被调用的C函数在C语言环境中需要用extern进行定义, 在调用C函数之前程序需要按照逆向顺序将函数的参数压入当前运行任务所使用的任务堆栈中, 即函数的最后一个参数先入栈。然后执行函数调用指令去执行被调用的C语言函数。

例如: 汇编程序中调用C函数, 函数名fun_process(), 部分汇编程序如下:

5 结语

汇编语言与C语言的混合编程是介于高级语言和低级语言之间的一种中级语言, 同时具有了两种语言的优点, 是一种有效的程序设计方法, 这种方法可以发挥各自的优势, 在工业控制和科学计算中具有很强的实用性, 但在具体开发设计中, 还要综合各语言的特点, 权衡利弊, 开发设计出扩展性和移植性好的程序, 以便为其更广泛的应用打下坚实的基础。

摘要:C语言是应用广泛的面向过程的开发语言,但在一些特殊的情况下还需使用汇编语言,因此出现了C语言与汇编语言混合编程的问题。基于此从两者混合编程的原因和需要解决的问题入手,对两者混合编程的实现方法进行了详细介绍,给出了相应的编程实例。

8.c语言考试编程题练习 篇八

关键词:《孙子算经》;C语言;编程求解;学习兴趣

中图分类号:TP312

《孙子算经》是我国古代数学经典名著之一,是我国古人聪明智慧的结晶。书中包括被西方数学史上称为“中国的剩余定理”的著名数学题“物不知数”等题目。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。我们借用C语言编程可以趣味求解《孙子算经》中的这些题目,从而活跃课堂气氛,调动学生学习的积极性和主动性,使枯燥的计算机编程得变生动有趣。

1 物不知数

物不知数出自《孙子算经》,是该书卷下第26题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:‘二十三”。意思是:一个数被3除余2,被5除余3,被7除余2,求这个数。

C语言编程求解法:

如果我们利用C语言编程来求解这个问题,我们只需按逻辑思路,编写好程序,然后在装有C语言环境的计算机上运行一下,结果就出来了。

用C语言编程如下:

从结果列表中可以看出符合要求的数有无限个。其中最小的是23。

如果将程序中语句“while(m<=100)”中的“100”增大到“500”,再次运行程序可以得到符合条件的数:128、233、338、443。也就是随着m取值范围加大,给出的符合条件的数会更多。但其操用非常简单,真正起到事半功倍的作用。

2 鸡兔同笼

鸡兔同笼出自《孙子算经》,是该书卷下第31题,这道题后来传到日本就变成了“鹤龟算”。书中这样叙述了该题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”意思是:有若干只鸡、兔同在一个笼子里,如果从上面数,有35个头;如果从下面数,有94只脚。求出笼中各有几只鸡和兔?

下面我們用C语言编程求解如下:

如果我们在此程序运行过程中输入其它的头数和脚数,当输入的数值不正确,会出现提示“数据有错,不能作为鸡兔同笼问题”,当输入的数值是一组适合的数,就会马上给出新组合的兔子个数,鸡的只数。

《孙子算经》是我国古代较为普及的一本数学名著,其中许多的数学题目具有一定的代表性,并且一些趣味性的题目在后世广为流传。上面所述二个题目是《孙子算经》中的二个代表,将数学解法改用C语言编程求解,可以省去了大量的人工计算,并且运算结果更快更精确,同时也是将古人智慧和现代科技进行的融合,运用在教学上,会活跃课堂气氛,提高教学质量,还也可以让学生们在学习的过程中感受古人的聪明才智,激发学生的学习主动性、积极性和学习兴趣,使枯燥的C语言编程变得生动有趣。

参考文献:

[1]杨治明,雷亮.C语言程序设计教程[M].北京:人民邮电出版,2012(03).

[2]周二强.新编C语言程序设计教程[M].北京:清华大学出版社,2011(09).

[3]谢膺白.数据库基础与Visual FoxPro 9.0程序设计[M].西安:西安电子科技大学出版社,2008(07).

作者简介:刘顺清(1971-),男,河北唐山人,研究生,副教授,主要从事计算机软硬件教学和研究工作。

9.c语言考试编程题练习 篇九

一、数学表达式

1、编写程序,其功能是:计算并输出下列多项式的值: , 将结果存到外存root.txt中。

2、编写程序,其功能是:计算并输出下列多项式的值:

3、编写程序,其功能是:计算并输出下列多项式的值:,并输出结果。例如,若n=20,则S=6.506583。

4、编写程序,计算表达式: 直到。例如x=2.5,则函数值为:12.182494。

5、找出100~999之间的所有“水仙花数”(穷举法、统计)

6、从键盘输入10个数,然后找出其中的最大值和最小值。(找最大数、最小数)

7、任意输入n个数,按由小到大的顺序排列并显示输出。(排序算法--选择法排序)

8、求5的阶乘值(5!=?)

9、计算 t=1!+2!+„„+10!(即求阶乘之和)。

计算 t=1!+2!+„„+10!即求阶乘之和(双循环)。

10、多项式S=1+2+22+23+„„+232,请设计一个程序,求S的值。

二、矩阵的处理

编写程序,完成的功能是:

(1)实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。例如用户输入矩阵,其转置矩阵为,程序输出。

(2)求矩阵A对角线元素之和。

三、字符串的处理

1、编写一个程序,它的功能是:将ss字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。

2、程序的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符B的ASCII码值为偶数、„、字符2的ASCII码值为偶数、„、都应当删除,其它依此类推。最后t所指的数组中的内容应是:“ACEG135”。

3、编写程序,实现将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,原字符串为:def35adh3kjsdf7,执行结果为:defadhkjsdf35374、假定输入的字符串中只包含字母和*号。请编写程序,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

5、(对字符串排序处理)有5个英文单词,分别为:Word,Excel,Powerpoint,Type,Angle,要求设计出如下程序:

(1)在键盘上输入数N(本例输入5),把英文单词放入名为X大小为N的数组中

(2)显示出X数组中的英文单词

(3)对数组中的英文单词从小到大排序

(4)显示出排序后X数组中英文单词

三、数据的处理

1、程序的功能是:将两个两位数的正整数a.b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

例如,当a=45,b=12时,执行该程序后,c=1524。

2、请编写程序,它的功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

3、编写程序,求Fibonacci数列中大于t的最小的一个数。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)。例如:当t=1000时,函数值为:1597。

4、编写程序,实现根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。

5、编写程序,实现计算并输出3到n之间(含3和n)所有素数的平方根之和。例如,n=100,则输出s=148.874270,注意:要求n的值大于2但不大于100。

6、编写程序,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。迭代表达式为:xn+1=cos(xn)

(1)取x1初值为0.0;

(2)x0=x1,把x1的值赋给x0;

(3)x1=cos(x0),求出一个新的x1;

(4)若x0-xl的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

1.有3个数a,b,c,要求按大小顺序把它们打印出来。

2.求1+2+3+„„„+100。

3.判断一个数n 能否同时被3和5整除。

4.将100~200之间的素数打印出来

5.求两个数m和n的最大公约数。

6.求方程式ax2+bx+c=0的根。分别考虑:(1)有两个不等的实根:(2)有两个相等的实根。

8.有一个函数:

x(x<1)

y=2x-1(1≤x<10)

3x-11(x≥10)

写一个程序,输入x,输出y值。

9.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80-90分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

10.求Fibonacci数列40个数。这个数列有如下特点:第1,2两个数为1,1。

从第3个数开始该数是其前面两个数之和。即:F1=1(n=1)F2=1(n=2)这是一个有趣的古典数学问题:有一对兔子,从出生后第3 个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生

Fn =Fn-1+Fn-2(n≥3)一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?

11.求100~200间的全部素数。

12.求1!+ 2!+ 3!+ 4!+ „ +20!。

13.(1+2+„+100)+(12+22+„+502)+(1+1/2+„+1/10)。

14.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。

15.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,„,求出这个数列的前20项之和。

16.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想再吃时,就只剩下一个桃子了。求第一天共摘多少桃子?

17.用二分法求下面方程在(-10,10)之间的根。

2x3-4x2+3x-6=0

19.用起泡法对10个数排序(由大到小)。

20.将一个二维数组行和列元素互换,存到另一个二维数组中。

例如:a(2,3)=(1 2 34 5 6)

B(3,2)=(1 42 53 6)

21.有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

22.用筛法求100之内的素数。

23.用选择法对10个整数排序。

24.已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数

组中。

10.c语言考试编程题练习 篇十

#include“iostream.h” class point

//圆心坐标类 {public: void set(int a,int b);//初始化函数给坐标赋初值

void get(int &a,int &b);

//将坐标值带到类外 private: int x;int y;

//圆心坐标 };void point::set(int a,int b){x=a;y=b;} void point::get(int &a,int &b){a=x;b=y;} //****************************************************************** class circle:public point

//计算圆面积类 { public: circle(double c,int a,int b);

//c为圆半径,a b为圆心坐标

double value();

//计算圆面积,输出圆心坐标和圆面积,返回圆面积 private: double r;

//圆半径 };circle::circle(double c,int a,int b){r=c;set(a,b);} double circle::value(){double m;

m=3.14*r*r;int a,b;

get(a,b);cout<//计算圆柱体体积类 { public: cylinder(double d,double c,int a,int b);//d为圆柱体高,c为圆半径,a b为圆心坐标

double value();//计算圆柱体体积,输出圆心坐标和底圆面积以及圆柱体体积,返回圆柱体体积 private: double h;//圆柱体高 };cylinder::cylinder(double d,double c,int a,int b):h(d),circle(c,a,b){} double cylinder::value(){double v,m;m=circle::value();v=m*h;cout<

cin>>r;cout<<“圆柱体高:”;

cin>>h;cout<<“圆心坐标:”;

cin>>x>>y;circle AA(r,x,y);AA.value();cylinder BB(h,r,x,y);BB.value();} 2008年第二题

#include“iostream.h” #include“string.h” class emp

//已有的员工工资类 { public: void set(char *s,double i);//初始化函数s为员工名字,i为基本工资

virtual double earning();//计算员工实发工资(基本工资+基本工资*0.2)

void disp();

//输出员工名字及实发工资

virtual ~emp();

//释放对象 protected: char *name;

//员工名字

double bs;

//基本工资 };void emp::set(char *s,double i){

name=new char[strlen(s)+1];strcpy(name,s);bs=i;} double emp::earning(){return bs+bs*0.2;} void emp::disp(){cout<<“姓名:”<set(“王阳”,3500);m->disp();delete m;} 2007年第一题

#include“iostream.h” class time { private: int hour;int minute;int second;

//三个私有成员 public: time(){hour=0;minute=0;second=0;}//默认构造函数

time(int i,int j,int k){settime(i,j,k);} void settime(int i,int j,int k){

int temp1,temp2;

second=k%60;

temp1=k/60;

minute=(j+temp1)%60;

temp2=(j+temp1)/60;

hour=(i+temp2)%24;}

//对数据成员设定初值

void gettime(int *pi,int *pj,int *pk){*pi=hour;*pj=minute;*pk=second;} //将数据成员传递到类外 };void main(){ int h,m,s;cout<<“input:”<<“hour,minute,second”<

cin>>h>>m>>s;

cout<

time T(h,m,s);T.gettime(&h,&m,&s);

cout<<“hour:”<

#include“iostream.h” class S

//一般中等学校的学生类S,是基类 { protected: float m;

//数学成绩

float e;

//英语成绩

char *name;

//学生姓名 public: S(){m=0;e=0;name=';}

//默认构造函数

S(float i,float j,char *s){m=i;e=j;name=s;}

//三参数构造函数

float sum()

//成绩相加,并输出学生姓名和成绩之和

{float z;z=m+e;cout<

float r;

//机械设计课程成绩

public: uS1(){r=0;}

//默认构造函数

uS1(float i,float j,char *s,float k):S(i,j,s),r(k){}//四参数构造函数

float sum(){float z;z=m+e+r;cout<

// };//****************************************************** class uS2:virtual public S //高等学校管理专业学生类uS2,是直接派生类 { protected: float a;

//现代管理理论课程成绩 public:

uS2(){a=0;} uS2(float i,float j,char *s,float l):S(i,j,s),a(l){} float sum(){float z;z=m+e+a;cout<

//攻读以上双学位学生类gS,是间接派生类 { protected: float i;

//论文成绩 public:

gS(){i=0;} gS(float ii,float j,char *s,float k,float l,float p):S(ii,j,s),uS1(ii,j,s,k),uS2(ii,j,s,l){i=p;}//注意此处 float sum(){float z;z=m+e+r+a+i;cout<

#include“iostream.h” class time { private: int hour;int minute;int second;

//三个私有成员,类外不能调用 public: time(){hour=0;minute=0;second=0;} time(int l,int m,int n){setcoord(l,m,n);} void setcoord(int i,int j,int k){int temp1,temp2;

second=k%60;

temp1=k/60;

minute=(j+temp1)%60;

temp2=(j+temp1)/60;

hour=(i+temp2)%24;//此处保留余数

} void getcoord(int*p1,int*p2,int*p3){*p1=hour;*p2=minute;*p3=second;} };

void main(){

int h,m,s;time T(25,61,62);T.getcoord(&h,&m,&s);cout<<“hour:”<

#include“iostream.h” const double PI=3.14159;class circle { protected: double r;

//圆的半径 public: void set(double i);virtual double value();//计算圆的面积

void display();//输出value()的值 };void circle::set(double i){ r=i;} double circle::value(){return PI*r*r;} void circle::display(){cout<<“S=”<

circle *p=new globle(5);cout<

11.基于C语言的软件编程分析 篇十一

关键词:C语言,编程,结构化

1 C语言的编程特点

1.1 C语言的定位

很多人都普遍的认为C语言是在B语言的基础上发展过来的一种高级编程语言。然而从编程语言的层次结构方面来说, 我们应该认为C语言, 是在汇编语言的基础上发展而来的, 它比汇编这类编程语言要高级, 但是比一些可视化的编程语言又低级, 所以准确来说, C语言应该算是中级编程语言, 或者称为准高级程序设计语言。目前很多高级程序设计语言都是在C语言的基础上发展而来的, 或者至少借鉴了C语言程序设计的思想。80年代初, Bjarne Stroustrup在贝尔实验室对标准C进行了改进和完善, C++得以诞生, 使得面向对象的程序设计思想得以提出和落实;21世纪初, 人们将C语言和单片机相结合, 开发出来了应用于单片机编程的C51语言, 使得单片机的程序设计从反复的汇编语言设计中抽身出来, 大大的提高了程序的设计效率。

可见C语言在整个编程语言的发展过程中属于承上启下的作用, 同时其自身的应用领域又在不断的更新和发展。

1.2 C语言的编程特点

通过上述C语言的定位可知, 它既具备高级程序设计语言的结构性和层次性特点, 同时也兼具了低级程序设计语言的实用性。

(1) 用相应的C语句可以实现对微机操作中的字节、地址等进行直接访问。

(2) 基于函数的结构化特点, 使得复杂的软件系统可以由多个人, 以设计子函数的形式, 分别各自进行程序开发。之后进行函数的汇总, 最后由主函数, 按照既定的程序流完成对各个子函数的调用就行。

(3) 丰富的数据类型, 尤其是指针类型, 可以很方便的应用于复杂数据和大数据的访问和处理。

(4) 由于C语言基本上不向低级语言那样直接涉及到对硬件的操作, 所以C语言程序往往具有很好的通用性, 方便程序移植。

2 C语言的编程技巧

2.1 扎实基本工

在进行C语言程序设计之前, 首先要熟悉运算符、表达式以及各钟类型数据的定义和使用方法, 其次对顺序、分支和循环三大程序结构要有较好的把握, 并熟练使用while循环、for循环、switch语句等。如果要在程序的设计上有进一步的提高, 那就需要对“指针”能够进行熟练的使用了。指针可以用于表示变量, 但更多的是用于代表数组、存储地址以及函数地址。在代替不同变量时将返回不同的值, 可以说指针的功能十分强大。对其熟练使用有助于程序设计的简洁和便利。

2.2 立足C语言的结构化的特点, 熟练程序设计基本构型

C语言典型的特点就是结构化, 在进行具体的程序开发时, 应该首先要根据设计的软件项目, 然后进行任务的细分, 由于C语言不需要编程人员去配置硬件资源, 因此程序设计人员可以把更多的精力放在各个细分任务的子函数设计上, 考虑用最简单的程序结构去实现。在数据类型的选择上, 能够用短数据类型就尽量用短数据类型。

另外, 为了提高程序代码的执行效率, 建议C语言程序设计人员要了解C语言程序最终运行的硬件的基础机构, 是在微型计算机上运行, 还是在单片机上运行。在了解硬件平台结构及内部资源的前提下进行相应的程序设计, 将有助于提升程序的运行效率。

3 C语言的实践应用

3.1 混合编程

很多程序设计人员都认为C语言比汇编语言高级, 所以认为没有必要去学习和了解低级语言。其实这种思路是及其错误的。汇编语言之所以称之为低级语言, 是因为其更加贴近于硬件。在编程时一定要明确的在代码中描述清楚, 数据如何从一个存储单元送入另一个单元, 因此显得编程复杂, 由于其直接和硬件打交道, 所以被称为低级语言。但是其运行效率却是最高的。所以在C语言程序设计上要有质的飞越, 有必要了解汇编语言的编程思路和理念。有条件的话可以将C语言和汇编语言混合编程, 从而发挥出两类编程语言各自的优点, 达到设计程序的最优化。

在进行C语言和汇编语言的混合编程时, 无论是采用C语言调用汇编, 还是汇编调用C语言, 还是C语言嵌入汇编的方式, 都应该对调用关系、各模块的连接以及参数的传递进行妥善的处理。对于调用关系, 则需要对调用的函数和过程进行说明;通过明确函数和变量的命名以及存储模式的关联性, 从而实现各模块的有效连接;通常情况下往往通过堆栈的方式来实现参数的传递。

3.2 C语言在工程上的应用

C语言在电力电气系统、交通控制系统以及机器人控制方面都有广泛的应用。下面以工厂通风控制系统的C语言程序设计为例来加深对C语言软件编程思想的理解。

工厂通风控制程序的设计时采用模块化得设计思想, 即单独的编写初始化函数void Initial (void) ;中断处理函数void** (void) interrupt;数据采集函数unsigned char ADconvert (unsigned char address) 以及其它函数等。然后由主程序负责对各个子函数的调用, 从而实现对工厂通风系统的控制。简化的主程序如下:

main () {...Initial (void) ;

while (l) {Read Ai () ;ADconvert (unsignedchar address) ;

Data Change () ;Dis Play () ;…}

整个系统由于需要不停的对工厂数据进行采集, 所有主程序的结构就设置成了循环结构, 当通风控制系统有序的进行准备工作之后, 通过调用初始化函数, 程序就开始进入主循环, 主循环中通过调用采集程序, 完成对测量对象的循环检测以及对显示程序, 数据处理函数的循环调用。一遍又一遍的不停循环执行主程序。在这个主程序循环的过程中, 如果有异常情况发生, 则随着中断触发事件的发生, 将进入中断响应, 实现对中断函数的调用。

4 总结

C语言作为编程语言中经典的一类程序设计语言, 因其结构化、可移植化、编程简介的特点, 被广泛的应用国民生产的各个领域。而随着信息技术、互联网技术以及物联网技术的飞速发展, 未来C语言的应用领域将变得更加广泛。对C语言在软件编程方面的研究和分析将变得更有意义。

参考文献

[1]顾泰龙, 李远静.基于C语言的计算机软件编程实验研究[J].软件工程师, 2013 (08) .

12.C语言面试题大10 篇十二

1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数

long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])

2.单连表的建立,把“a”--“z”26个字母插入到连表中,并且倒叙,还要打印!

方法1:

typedef struct val

{ int date_1;

struct val *next;

}*p;

void main(void)

{ char c;

for(c=122;c>=97;c--)

{ p.date=c;

p=p->next;

}

p.next=NULL;

}

}

方法2:

node *p = NULL;

node *q = NULL;

node *head = (node*)malloc(sizeof(node));

head->data = “ ”;head->next=NULL;

node *first = (node*)malloc(sizeof(node));

first->data = “a”;first->next=NULL;head->next = first;

p = first;

int longth = “z” - “b”;

int i=0;

while ( i<=longth )

{

node *temp = (node*)malloc(sizeof(node));

temp->data = “b”+i;temp->next=NULL;q=temp;

head->next = temp; temp->next=p;p=q;

i++;

}

print(head);

3.可怕的题目终于来了

象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,

请描述思想,写出算发(c语言),空间和时间复杂度,

4.国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好,请描述思想,写出算发(c语言),空间和时间复杂度,

#include string.h

main(void)

{ char *src=“hello,world”;

char *dest=NULL;

dest=(char *)malloc(strlen(src));

int len=strlen(str);

char *d=dest;

char *s=src[len];

while(len--!=0)

d++=s--;

printf(“%s”,dest);

}

找出错误!!

#include “string.h”

#include “stdio.h”

#include “malloc.h”

main(void)

{

char *src=“hello,world”;

char *dest=NULL;

dest=(char *)malloc(sizeof(char)*(strlen(src)+1));

int len=strlen(src);

char *d=dest;

char *s=src+len-1;

while(len--!=0)

*d++=*s--;

*d=“�”;

printf(“%s”,dest);

13.c语言中期考核试题3 篇十三

一、单项选择题(每小题3分,共30分)

1、选出下列标识符中不是合法的标识符的是()。

A.hot_do B.cat1 C._pri D.2ab

2、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。

A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if

3、以下程序的输出结果是()。main(){ int a=5,b=6;printf(“%d %dn”, a--,++b);} A.5 6 B.5 7 C.4 6 D.4 7

4、设有如下定义: int x=10,y=3,z;则语句printf(“%dn”,z=(x%y,x/y));的输出结果是(A.4 B.3 C.1 D.0

5、设整型变量a为5,使b不为2的表达式是()。

A.b=a/2 B.b=6-(--a)C.b=a%2 D.b=a>3?2:1

6、以下程序段的输出结果是()。

int a=5;float x=3.14;a*=x*(‘E’-‘A’);

printf(“%fn”,(float)a);

A.62.000000 B.62.800000 C.63.000000 D.62

7、以下程序的输出结果是()。

main(){ int a=0,i;for(i=0;i<4;i++){ switch(i){ case 0:

case 1: a+=3;break;case 2: a+=2;default: a+=5;} } printf(“%dn”,a);} A.18 B.17 C.16 D.12

8、若有定义:int a=5,b=2,c;,执行语句c=a/b+0.5;后,c的值为()A.2 B.2.0 C.2.5 D.3

9、以下程序执行后输出结果是()

main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++)printf(“%d,%d,%dn”,i,j,k);

} A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3

10、以下对二维数组a进行正确初始化的是()

A.int a[2][3]={{1,2},{3,4},{5,6}};B.int a[ ][3]={1,2,3,4,5,6};C.int a[2][ ]={1,2,3,4,5,6};D.int a[2][ ]={{1,2},{3,4}};

二、读程序写结果题(每小题4分,共计20分)

1、float f=3.1415927;printf(“%f,%3.3f”,f,f);

则输出结果是(1)。

。)

2、int x=6, y=7;printf(“%d,”,x++);printf(“%dn”,++y);输出结果是(2)。

3、a=3;a+=(a<1)?a:1;printf(“%d”,a);输出结果是(3)。

4、for(a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){ b+=3;continue;} b-=5;} 程序的输出结果a的值为(4)

5、int y=1, x, *p, a[ ]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y + = *(p + x);printf(“%dn”,y);程序的输出结果y的值是(5)

三、程序填空题(每空3分,共15分)

1、从键盘上输入10个数,求其平均值。main(){ int i;float f,sum;for(i=1,sum=0.0;i<11;i++){(1);(2);}printf(“average=%fn”,sum/10);}

2、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.main(){ float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while((3)){ if(x>amax)amax=x;(4)amin=x;scanf(“%f”,(5));}printf(“namax=%fnamin=%fn”,amax,amin);}

四、编程题(共35分)

14.基于C语言的计算机软件编程分析 篇十四

1 概述

C语言是在B语言的基础上完善形成的。1967年 , 英国的Martin Richards推出了BCPL语言, 且在1970年 , 美国的Ken Thompson以BCPL语言为基础推出了B语言。而B语言的功能有限、语言简单, 并不能完全满足计算机软件编程需要。在此基础上, 许多研究者加强对计算机编程语言的研究,经过多次试验, 在B语言的基础上, 对其进行完善, 最终在1972年美国贝尔实验室D.M推出了C语言[1]。1978年后 , 大、中、小型计算机对C语言进行移植, 将其作为系统设计语言,为系统程序编写提供条件。

在各种计算机编程语言中, 一切计算机语言的基础是C语言。它是一门高级语言, 灵活方便, 具有汇编语言、高级语言的特点, 简洁紧凑。同时, C语言可移植性强, 应用广泛, 表达力强、功能丰富, 适用于多种操作系统, 可进行自由书写, 在信息技术发展方面发挥积极作用。

2 软件编程技巧

2.1 C 语言的特有函数

在计算机软件编程中 , 每一个函 数都具有 一定的功 能 ,而在C语言编程过程中, 需要应用一些特有函数。对于函数而言, 函数名对函数功能进行反映, 因此, 在定义函数的过程中, 程序员需要定义函数名字、参数名、返回 值类型等 。同时, 由于在编程过程中, C编译系统提供库函数, 且该系统首先定义 好了这些 函数 , 因此在调 用程序时 , 程序员通 过#include指令”, 在所有文件中引入相关的头文件 , 从而便可实现程序调用[2]。例如 , 在运用程序时 , 当应用到sqrt函数时 ,头文件中必须包含 #include“string .h”, 以此确保程序的正常运行。

2.2 指针的灵活运用

在软件编程中, 指针的使用极为重要, 赋值的实现需要指针的控制, 从而建立变量关系, 且编程的难度与指针运用的大小密切相关。因此, 在复杂编程工作的完成中, 程序员需要熟练运用指针, 明确指针使用的作用, 进行编程。指针是特殊类型变量的一种, 可帮助程序员解决程序设计中遇到的问题, 其具有指针名、值、指针类型3要素[3]。在编程过程中 ,使用者需要对指针类型、指针名进行合理、科学定义, 对其赋值, 从而对指针、变量进行区分。同时, 在指针调用过程中, 利用C语言的特有函数科学、准确定义函数, 并按照算法编程的方式, 利用流程图表达算法内容。此外, 在函数编程过程中, 程序员具体设置函数的名字、参数名、返回值类型, 设置好指令, 且在C语言设置过程中, 具体确定文件知识、位运算, 确保其满足程序中的具体要求, 明确二进制的对象。对于文件中包含的程序文件、数据文件, 应将它们之间的步骤设置好, 从而为数据查找提供方便。

2.3 位运算及算法技巧

在计算机高级语言的运算方法中, C语言的重要特点是位运算。位运算的对象是二进制, 具有唯一性、独特性, 是计算机软件编程、程序运行的基础, 其根据相关程序要求的进行符合要求的运算。同时, 运算、程序运行过程中, 程序文件必不可少,在编程中, 程序设计员需要在文件中存储程序, 方便数据查找,提高运行效率。此外, 在程序设计中, 程序的灵魂是算法, 算法技巧的掌握对程序设计极为关键。算法可用自然语言、流程图表述, 而在用流程图表示算法时, 要求程序员对流程图符号进行熟练掌握, 并具备牢固的数学知识, 提高编程效率。

3 计算机软件编程中 C 语言、汇编语言的结合

3.1 汇编语言的嵌入方法

随着科学技术的快速发展, 计算机软件不断更新, 而C语言、汇编语言两种语言的混合编程是计算机软件开发中常使用的方式, 以此提高计算机编程、程序开发效率, 实现难度较高的编程任务。在具体编程中, 在C语言程序中嵌入汇编语言, 在寄存器的存储、转换作用下是实现汇编语言的运行。例如, 如果在C语言源程序中嵌入一组汇编语句, 就需要用大括号扩充嵌入程序, 进而添加“asm”, 且需要在asm前面放入指令代码, 并用分隔符“:”区分正常的C语言、汇编语言。

其中, 嵌入语言以大括号来表示, 通过该形式的编程对编程的过程进行简化。当汇编程序嵌入后, 程序员定义程序,根据C语言指出函数, 定义函数, 并对不同的函数进行区分,根据不同模块的使用特点, 对目标文件进行分析, 提高编程的可靠性[4]。

3.2 链接 C 语言、汇编语言

在C语言、汇编语言程序编写中, 需要独立设置编译目标代码, 然后实现链接。由于C语言、汇编语言程序能够相互调用, 且多个功能模块共同组成一个任务, 合适的语言独立编程功能模块。因此, 在编程中, 程序员应根据每个模块特点, 设置编程, 形成目标文件, 使其成为可执行文件。同时, 在C语言编程过程中, 汇编程序需要调用函数、定义变量, 这样, 程序员就需要对寄存器的使用、参数传递、子程序的返回值、变量及函数调用、 存储模式等问题进 行考虑 ,特别需要注意参数传递问题[5]。在编程中 , 根据堆栈汇编程序传递参数 , 并按照参 数传递原 则进行程 序编程。 例如 , 在Voidaa (char*p,int i) 函数中 , 利用汇编语言编写该函数 , 在系统调用在小内存模式下进行, 写为aa (&q , n)。而在系统运行中, 在堆栈中压入n , 并为了实现对存储数据的存取, 传递参数。此外, 由于C语言程序、调用的子程序的编程使用的是同一个堆栈, 这样, 就会产生pushbp pop bp、sp两个执行指令, 设置这两个指令, 为执行过程的使用提供方便。

3.3 C 语言、汇编语言混合编程实验分析

在混合软件具体编程中, 一般情况下, 在5个数中比较程序功能, 从而对最小数值进行确定。由于汇编 的子程序 、主程序共同组成了所编程序, 运用C语言编写主程序, 利用汇编语言编写子程序, 而最小数值通过主程序的调用得到确定。在编程中, 用min.c* 表示主程序, 用qiumin.asm表示子程序, C语言、汇编语言结合, 软件之间进行交流, 从而使程序运行速度得以提高。在程序运行中, 需要具体编程程序设计过程中的内存模式、寄存器分配等, 确保程序设计语言的相互协同, 使外部接口处于正常使用状况, 为编程中的外部调用功能的实现提供保障。

4 C 语言多项式除法的程序设计

4.1 设计流程

在软件编程中利用C语言, 对计算机软件的实用性进行探索。在C语言多项式除法的程序设计中, 实验设计的建立依据循环冗余的结构进行, 设置循环冗余验码编制软件程序。在此过程中, 程序员需先对函数名称进行定义 , 了解函数 ,对函数的初始位置进行确定, 进而建立数据库。此后, 在C语言的基础上, 程序员编程、计算函数, 并在此过程中, 一个冗余余 数在系统 中自动生 成 , 在remainder文件中存 储余数, 确定程序的起始文件[6]。最后 , 根据系统运行的结果 , 结合软件需求, 程序员科学分析计算机软件实验, 此时, 如果计算结果能够满足软件运行需求, 则说明软性运行正常。如果计算结果不能够满足软件运行需求, 则需要程序员仔细检查软件编程过程, 发现问题, 解决问题。在C语言基础上, 对软件编程实验流程进行设计, 简化编程过程, 提高实验结果的准确性。

4.2 程序应用

很多领域的发展过程都需要运用到C语言多项式除法程序的编程, 该编程使软件应用的实际价值得到最大程度的发挥, 并拓宽了混合语言在多项式除法的应用范围。在C语言、编程语言混合语言的使用中, 程序员应及时定义函数, 通过函数名对函数性质进行准确体现, 获取准确的余数结果, 确保计算机软性系统高效运行。

5 结语

在信息技术快速发展的今天, 人们对计算机软件编程提出越来越高的要求, 程序员需要强化对C语言的运用、计算的研究, 利用C语言实现计算机软件的多功能, 促进多功软件的使用, 不断开发新软件。在计算机软件编程中, C语言、汇编语言的合理使用, 提高软件的使用效率, 简化了程序的编写过程, 推动了计算机技术的发展。

摘要:在计算机软件编程过程中,利用C语言可简化程序设计步骤,使程序运行结果更加准确。同时,基于C语言的计算机软件编程有助于提高计算机软件的更新速度,使计算机的使用范围更加广泛。主要对C语言进行概述,分析基于C语言的计算机软件编程技巧和编程实验,为计算机软件编程提供参考。

上一篇:在旅游工作座谈会上的讲话下一篇:毕业设计测试方法