当前位置:文档之家› C语言练习7

C语言练习7

C语言练习7
C语言练习7

1.用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是(C)。

long a=0xffffff; int b; char c;

A、指向同一地址

B、-1和98

C、-1和97

D、0ffffff 和0x61

2.若变量已正确定义且k 的值是4,计算表达式( j =4, k--) 后,j和k的值为D

A、j=3, k=3

B、j=4, k=4

C、j=3, k=4

D、j=4, k=3

3.以下运算符中,优先级最高的运算符是(B)。

A、*(乘号)

B、()

C、!=

D、=

4.有以下程序

main()

{ int i = 10, j = 1; printf("%d,%d\n",i--, ++j); }

执行后输出结果是D

A、10,1

B、9,2

C、9,1

D、10,2

5.先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是(A)。

A、c='a';

B、c="97";

C、c="a";

D、C='97'

6.选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值(D)。

A、非零的数

B、1

C、-1

D、0

7.以下程序的输出结果是A

main()

{ int x, i;

for(i = 1; i <= 100; i++)

{ x = i; if( ++x % 2 == 0) if( ++x % 3 == 0 )

if( ++x % 7 == 0) printf(“%d “, x);}

printf(“\n”);}

A、28 70

B、39 81

C、42 84

D、26 68

8.若char a[10];已正确定义,以下语句中不能从键盘上给a数组的

所有元素输入值的语句是(D)。

A、scanf("%s",a);

B、for(i=0;i<10;i++)a[i]=getchar();

C、gets(a);

D、a=getchar();

9.以下能对一维数组a进行正确初始化的语句是(B)。

A、int a[10]={10*1};

B、int a[]={0};

C、int a[10]=(0,0,0,0,0)

D、int a[10]={};

10.以下叙述正确的是(A)。

A、可以把define定义为用户标识符,但不能把if定义为用户标识符

B、可以把if定义为用户标识符,但不能把define定义为用户标识符

C、可以把define和if定义为用户标识符

D、define和if都不能定义为用户标识符

11.以下程序的输出结果为(C)。

main()

{int a=1,b=2,c=3,d=4,e=5;

printf("%d\n",func((a+b,b+c,c+a),(d+e))); }

int func(int x,int y)

{ return(x+y);}

A、15

B、9

C、13

D、函数调用出错

12.若有定义和语句:

int a[4][5], (*cp)[5]; cp = c;

则对a数组元素的引用正确的是B

A、*(cp+3)

B、*(*cp+2)

C、*(cp+1)+3

D、cp+1

13.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[0];p[3]的值是(C)。

A、3

B、2

C、4

D、不一定

14.若已建立下面的链表结构,指针p、s分别指向图中所示结点,则不能将s所指的

结点插入到链表末尾的语句组是(B)

A、s->next = NULL; p = p->next; p->next = s;

B、p = p->next; s->next = p; p->next = s;

C、p = (*p).next; (*s).next = (*p).next; (*p).next = s;

D、p = p->next; s->next = p ->next; p ->next = s;

15.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,

则文件方式字符串应是(C)。

A、"rb+"

B、"ab"

C、"wb+"

D、"ab++

填空题:

1.以下程序段的输出结果是__a = 513.789215__、_a = 513.79____、_a = 513.78921500____、___a = 513.78921500__

double a = 513.789215;

printf(“a = %8.6f, a = %8.2f, a = %14.8f, a = %14.8lf\n”, a, a, a, a);

2.当a=3,b=2,c=1;时,执行以下程序段后a=___2__. if(a>b) a=b; if(b>c) b=c; else c=b; c=a;

3.完善以下程序段,实现从键盘输入字符,当输入字母为'Y' 时,执行循环体。. ch=getchar(); while(ch___==__'Y') ch=getchar();

4.以下程序的功能是将x字符串与y字符串连接并输出,请填空。注:程序中不能使用字符串连接函数。

#include

main()

{ char x[80], y[40]; int a, h = 0; printf(“Please input x string: “);

gets(x); printf(“Please input y string: “);

gets(y); while(x[h]!=?\0?)

___h++__ ; ___a = 0__;

while(y[a]!=?\0?)

x[h++] = y[a++]; _x[h] = …\0?____ ;printf(“Output x string: “); puts(x);}

