c语言程序设计基础题库,c语言程序题库及详解答案
今天给各位分享c语言程序设计基础题库的知识,其中也会对c语言程序题库及详解答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
下半年计算机二级c语言基础试题
下半年计算机二级c语言基础试题
任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。下面是我收集的关于计算机二级c语言基础试题,希望大家认真阅读!
下半年计算机二级c语言基础试题1一、选择:
1.给出以下定义:
char acX[ ]="abcdefg";
char acY[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为()
A)数组acX和数组acY等价 B)数组acX和数组acY的长度相同
C)数组acX的长度大于数组acY的长度 D)数组acX的长度小于数组acY的长度
答案:C
2.
void example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[]="hello";
example(acHello);//数组名称作参数,传的是地址,一个地址占四个字节
return;
}
的输出是
A 4 B 5 C 6 D不确定
答案:A
3.有以下程序段
char acArr[]="ABCDE";
char*pcPtr;
for(pcPtr= acArr; pcPtr< acArr+ 5; pcPtr++)
{
printf("%s/n", pcPtr);
}
return;
输出结果是()
A) ABCD B) A C) E D) ABCDE
B D BCDE
C C CDE
D B DE
E A E
答案:D
4.在中断中,不能同步获取信号量,但是可以释放信号量。
A.正确 B.错误
答案:A
5.以下叙述中不正确的是()
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
答案:D
6.设有如下定义:
unsigned long pulArray[]={6, 7, 8, 9, 10};
unsigned long*pulPtr;
则下列程序段的输出结果为()
pulPtr= pulArray;
*(pulPtr+ 2)+= 2;
printf("%d,%d/n",*pulPtr,*(pulPtr+ 2));
A)8,10 B)6,8 C)7,9 D)6,10
答案:D
7.定义结构体时有下面几种说法,请指出正确的(多选):______
A、结构体中的每个部分,最好进行四字节对齐;
B、结构体的总长度最好是四字节对齐;
C、结构中成员的存放不用考虑字节对齐情况;
答案:A、B
8.void example()
{
int i;
char acNew[20];
for(i= 0; i< 10; i++)
{
acNew[i]='0';
}
printf("%d/n", strlen(acNew));
return;
}
的输出为()
A 0 B 10 C 11 D不确定
答案:D
9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool.()
A.正确 B.错误
答案:B
10.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是
大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
A.正确 B.错误
答案:A
二、填空题
1、 C语言函数返回类型的默认定义类型是
2、函数的实参传递到形参有两种方式:和
3、在一个函数内部调用另一个函数的调用方式称为。在一个函数内部直接或间接调用该函数成为函数的调用方式
4、C语言变量按其作用域分为和
5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为
三、看程序写结果
1、#include
Int abc(int u,int v);
Void main()
{int a=24,b=16,c;
c=abc(a,b);
printf(“value=%d”,c);
}
Int abc(int u, int v)
{int w;
While(v)
{w=u%v;
u=v;
v=w;
}
Return u;
}
2、#include
int x1=30,x2=40;
main()
{int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf(“%d,%d,%d,%d”,x3,x4,x1,x2);
}
sub(int x,int y)
{x1=x;x=y;y=x1;}
3、#include
Main()
{int i=5;
Printf(“%d”,sub(i));
}
sub(int n)
{int a;
If(n==1) return 1;
a=n+sub(n-1);
return(a);
}
4、#include
Void fun()
{static int m;
m+=2;
printf(“%d”,m);
}
Main()
{int a;
For(a=1;a<=4;a++) fun();
Printf(“”);
}
四、编程题
1、编写一个函数,判断任一整数是否为素数,用main()函数调用并测试之。
2、用递归方法求n!
3、有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分
下半年计算机二级c语言基础试题2 1.下列叙述中正确的是()。
A.所有数据结构必须有根结点
B.所有数据结构必须有终端结点(即叶子结点)
C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
D.没有根结点或没有叶子结点的数据结构一定是非线性结构
【答案】D
【解析】D项正确,线性结构的特点是:
①集合中必存在“第一个元素"且惟一;
②集合中必存在“最后一个元素”且惟一;
③除最后一个元素外,其他数据元素均有惟一的“后继;
④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。
2.以下叙述中错误的是()。
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的'机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
3. C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数
B.定义常量和外部变量
C.三种基本结构语句
D.丰富的数据类型
【答案】A
【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。
4.有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d",k);
已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是()。
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。
5.下列叙述中正确的是()。
A.栈是“先进先出”的线性表
B.队列是“先进后出"的线性表
C.循环队列是非线性结构
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
【答案】D
【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。
答案选择D选项。
6.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为()。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。
7.设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是()。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。
8.关于C语言标识符,以下叙述错误的是()。
A.标识符可全部由数字组成
B.标识符可全部由下划线组成
C.标识符可全部由小写字母组成
D.标识符可全部由大写字母组成
【答案】A
【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。
9.以下程序段中的变量已定义为int类型,则
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d",pAd);
程序段的输出结果是()。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum++,sum++是后置自增,执行完后,pAd=5,sum=6。++pAd和pAd++语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。
;
C语言题库,求发一份
单选题
1.以下叙述中正确的是(1)。
A.若e1、e2为变量,e为表达式,则
e1=e2=e使得e1、e2都具有表达式e的值。
B.程序中不能定义与库函数名同名的变量。
C.一个C源程序可放在多个文件中,但
一个函数不能跨放在两个不同的文件中。
D.C语言编译系统以函数为单位编译源程序。
2.若a,b,c都是实型变量,则下列语句中除(2)之外,都可能得不到正确的计算结果。
A.if(b*b-4*a*c==0) x1=x2=-b/(2*a);
else x1=(-b+sqrt(b*b-4*a*c))/(2*a), x2=(-b-sqrt(b*b-4*a*c))/(2*a);
B.b=2.0e38+1.0-2.0e38;
C.a=456*768/2;
D.double define=1.0;
3.以下正确的常量是(3)。
A.‘077’ B.‘\0x89’ C.3.14u D.‘\012’
4.若已有声明“float x=-1234.5678; int m,n=4;”则执行“m=printf(“\n%8.3f\n”,x)/n;”语句后,
变量m的值是(4)。
A. 2 B. 3 C. 4 D. 5
5.若已有声明“int x1; float x2; long x3; char x4;”,且以下选项均出现在switch语句中,其中正确
的是(5)。
A. case 1.1: scanf("%d",&x1);break;
B. case 1+2: scanf("%f",&x2); break;
C. case'x':
case'y'-1: scanf("%ld",&x3); break;
D. case x4: scanf("%c",&x4); break;
6. 33.以下表达式中,能够作为“if(e)语句”中判断条件表达式e的是(6)。
A. x==++(x+1) B. x+=++x||x++ C. x+1=z D. x%2.0!=0
7.以下局部变量声明中,正确的是(7)。
A.int x=0, void=1; B.int x=1,y=2x;
C.int x=2,y=sqrt(x); D.int x=sqrt(y),y=4;
8.在以下语句中,正确的是(8)。
A.if(a>b)m=a;n=b;else m=b;n=a;
B.if(a>b){m=a;n=b;else m=b;n=a;}
C.if(a>b)m=a,n=b;else m=b,n=a;
D.if(a>b){m=a;n=b;}else(a<=b){m=b;n=a;}
9.24.已知有声明:“char c=‘1’; int x=300; float t=35000; double d=3.1234567e10;”,则以下表达式
求值时除(9)外,其结果都可能是不准确的。
A.x=t/c B.t=d/x C.t=d/1e5f D. t=x+c
10.若有声明“int i,k=1; unsigned j;”,则下列语句执行时会出现无限循环的语句
是(10)。
A.for(j=15;j>0;j-=2) k++;
B.for(j=0;j<15;j+=2) k++;
C.for(i=0;i<15;i+=2) k++;
D.for(i=15;i>0;i-=2) k++;
11.已有声明“int x=2,y=1,z=0;”,以下表达式的值不为0的是(11)。
A. x==(x=0,y=1,z=2)
B. z>y>x
C. x>y==1
D. x>(y=2)
12.若e1、e2和e3是表达式,以下选项中与语句while(e1){e2,e3;}功能等价的语句是(12)。
A. for(;e1;e3)e2; B. for(;e1;e2)e3; C. for(e1;e2;e3); D. for(e1; e2, e3;);
13.已有声明“int x=3;”,以下选项中与“x+=x=x+1”功能不等价的表达式是(13)。
A.x=x+(x=xx+1) B.x=x+(x=x(x+1)) C.x=x+(x=xx1) D.x=x(x+1), x=x+x
14.若已有声明“int a=2;”,则执行语句“printf("%d", a, a+1);”后的输出结果是(14)。
A.语法错 B. 2,3 C. 2 D. 3
15.语句“if(!n) n++;”中的“!n”等价于如下(15)条件的判定。
A.n==0 B.n!=0 C.n>0 D.n<0
16.若已有声明“int a=1;”,则以下表达式中错误的是(16)。
A.-a++ B.+a-- C.--a D.++-a
17.下列(17) C语言表达式能正确表达数学计算式1÷× 2xy。
A. 1/sqrt(2*3.14)*2*pow(x,y) B.1.0/sqrt(2)*2*x**y
C. 1.0/sqrt(6.28)*2x^y D.1/6.28^0.5*2*pow(x,y)
18.已有声明“int a=3,b=3,c=2;”,以下表达式中值为0的是(18)。
A.!a&&!b&&c B.!a||!b|| c C. a==b&&b>=c D. a>=b&&b>c
19.
36.若有: int w=1, x=2, y=3, z=4;则表达式 w>x?x--:y<z?y--:++z的值为(19)。
A. 4 B. 3 C. 2 D. 1
20.已知某程序中有以下片断:
#define p 2.5
main()
{ float x=p;
}
则main函数中标识符p代表一个(20)。
A. float型变量 B. double型变量 C. float型常量D.double型常量
20.
填空题
1.21.设有如下程序段:
int a=2, b, c=5;
scanf(“%d”,&b);
b= c--|| scanf(“%d”,&c)&& a++;
执行该程序段时,若从键盘上输入的数据是 4ƀ3(ƀ代表空格键),则变量c的值为(21)。
2. signed和unsigned只能用于声明int型变量和(22)型变量。
3.代数式“||”的C语言表达式是(23)。
4.已有声明“int a=-13,n=7;”,表达式“a%=n%=4”求值后变量a的值为(24)。
5.已有声明“unsigned int a=30;”,那么–a的值为___(25)____。
6.
如下程序执行后的输出是____(26)____。
#include<stdio.h>
main()
{
int i=1,m=0;
switch( i)
{
case 1:
case 2: m++;
case 3: m++;
}
printf(“%d”,m);
}
7.C语言的三个逻辑运算符(!、&&、||)中,优先级高于算术运算符的是
(27)。
8.已知sizeof(int)的值为2,执行如下程序后输出结果为(28)。
main()
{ int a,b;
a=65536;
b=32767+1;
printf("%d%d\n",a,b);
}
9.若有声明“int a=3,b=0,c=5;”,则表达式!a+b+c-1&&b+c/2的值是(29)。
10.若有声明“int x=1,y=2;”,则表达式++x, x+y++的值是(30)。
三、阅读程序题
1.在PC机的TC中执行以下程序后的输出是:(31)。
main()
{
unsigned x=0x7f39;
int y;
char c;
c=x;
x+=0307;
y=x;
printf(“%d,%x,%c”,x,y,c);
}
2.以下程序运行后的输出结果是(32)。
#include<stdio.h>
main()
{ int x=30, y=45;
while(x!=y)
if(x>y)x-=y;
else y-=x;
printf("%d", x);
}
3.
以下程序运行后输出结果的第一行是(33),第二行是(34)。
#include<stdio.h>
#include<math.h>
void main()
{ int a=0x65,b,c,count=0;
b=a;
while(b>0)
{ b=b/8;
count++;
}
printf("%d\n",count);
while(count>0)
{ c=pow(8,count-1);
printf("%d",a/c);
a=a%c;
count--;
}
}
4.以下程序运行时输出结果是(35)。
#include<stdio.h>
main()
{
int i,x=3,y=5;
for(i=0;i<3;i++)
switch(y%x)
{
case 0: printf("%d",y);
case 1: printf("%d",y--);break;
case 2: printf("%d",--y);break;
}
}
5.以下程序执行后,输出结果的第一行是(36),第二行是 _(37)______。
#define N 100
main()
{ int i=0,sum=0;
do
{ if(i==(i/2)*2)
continue;
sum++;
if(sum>3)
break;
}while(++i<N);
printf("%d\n%d", sum,i);
}
四、完善程序题
1.下列程序的功能是按从键盘上输入的整数m,判断2m-1是否为素数,若为素数再求2m-1的反序数。例如:m为17,217–1(131071)是素数,其反序数是170131。
#include<stdio.h>
(38)
main()
{
int m,j;
long q,k1,k2=0,k3;
scanf("%d",&m);
k3=k1=pow(2,m)-1;
q=sqrt(k1);
for(j=2;j<=q;j++)
if((39)) break;
if(j>q)
{ while(k3>0)
{ k2=k2*10+(40);
k3/=10;
}
printf("m=%d\npow(2,m)-1=%ld is a prime.\nreverse order%ld\n",m,k1,k2);
}
else
printf("m=%d isn't a prime.\n",m);
}
2.以下程序找到并输出所有满足给定条件的四位十进制表示的正整数:该数是某个数的平方、该数的后二位是25、组成该整数的各位数字中有两位是2。例如:1225是满足所给条件的四位正整数(352=1225)。
#include<stdio.h>
#include<math.h>
main()
{ long i,j,s,d=0;
for(i=1000;i<10000;i++)
{(41);
j=(42);
if(i==j*j&& i%100==25)
{ s=i;
while(s>0)
{ if((43))d++;
s=s/10;
}
if(d==2) printf("\n%d",i);
}
}
}
3..下列程序计算下列数学函数展开式的近似值,累加运算在最后一项的绝对值小于10-6时停止。
程序运行时从键盘上分别三个实数-1.0、0.5、1.0,作为x的值。
#include<stdio.h>
#include<math.h>
#define EPS 1.0e-6
main()
{ double x,n,tn,ft,sn,xn;
int i;
for(i=0;i<3;i++)
{(44);
ft=1.0;
scanf("%lf",&x);
sn=xn=x;
do{
xn=xn*x*x;
ft=ft*(2*n-3)/(2*n-2);
tn=ft*xn/(45);
sn=sn+tn;
n=n+1;
}while((46));
printf("f(%lf)=%0.6lf\n",x,sn);
}
}
《C语言程序设计》试卷答题纸
(本试卷满分100分)
系科_____________学号_____________姓名_____________成绩____________
单项选择题得分填空题得分阅读程序题得分完善程序题得分总分
一、单项选择题
(1)(2)(3)(4)(5)
(6)(7)(8)(9)(10)
(11)(12)(13)(14)(15)
(16)(17)(18)(19)(20)
二、填空题
(21)(22)
(23)(24)
(25)(26)
(27)(28)
(29)(30)
三、阅读程序题
(31)(32)
(33)(34)
(35)(36)
(37
四、完善程序题
(38)(39)
(40)(41)
(42)(43)
(44)(45)
(46)
《C语言程序设计》试卷参考答案
(本试卷满分100分)
一、单项选择题
(1)C(2)D(3)D(4)A(5) B
(6)B(7)C(8)C(9)D(10)A
(11)C(12)A(13)A(14)C(15)A
(16)D(17)A(18)A(19)B(20)D
二、填空题
(21) 4(22) char
(23) fabs(exp(sqrt(1+sin(x))))(24)-1
(25) 65506(26) 2
(27)!(28) 0-32768
(29) 1(30) 4
三、阅读程序题
(31)-32768, 8000, 9(32) 15
(33) 3(34) 145
(35) 4433(36) 4
(37) 7
四、完善程序题
(38)#include<math.h>(39) k1%j==0
(40) k3%10(41) d=0
(42) sqrt(i)(43) s%10==2
(44) n=2.0(45)(2*n-1)
(46) fabs(tn)>EPS
c语言程序设计基础叶文珺版答案
初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】
特别提醒:在使用本方法之前一定要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。单击此处查看【C语言的编程风格】
使用《Turbo C/C++ for Windows集成实验与学习环境》软件可以很方便地看着软件集成的《C语言入门教程》输入练习其中的程序例题。具体使用方法参见软件帮助部分。
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
#include"stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的printf("Hello World!\n");中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3...+100的和的程序
#include<stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在《Turbo C/C++ for Windows集成实验与学习环境》集成的教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!
例如,将Hello World程序中语句printf("Hello World!\n");中的;改成中文的分号;运行一下程序,看有什么结果?
C语言的错误信息的形式:(下面例子是的Turobo C2.0错误信息,如图1)
错误文件名行号冒号错误内容
↓↓↓↓↓
Error E:\WinTc\WinTc\frist.c 5: Function call missing) in function main
C语言的错误信息的形式:(下面例子是Visual C++6.0错误信息,如图2)
文件名行号冒号错误代码冒号错误内容
↓↓↓↓↓↓
e:\wintc\wintc\frist.c( 5): error C2143: syntax error: missing')' before';'
软件集成了高校教学用的最多的两个编译器Visual C++6.0和Turbo c 2.0,支持C、标准C、C++、标准C++、WINDOWS C程序的编辑、编译、和调试。软件根据用户输入程序的类型智能选择编译器,不用使用者干涉。
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就是差别。
第五步、研究典型的C语言程序,提高程序设计能力
经过上述过程的学习,我们已经学会了C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后就可以研读别人编写C语言经典程序,看懂别人是如何解决问题的,学习解决问题的方法和程序设计技巧,提高自己的程序设计能力。
在软件中有50多个典型的源程序,研究它的实现方法,提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言程序设计的能力。
C语言课程设计的目的:是让学生综合利用所学的C语言知识,解决一些接近实际问题题目,提高程序设计和调试较大程序的能力,为进一步进行软件开发打下坚实的基础。
最后送C语言初学者一句话来共勉:首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。做任何事,何尝不是这样呢?兴趣是学习C语言的最大动力,学习方法给你指明努力的方向,让你事半功倍。如果你感觉对你有帮助的话,请回帖支持,让更多的朋友知道它,谢谢支持!!!
关于c语言程序设计基础题库到此分享完毕,希望能帮助到您。