5.以下程序的输出结果是____4_。

fun1(int a, int b)

{ int c; a += a; b += b; c = fun2(a, b); return c * c; }

fun2(int a, int b)

{ int c; c = a * b % 3; return c; }

main()

{ int x = 11, y = 19;

printf(“%d\n”, fun1(x, y));

}

6.以下程序调用invert函数按逆序重新放置a数组中元素的值,a数组中的

值在main函数中读入。请填空。

#define N 10

void invert( int *s, int i, int j)

{ int t; if(i < j)

{ t = *(s + i); *(s + i ) = __*(s+j)___; *(s + j ) = t; invert( s, __i+1___, j - 1); } }

main()

{ int a[N], i;

for( i = 0; i < N; i++) scanf(“%d”, a + ___i__ );

invert( a, 0, N - 1); for(i = 0; i < N; i ++) printf(“%d”, a[i]);printf(“\n”);

7.以下程序的运行结果是_30x____。

#include

typedef struct student

{ char name[10];

long sno; float score; }STU;

main()

{ STU a = {“Zhangsan”, 2001,95}, b = {“Shangxian”, 2002,90},

c = {“Anhua”, 2003, 95},

d = a, *p = &d;

if(strcmp(https://www.doczj.com/doc/be4206089.html,, https://www.doczj.com/doc/be4206089.html,) > 0) d = b; if(strcmp(https://www.doczj.com/doc/be4206089.html,, https://www.doczj.com/doc/be4206089.html,) > 0) d = c;

printf(“%ld %s\n”, d.sno, p ->name); }

8.C语言中调用__fclose fclose()___函数来关闭文件.

9.设x 的值为15,n 的值为2,则表达式x%=(n+3) 运算后x 的值是_0.

10.设(k=a=5,b=3,a*b),则k值为___5__.

【程序设计】

功能:编写函数fun计算下列分段函数的值:

x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3

x^2-x-1 其它

提示:必须使用if语句完成。

x^2表示x的平方(数学表示方式)。

#include "stdio.h"

void TestFunc();

float fun(float x)

{/**********Begin**********/

float y;

if (x<0 && x!=-3.0)

y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x-5*x+6;

else y=x*x-x-1;

return y;

/********** End **********/

}void main()

{ float x,f; printf("Input x="); scanf("%f",&x);

f=fun(x); printf("x=%f,f(x)=%f\n",x,f); TestFunc(); }

void TestFunc()

{ FILE *IN,*OUT;

int n; float i; float o; IN=fopen("in.dat","r");

if(IN==NULL)

{ printf("Read File Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL)

{ printf("Write File Error"); } for(n=0;n<10;n++)

{fscanf(IN,"%f",&i); o=fun(i); fprintf(OUT,"%f\n",o); fclose(IN); fclose(OUT);}

【程序改错】:只允许修改错误代码,其他代码不允许修改!

功能:根据整型形参m的值,计算如下公式的值。

1 1 1

t = 1- -- - -- - ... - --

2x2 3x3 mxm

例如:若m=5,则应输出:0.536389

#include "stdio.h"

double fun(int m)

{ double y=1.0; int i;

/**********ERROR**********/

for(i=2;i=i;i++)

for(i=2;ii;i++) for(i=2;1+m>i;i++)】/**********ERROR**********/

y-=1/(i*i);

【【参考答案】

y-=1.0/(i*i); y=y-1.0/(i*i); y-=1.0/(float)(i*i); y=y-1.0/(float)(i*i); y=y-1.0/i/i; y=y-1.0/(float)i/(float)i; y=y-1/(double)(i*i); y-=1/(double)(i*i);】

/**********ERROR**********/

return m; 【return y;return (y);return(y);】}

void main()

{ int n=5;

printf("\nthe result is %lf\n",fun(n));}

【程序填空】

功能:一个自然数被8 除余1 ,所得的商被8 除也余 1 ,再

将第二次的商被8 除后余7 ,最后得到一个商为a。又知这

个自然数被17除余4 ,所得的商被17除余15,最后得到一

个商是a的2倍。编写程序求这个自然数。

#include

void main( )

{

int i,n,a ;i=0 ;

while(1)

{ if(i%8==1)

{ n=i/8 ; if(n%8==1)

{n=n/8 ;

/**********FILL**********/

f(n%8==7) __a=n/8___ ; }

}

if(i%17==4)

{

n=i/17 ;

/**********FILL**********/

if(_n%17==15!(n%17!=15)___) n=n/17 ; }

/**********FILL**********/

if(___n__==a*2)

{

printf("result=%d\n",i) ;

break;

}

i++;

} }

C语言习题集

1、将一元二次方程的求根公式(-b+判断式的平方根)/(2a)转换为C语言的表达式,转换以后的语句写在函数fun的花括号,fun 函数的其他语句请不要修改,main函数供你调试程序使用也可以任意修改。 #include #include double fun(double a,double b,double c) { double x1=0.0; //--ksstart (注释不能删除)— //考生代码从此开始编写 x1 = (-b+sqrt(b*b-4*a*c))/(2*a); //--ksend--- return x1; } main() { //求一个根 double a=0.0,b=0.0,c=0.0,x1=0.0; int n=0; printf("The a,b,c:"); scanf("%lf %lf %lf",&a,&b,&c); x1=fun(a,b,c); printf("The x1=%lf:\n",x1); } 2、函数 fun 的功能是: 将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是: 将 a 数的十位和个位数依次放在 c 数的个位和百位上, b 数的十位和个位数依次放在 c 数的十位和千位上。 例如, 当 a=45, b=12, 调用该函数后, c=2514 。 注意: 部分源程序存在文件 PROG1.C 中。数据文件 bc.in 中的数据不得修改。请勿改动主函数main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include #include long fun(int a, int b) { long c=0; //--ksstart(注释不能删除)— //考生代码从此开始编写 int c1,c2,c3,c4; c1 = b%10; c2 = a%10; c3 = b/10;

c语言第二版第七章答案

7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 参考程序如下: #include int aa(int m,int n) //求最大公约数 { int k; if(m int aa(int n) { int i; int flag; // flag标志 for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) flag=1; else flag=0;

return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } printf("After switch:\n"); aa(a,b); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } } void aa(int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j]; 7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列 参考程序如下: main()

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

c语言习题.doc

1.C语言中,int型数据在计算机内部是由()表示的。 答:int型数据在计算机内部是由16位补码表示的。 2.下列可以作为C语言用户标识符的是()。 A) _123 B) a1b2c3 C) int D) 123abc 答:A)和B) C语言标识符必须是以英文字母(a到z)、或者下划线_开头的字符串。字符串中只能包含英文字母、下划线和数字(0到9)。但字符串不能是C语言中的32个保留字(例如int,short,long,unsigned,float,char,if,switch,for,while等)。 3.在C语言中,如果下面的变量都是int类型,则输出的结果是()。 sum=pad=5,pAd=sum++,pAd++,++pAd; printf("%d\n",pad); 答:输出结果是5。 因为C语言是字母大小写敏感的,也就是说区分大小写字母。pad和pAd是两个不同的变量。4.以下程序的输出结果是( )。 #include main() { printf("%d\n",NULL); } 答:0 因为stdio.h头文件中NULL的定义如下: #define NULL 0 5.下面程序的输出是()。 main() { int x=10,y=3; printf("%d\n",y=x/y); } 答:3 因为两个同类型的数据作算术运算,其结果仍为该类型。即整数除以整数,商仍为整数。 10/3的商为3。 6.下面程序的输出是()。 main() { int x=023; printf("%d\n",--x); } 答:18 因为023是一个八进制数,表达式--x的值为022,按照%d带符号的十进制数输出,结果为18。 注意:023是八进制数;23是十进制数;0x23是十六进制数。 7.在C语言中,不正确的int类型的常数是()。 A)32768 B)0 C)037 D)0xAF 答:A) 8.执行下面程序中的输出语句后a的值是()。

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 hcf(u,v) int u,v; { int a,b,t,r; if(u>v) { t=u;u=v;v=t; } a=u;b=v; while((r=b%a)!=0) { b=a;a=r; } return(a); } lcd(u,v,h) int u,v,h; { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.d=%dn",l); return(u*v/h); } #include

void main() { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.D=%dn",l); } 7.2 求方程根 float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; { x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; { p=-b/(2*a);

q=sqrt(disc)/(2*a); } main() { float a,b,c; printf("n输入方程的系数a,b,c:n"); scanf("%f,%f,%f",&a,&b,&c); printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c); disc=b*b-4*a*c; printf("方程的解是:n"); if(disc>0) { great_than_zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else if(disc==0) { zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else { small_than_zero(a,b,c); printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);

C语言题库

C语言题库 1.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写, 则文件方式字符串应是(D)。 A、"rb+" B、"ab++" C、"ab" D、"wb+" 2.设有如下定义: struct sk {int a; float b;} data,*p; 若要使p指向data中的a域,正确的赋值语句是(C)。 A、p=(struct sk*) data.a; B、*p=data.a; C、p=&data.a; D、p=&data,a; 3.对结构体类型的变量的成员的访问,无论数据类型如何都可使用 的运算符是(B)。 A、& B、. C、* D、-> 4.下列关于指针定义的描述,错误的是(A)。 A、指针是一种变量,该变量用来存放某个变量的值 B、指针是一种变量,该变量用来存放某个变量的地址值 C、指针变量的类型与它所指向的变量类型一致 D、指针变量的命名规则与标识符相同 5.设有如下的程序段: char str[ ]="Hello"; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为(D ). A、不确定的值 B、'o'的地址 C、'o' D、'\0' 6.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是(D)。 A、&t[1] B、t[3] C、&t[3][2] D、t[2] 7.下列说法中正确的是(B ). A、函数调用不占运行时间,只占编译时间. B、宏替换不占运行时间,只占编译时间. C、有参数的宏定义,就是函数. D、在定义宏时,宏名与带参数的括弧之间可以加空格. 8.以下叙述中正确的是(C)。

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

C语言程序设计第四版第七章答案 谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C语言思考题

1、机器语言:机器语言及其指令是计算机能够直接识别的执行的一组二进制代码。一条机器指令通常由操作码和操作数两部分构成。 2、汇编指令:是机器语言的符号化表示MOV 3、汇编语言:由汇编指令、汇编伪指令及汇编语言的语法规则组成。 4、汇编语言源程序:用汇编语言编写的程序 5、汇编程序:把汇编语言源程序翻译成目标程序的加工程序MASM 6、二、十、十六进制转换(掌握<256)练习1:117=(1110101)B练习2:1000 1011 B=(139)D练习3:1011 1000 0000 0101 B=(B805)H 7、机器数:是指计算机中的数据,可以分为无符号数和有符号数字长为N位时无符号数表示范围0≤N≤2N-1 当N=8时0≤N≤255 8、原码(8位):最高位为符号位(正数用0表示,负数用1表示),其他位为数值位 如X=+45=+0010 1101B [X]原=0010 1101B 如X=-45=-0010 1101B [X]原=1010 1101B 9、补码(8位):正数的补码与原码相同,负数的补码是将符号位取1,数值位逐位取反,未位加1。如X=+45=+0010 1101B [X]补=0010 1101B 如X=-45=-0010 1101B [X]补=1101 0011B 10、补码运算:是指对一个补码表示的数按位求反后再在末尾加1,可以得到与此数相应的符号相反的数的补码。例、已知[117]补=0111 0101B,[-117]补=1000 1011B,对[117]补作补码运算。解:因为[117]补=0111 0101B,按位求反后得1000 1010B,末尾加1得1000 1011B=[-117]补。[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补 12、BCD码:BCD码用4位二进制数表示1位十进制数。常用8421BCD码例:写出十进制314所对应的BCD码 13、8086/8088CPU:16位微处理器和16位数据总线,20位地址总线(寻址空间为1MB)。8088微处理器内部16位数据,外部8位数据,也称准16位机。8086/8088CPU的组成(功能方面):运算器、控制器、寄存器组 14、寄存器是CPU内部临时存放数据的部件,速度比内存快。(1)数据寄存器4个16位寄存器AX,BX,CX,DX,每个寄存器还可以拆成2个8位寄存器使用。 AX累加器:算术运算寄存器,用于存放操作数或运算结果。I/O指令中通过AX与外部交换数据。在乘除运算中指定存放被乘数与被除数,系统功能调用号。AX累加器可以分为AH、AL分别使用。 BX基址寄存器:可作为通用寄存器使用。在计算内存地址是,常作基址寄存器,作为通用寄存器还可以分为BH、BL分别使用。 CX数据寄存器:可作为通用寄存器使用。在循环和串操作指令中作隐含计数器。作为通用寄存器还可以分为CH、CL分别使用。 DX数据寄存器:可作为通用寄存器使用。在I/O操作中,DX用来存放I/O端品地址。在乘除法运算中与AX组合一起存放双字型数据。作为通用寄存器还可以分为DH、DL 分别使用。 (2)变址寄存器(2 个16位):SI 源变址寄存器.DI 目的变址寄存器 BP基址寄存器:用于存放栈中的操作数的偏移地址。SP堆栈指针寄存器:用来指示栈顶的当前位置(偏移地址)。 IP 指令指针寄存器(程序计数器):用于存放下一条指令所在偏移地址。与CS配合,用来确定程序中下一条指令的物理地址。 15、PSW程序状态字寄存器(标志寄存器):8088微处理器使用16位中的9位设置了9个标志。标志位SF、OF、CF、ZF的含义0010 1001B+1110 1000B=1 0001 0001B CF=1 OF=0 SF=0 ZF=0 16、段地址寄存器:段表示一块内存空间(大小可变),最大为64K字节,最小为16字

C语言例题经典

51.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变,请编程。 #include void main() { char ch; ch=getchar(); if ((ch>=65)&&(ch<=90)) ch=ch+32; else if ((ch>=97)&&(ch<=122)) ch=ch-32; printf("%c\n",ch); } 52.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。 y=x*(x+2),2 void main() { float x,y; printf("输入X值:"); scanf("%f",&x); if (x<=-1) { y=x-1; printf ("Y=%6.2f\n",y); } else if (x<=2) { y=2*x; printf ("Y=%6.2f\n",y); } else if (x<=10) { y=x*(x+2); printf ("Y=%6.2f\n",y); } else printf("取值范围出错\n"); } 53.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。 y=0,x=a||x=-a; y=sqrt(a*a-x*x), -aa. #include #include void main() { float x,y,a; printf("输入A值[A>0]:"); scanf("%f",&a); printf("输入X值:"); scanf("%f",&x); if ((x==a)||(x==-a)) y=0; else if ((x-a)) y=sqrt(a*a-x*x); else if ((x<-a)||(x>a)) y=x;

C语言第七章复习题(不含答案)

1.下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2.不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b="Hello!"; (C)char b[10];strcpy(b,"Hello!"); (D)char b[10]="Hello!"; 3.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 4.以下程序的输出结果是( ) (A) 20 (B) 21 (C) 22 (D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf("%d\n",k); 5.以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); 6.下面程序运行的结果是( )。 (A) 2ba56 (B) 6521 (C) 6 (D) 62 main() { char ch[7]={“65ab21“}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 7.合法的数组定义是( )。 (A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5}; (C)char s[6]="string"; (D)char a[]={0,1,2,3,4,5}; 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后

C语言程序的设计试题库完整

一、选择题(每题1分,共20分) 1.C语言程序从main()函数开始执行,所以这个函数要写在(D )。 A.程序文件的开始B.程序文件的最后 C.它所调用的函数的前面D.程序文件的任何位置 2.下列方法中错误的是(D )。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 3.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 4.C语言中的简单数据类型包括(D )。 A.整型、实型、逻辑型B.整型、实型、逻辑型、字符型 C.整型、字符型、逻辑型D.整型、实型、字符型 5.下列可以正确表示字符型常量的是(A )。 A.’\t’B.”a”C.”\n”D.297 6.在C语言中,字符型数据所占的内存空间是(C )。 A.2个字节B.4字节C.1字节D.由用户自定义 7.若int类型数据占2个字节,则unsigned int类型数据的取值范围是(B )。 A.0~255 B.0~65535 C.-32768~32767 D.-256~255 8.若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为(D )。 A.float B.char C.int D.double 9.下列正确的预编译命令是(D )。 A.define PI 3.14159 B.#define P(a,b)=strcpy(a,b) C.#define stdio.h D.#define PI 3.14159 10.为表示逻辑表达式7979 )&&( X<90 ) B.( X>79 )!=( X<90 ) C.7979 )||( X<90 ) 11.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是(A )。 A.1 B.0 C.-1 D.出错

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言习题及参考答案

C语言习题集 习题一 一.填空题 1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。因此,( 函数) 是C程序的基本单位。 2.C程序注释是由( /*) 和( */ ) 所界定的文字信息组成的。3.函数体一般包括( 变量声明) 和( 语句) 。 二.判断题 1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。【错】 2.main函数必须写在一个C程序的最前面。【错】 3.一个C程序可以包含若干的函数。【对】 4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【对】 5.C程序的注释只能是一行。【错】 6.C程序的注释不能是中文文字信息。【错】 8.可以使用Visual C++ 6.来编译和连接一个C程序。【对】 9.可以使用Visual C++ 6.来运行一个C程序。【对】 10.可以使用Visual C++ 6.来实时调试(即动态调试)一个C程序。【对】三.简答题 1.写出一个C程序的基本结构。 2.简要叙述使用Visual C++ 6.0编译和运行一个程序的步骤。 四.编程题 1.提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:使用键盘上的一些符号)。 2.提高题:试编写一个C程序,输出如下信息。 ********************** *** @ @ *** *** @ *** ********************** 试试看,可以输出其他组合图案吗?

习题二 一.选择题 1、合法的字符常量是(ACD)。 A)…\t?B) “A” C)…a?D)?\x32? 2、合法的字符常量是( D) 。 A)…\084?B) …\84? C)…ab?D)?\x43? 3、(B)是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 4、在以下各组标识符中,合法的标识符是((4))。 (1)A)B01 B)table_1 C)0_t D)k% (2)A)Fast_ B)void C)pbl D) (3)A)xy_ B)longdouble C)*p D)CHAR ( 4 ) A) sj B) Int C)_xy D)w_y23 5、属于合法的C语言长整型常量的是(BD)。 A)5876273 B)0L C)2E10 D)(long)5876273 6、下面选项中,不是合法整型常量的是(B )。 A)160 B)-0xcdg C)-01 D)-0x48a 7、判断int x = 0xaffbc;x的结果是(D)。 A)赋值非法B)溢出C)为affb D)为affbc 8、下面选项中,均是合法浮点数的是(B)。 A)+1e+1 B)-.60 C)123e D)-e3 A)5e-9.4 B)12e-4 C)1.2e-.4 D).8e-4 A)03e2 B)-8e5 C)+2e-1 D)5.e-0 9、在C语言中,要求参加运算的数必须时整数的运算符是(C)。 A)/ B)* C)% D) = 10、在C语言中,字符型数据在内存中以(D)形式存放。 A)原码B)BCD码C)反码D)ASCII码 11、下列语句中,符合语法的赋值语句是(C)。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=(7+b,b++,a+7);D)a=7+b,c=a+7; 12、是非法的C语言转义字符(B )。 A)…\b?B)…\0xf? C)…\037? D)… \?? 13、对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( B )是正确的。A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 14、与代数式(x*y)/(u*v) 不等价的C语言表达式是(A )。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 15、在C语言中,数字029是一个(D)。

C语言课后习题

习题 第三章 #include #include int main() { int d,p; double r,a,m; scanf("%d %d %lf",&d,&p,&r); a=(p/(p-d*r)); m=log(a)/log(1+r); if(p>0&&d>0) { if(d<=m*p) printf("%.1f",m); else printf("God"); } else printf("0.0"); return 0; } 勾股数 #include int main() { int a,b,c,n; scanf("%d",&n); for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 第四章 计算分段函数值 #include int main() { float x,y; scanf("%f",&x); if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else if(x>=10) y=3*x-11; printf("%.2f",y); return 0; } 找出三个数中最大的数 #include int main() { int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; if(c>max) max=c; printf("%d",max); return 0; } 10844成绩等级评分 #include int main() { int x; scanf("%d",&x); if(x>=0&&x<=100) { switch(x/10) { case 10:

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

相关主题
文本预览
相关文档 最新文档