最新C++程序设计基础课后答案--第四章

最新C++程序设计基础课后答案--第四章
最新C++程序设计基础课后答案--第四章

4.1 阅读下列程序,写出执行结果

1.#include

void main()

{ int i, conut=0, sum=0 ;

float average ;

int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ;

for( i=0; i<10; i++ )

{ if( a[i] % 2 == 0 ) continue ;

sum += a[ i ] ;

conut ++ ;

}

average = sum / conut ;

cout << "conut = " << conut << '\t' << "average = " << average << endl ;

}

2.#include

void main()

{ int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;

int *p = a , sum = 0 ;

for( ; p

if( *p % 2 == 0 ) sum += *p ;

cout << "sum = " << sum << endl ;

}

3.const int n = 5 ;

#include

#include

void main()

{ int a[n][n]={ 0 }, i, j, k ;

for( k=1 , i=0 ; i

for( j=i; j>= 0; j-- , k++ )

a[j][i - j ] = k ;

for( i=0 ; i

{ for( j=0; j

cout << setw( 3 ) << a[i][j] ;

cout << endl ;

}

}

4.int f(int [],int);

#include

void main()

{ int a[] = { -1, 3, 5, -7, 9, -11 } ;

cout << f( a, 6 ) << endl ;

}

int f( int a[], int size )

{ int i, t=1 ;

for( i=0 ; i

if( a[i]>0 ) t *= a[i] ;

return t;

}

5.int f( int [][3], int, int ) ;

#include

void main()

{ int a[][3] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 } ;

cout << f( a, 3, 3 ) << endl ;

}

int f( int a[][3], int row, int col )

{ int i, j, t=1 ;

for( i=0; i

for( j=0; j

{ a[i][j] ++ ;

if( i == j ) t *= a[i][j] ;

}

return t ;

}

6.#include

void test1( int *a1 )

{ a1 = new int( 5 ) ;

cout << "*a1 = " << *a1 << endl ;

}

void test2(int * & a2)

{ a2 = new int( 5 ) ;

cout << "*a2 = " << *a2 << endl ;

}

void main()

{ int *p = new int( 1 ) ;

test1( p ) ;

cout << "test1: *p1 = " << *p << endl ;

test2( p ) ;

cout << "test2: *p2 = " << *p << endl ;

}

7.#include

void main()

{ char s[] = "abccda" ;

int i ; char c ;

for( i = 1 ; ( c=s[i] ) != '\0'; i ++ )

{ switch( c )

{ case 'a' : cout << '%' ; continue ;

case 'b' : cout << '$' ; break ;

case 'c' : cout << '*' ; break ;

case 'd' : continue ;

}

cout << '#' << endl ;

}

}

8.#include

void main()

{ char *str[] = { "c++", "basic", "pascal" } ;

char **p ;

int i ;

p = str ;

for( i=0 ; i<3 ; i++ )

cout << *( p+i ) << endl ;

}

9.#include

void main()

{ char s1[] = "Fortran" , s2[] = "Foxpro" ;

char *p , *q ;

p = s1 ; q = s2 ;

while( *p && *q )

{ if ( *p == *q )

cout << *p ;

p ++ ;

q ++ ;

}

cout << endl ;

}

10.#include

#include

void main()

{ char str[][10] = { "vb", "pascal", "c++" }, s[10] ;

strcpy( s , ( strcmp( str[0] , str[1] ) < 0 str[0] : str[1] ) ) ;

if( strcmp( str[2], s ) < 0 ) strcpy( s, str[2] ) ;

cout << s << endl ;

}

4.2 思考题

1.数组说明语句要向编译器提供什么信息?写出一维数组、二维数组说明语句的形式。

2.数组名、数组元素的区别是什么?归纳一维数组元素地址、元素值不同的表示形式。有说明

int aa [3], *pa=aa;

使用aa或pa,写出3个以上与aa[2] 等价的表达式。

3.要把一维数组 int a[n*n] 的元素传送到二维数组 int b[n][n] 中,即在程序中要执行

b[i][j]=a[k];

写出k->i,j的下标变换公式,并用程序验证之。

4.有以下函数

void query()

{ int *p;

p=new int[3];

//……

delete []p;

p=new double[5];

//……

delete []p;

}

出现了编译错误。请分析错误的原因,并把上述程序补充完整,上机验证你的判断。

5.有以下程序根据输入值,调用函数create建立并初始化动态数组,令a[i]=i。该程序运行后,主函数不能返回期望值。请分析程序的错误原因并修改之。

#include

void create(int *, int);

void main()

{ int *a, len;

cin>>len;

create(a,len);

for( int i = 0; i

cout << endl;

delete []a;

}

void create(int *ap, int n)

{ ap=new int[n];

for(int i=0; i

}

1.数组说明语句要向编译器提供什么信息?请写出一维数组、二维数组说明语句的形式。

【答案】

数组说明语句要向编译器提供数组名(标识符),数组元素的类型、数组长度(元素的个数)等信息。一维数组说明语句为:类型数组名[表达式]

二维数组说明语句为:类型数组名[表达式1] [表达式2]

2.数组名、数组元素的区别是什么?归纳一维数组元素地址、元素值不同的表示形式。若有说明int aa [3], *pa=aa;

请使用aa或pa,写出3个以上与aa[2] 等价的表达式。

【答案】

数组名是一个标识符,执行代码中代表数组的地址,即指向数组起始位置的指针;而数组元素是下标变量,性质相当于普通变量。

对一维数组aa第i个元素的地址可以表示为: &aa[i] aa+i;

对一维数组aa第i个元素的值可以表示为:a[i] *(a+i);

与aa[2]等价的表达式:

*(aa+2) *(&a[2]) *(pa+2) pa[2]

3.要把一维数组 int a[m*n] 的元素传送到二维数组 int b[m][n] 中,即在程序中要执行b[i][j]=a[k];

请写出k→i,j的下标变换公式,并用程序验证。

【答案】

转换公式 i=k/n j=k%n

验证程序:

#include

using namespace std;

int main()

{ const int M=3,N=4;

int k,a[M*N]={1,2,3,4,5,6,7,8,9,10,11,12},b[M][N];

int i,j;

cout<<"array a:"<

for(k=0;k

b[k/N][k%N]=a[k];

for(k=0;k

cout<

cout<<"**After convert**"<

cout<<"array b:"<

for(i=0;i

{ for(j=0;j

cout<

}

}

4.有以下函数

void query()

{ int *p;

p=new int[3];

//……

delete []p;

p=new double[5];

//……

delete []p;

}

出现了编译错误。请分析错误的原因,并把上述程序补充完整,上机验证你的判断。

【答案】

在语句p=new double[5]; 中企图把动态浮点型数组的地址写入整型指针p,造成错误。错误为error C2440: “=”: 无法从“double *”转换为“int *”。

改正方法:增加一个double*q指针。

void query()

{ int *p;

p=new int[3];

delete [] p;

//……

double *q;

q=new double[5];

//……

delete []q;

}

5.有以下程序根据输入值,设计功能是调用函数create建立并初始化动态数组,令a[i]=i。但该程序运行后不能得到期望结果,请分析程序的错误原因并修改之。

#include

using namespace std;

void create(int *, int);

int main()

{ int *a = NULL, len;

cin>>len;

create(a,len);

for( int i = 0; i< len; i++ ) cout << a[i] << " ";

cout << endl;

delete []a;

a = NULL ;

}

void create(int *ap, int n)

{ ap=new int[n];

for(int i=0; i

}

【答案】

函数create中,指针参数int*ap是地址值的参数。调用函数时接受实际参数a的地址值作为初制值。ap仅是局部变量,ap=new int[n]获得新的地址值,函数执行完毕返回,ap被释放,完全与实际参数ap无关。程序没有编译错误,但main不能获得动态数组。修改方法是把ap改为指针引用参数。

void create(int *&,int); //函数原型声明,使用引用参数

void create(int *&ap,int n) //函数定义

{ ap=new int[n];

for(int i=0;i

}

4.3 编程题

1.已知求成绩的平均值和均方差公式: ,,其中n为学生人数,为第i个学生成绩。求某班学生的平均成绩和均方差。

答案 4.3-1

#include

#include

void main()

{ double s[] = { 76, 85, 54, 77, 93, 83, 90, 67, 81, 65 };

double sum1=0,sum2=0,ave,dev;

int n, i;

n = sizeof( s )/sizeof( double ); //求数组元素的个数

for( i=0; i

sum1 += s[i];

ave = sum1/n;

for( i=0; i

sum2 += pow( s[i]-ave, 2 );

dev = sqrt( sum2/n );

cout << "rve=" << ave << '\t' << "dev=" << dev << endl;

}

2.用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出其中的素数。

答案4.3-2

#include

#include

#include

#include

void main()

{ int a[10],i,j; long m;

srand( time(0) ); //为随机数生成器设置种子值

for( i=0; i<10; i++ )

{ l:a[i] = rand(); //产生随机数存放到数组中

if ( a[i]<10 || a[i]>=100 ) goto l;

for( j=0; j

if( a[i]==a[j] ) goto l;

}

for( i=0; i<10; i++ )

cout << a[i] << " ";

cout << endl;

for( i=0; i<10; i++ )

{ double m=sqrt( a[i] );

for( j=2; j<=m; j++)

if( a[i] % j == 0 )break;

if( j>m )

cout << a[i] << " ";

}

cout << "是素数!" << endl;

}

3.将一组数据从大到小排列后输出,要求显示每个元素及它们在原数组中的下标。

答案 4.3-3

#include

void main()

{ int a[] = { 38, 6, 29, 1, 25, 20, 6, 32, 78, 10 };

int index[10];

int i,j,temp;

for( i=0; i<10; i++ )

index[i] = i;

for( i=0; i<=8; i++ )

for( j=i+1; j<=9; j++ )

if( a[i] < a[j] )

{ temp = a[i]; a[i] = a[j]; a[j] = temp;

temp = index[i]; index[i] = index[j]; index[j] = temp;

}

for( i=0; i<10; i++ )

cout << a[i] << '\t' << index[i] << endl;

}

4.从键盘上输入一个正整数,判别它是否为回文数。所谓回文数是指正读和反读都一样的数。例如,123321是回文数。

答案 4.3-4

在程序中,首先拆分整数的每位数字按顺序存放到一个一维数组中。然后用两个变量记录数组元素最大和最小的下标值,它们是两个高端和低端指针。在循环中,比较这两个下标指示对称位置的元素,并使两个指针同时向中间移动(i++, j--)。只要发现一个不相等的元素,表示该整数不是回文数。如果直至i==j,都没有发现不相等的元素,则该整数是回文数。

#include

void main()

{ int b[10], i, j, k, flag ;

long num, n ;

cout << "num=" ; cin >> num;

k = 0;

n = num;

do //拆分整数,把各数字放入数组b

{ b[k++] = n % 10;

n = n/10;

} while( n != 0);

flag=1; //判断标志

i=0; j=k-1; //设置指示下标的指针

while(i

if( b[i++] != b[j--] ) //对称位置元素不相等

{ flag = 0;

break ;

}

if( flag ) cout << num << "是回文数!" << endl;

else cout << num << "不是回文数!" << endl;

}

本题判断一个整数是否为回文数,可以不用数组拆分数字,直接用高位与低位数字比较。还可以把程序写成递归方式。

5.把两个升序的整型数组合并为一个升序数组。设计好你的算法,以得到较高的运行效率。

答案 4.3-5

把两个长度为m和n的有序数组a、b归并为长度m+n的有序数组c,可以利用原数组a、b的有序性,分别用指针i和j指示数组a和b的当前元素下标,当a[i]

#include

void main()

{ int a[4] = { 1, 2, 5, 7 };

int b[8] = { 3, 4, 8, 8, 9, 10, 11, 12 };

int c[12],i,j,k;

i = j = k = 0;

while( i<4 && j<8 )

if( a[i] > b[j] ) //当a[i]>b[j],把b[i]写入数组c

{ c[k] = b[j]; k++; j++; }

else //当a[i]<=b[j],把a[i]写入数组c

{ c[k] = a[i]; k++; i++; }

while( i<4 )

{ c[k] = a[i]; i++; k++; } //把数组a的剩余元素写入数组c

while( j<8 )

{ c[k] = b[j]; k++; j++; } //把数组b的剩余元素写入数组c

for( i=0; i

cout << c[i] << " ";

cout << endl;

}

6. 输入一个星期几号,输出相应的英文单词。要求使用指针数组实现。

答案 4.3-6

#include

void main()

{ char *weekday[7] = { "sunday", "monday", "tuesday",

"wednesday", "thursday", "friday", "saturday" };

int d;

cout << "please input week day: ";

cin >> d;

if( d>=0 && d<=6 )cout << d << "---" << *( weekday + d ) <

else cout << "input error!" << endl;

}

7.编写函数:

(1)在一个二维数组中形成如以下形式的n阶矩阵:

(2)去掉靠边元素,生成新的n-2阶矩阵;

(3)求矩阵主对角线下元素之和;

(4)以方阵形式输出数组。

在main函数中调用以上函数进行测试。

答案 4.3-7

由于本题没有给定矩阵的阶数n,从而应按输入的要求建立动态数组。

需注意的是:使用C++的new运算只能申请一维动态数组。因此,在程序中要把一维数组的访问形式变换成二维数组的访问形式。

另外,使用new运算返回的地址保存在指针变量中,即动态数组名是间接地址。为了使函数正确地在动态数组上操作,在程序中的函数需使用指针引用参数。

#include

void create( int *&app, int n );

void del( int *&app, int *&bpp, int n );

int maindiagonal( int *&app, int n );

void output( int *&app, int );

void main()

{ int *ap = NULL, *bp = NULL, n;

cout << "输入矩阵的阶:";

cin >> n;

create( ap,n );

cout << "\n形成矩阵:\n";

output( ap, n );

cout << "去掉靠边元素生成的矩阵:\n";

del( ap,bp,n );

output( bp,n-2 );

cout << "主对角线元素之和:" << maindiagonal( ap, n ) <

//形成n阶矩阵函数

void create( int * &app, int n )

{ app = new int[ n*n ];

int i,j,k = 0;

for( i=0; i

for( j=0; j

{ if( i<=j ) app[k] = 1;

else app[k] = i-j+1;

k++;

}

}

//去掉靠边元素生成n-2阶矩阵函数

void del( int *&app, int *&bpp, int n )

{ int i,j,k = 0;

bpp = new int[ ( n-2 )*( n-2 ) ];

for ( i=0; i

{ for( j=0; j

if ( i && j && i

{ bpp[k]= *( app + i*n + j );

k++;

}

}

}

//求主对角线元素之和函数

int maindiagonal( int *&app, int n ) { int i,j,k = 0,sum = 0;

for ( i=0; i

{ for( j=0; j

if( i==j )

sum += *( app + i*n + j);

}

return sum;

}

//以方阵的形式输出数组函数

void output( int *&app, int n )

{ int i,j;

for ( i=0; i

{ for( j=0; j

cout << *( app + i*n + j) << '\t'; cout<

}

cout<

}

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application得入口方法main()得检验: main()方法得参数名就是否可以改变? main()方法得参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法得参数名可以改变.(2)main()方法得参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗? 参考答案:当一个程序没有main()方法就是,就是可以编译通过得,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? bytei =127; bytej = 128; longl1 = 999999; long l2= 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与longl2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 =3、5; float f2 = 3.5f; 参考答案:java中浮点型得数据在不声明得情况下都就是double型得,如果要表示一个数据就是float型得,必须在数据后面加上“F”或“f”;因此,floatf1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型得,但就是int类型无法转换为char类型得;(2)int 可以转换为double类型得,但就是double类型无法转换为int 类型得。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1)4+5 == 6*2 ?(2) (4=5)/6?? (3)9%2*7/3>17(4)(4+5)<=6/3 ? (5) 4+5%3!=7-2????(6)4+5/6〉=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法得. 7、下列()就是合法得Java标识符。 (1)Counter1 ??(2)$index, (3) name-7 ??(4)_byte

程序设计基础试题_03_答案.doc

学院领导 审批并签名 A / B卷 广州大学 学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查)学院系专业班级学号姓名 分数 评分 一:选择题(每题3分,共60分) (1)若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为(A)

A) double B) float C) int D) char (2)设a=1,b=2,c=3,d=4,则表达式:a=10 or a<=0 B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││ a<=0 (7)下列可 作为C语言赋值语句的是(C) A) x=3,y=5 B) a=b=6 C) i--; D) y=int(x); (8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输 入值: scanf(i=%d,f=%f,&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为(A) A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100y=765.12 (9)给出以下定义: char x[ ]=abcdefg;

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

《计算机程序设计基础》课后练习题参考答案

《计算机程序设计基础》课后练习题1 一.判断题 (1)(错)事件过程由某个用户事件或系统事件触发执行,但不能被其他过程调用。 (2)(错)若X=2, Y=5,则表达式 Y-2>X AND X+2>Y 的结果为:True。 (3)(错)常量是指在程序运行过程中其值可以改变的那些量。 (4)(错,timer没有)VB工具箱中的所有控件都具有宽度(Width)和高度(Height)属 性。 (5)(错)定义变量:Dim max,min as Single , 则max 和 min 的数据类型均为Single。 (6)(对)如果创建的菜单项的标题是一个减号“-”,则该菜单项显示为一条分隔线。 (7)(错)标准模块文件的扩展名是“*.VBP”。 (8)(错,都不能)定时器控件可以响应Click事件,但不能响应DbClick事件。 (9)(错)在默认情况下,数组下标下界的缺省值为1。 (10)(对)在使用字体对话框时,需要对其Flags属性先进行相应设置。 二.单选题 (11)在Visual Basic中,表示鼠标单击事件的是 C 。 A)Activate B)DoubleClick C)Click D)MouseDown (12)用于设置计时器时间间隔的属性是 A 。 A)Interval B)Name C)Left D)Top (13)函数Int(10*Rnd)是在 D 范围内的整数。 A)[1,10] B)[1,10] C) [0,9) D)[0,9] (14)Select case语句结构的结尾应使用 D 。 A)End B) End Case C) End Sub D) End Select (15)改变了容器的坐标系后,该容器的 A 属性值不会改变。 A)left B)scaleleft C)scaletop D)scalewidth (16)执行下列语句后,列表框中各表项顺序为 D List1.Clear For i=1 to 4 : List1.AddItem i-1,0 :Next i A)B)C)D) (17)输入对话框InputBox的返回值的类型是 A 。

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

程序设计基础练习题(全答案版)

《程序设计基础——C#.NET》练习 参考答案: 一、选择题 https://www.360docs.net/doc/382685167.html,的目的就是将____A____作为新一代操作系统的基础,对互联网的设计思想进行扩展。A.互联网 B. Windows C. C# D. 网络操作系统 2.假设变量x的值为10,要输出x值,下列正确的语句是__C__。 A.System.Console.writeline(“x”) B. System.Cosole.WriteLine(“x”) C. System.Console.WriteLine(“x={0}”,x) D. System.Console.WriteLine(“x={x}”) 3.要退出应用程序的执行,应执行下列的_A___语句。 A. Application.Exit(); B. Application.Exit; C. Application.Close(); D. Application.Close; 4.关于C#程序的书写,下列不正确的说法是__D________。 A.区分大小写 B.一行可以写多条语句 C.一条语句可以写成多行 D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法 5. 在C#语言中,下列能够作为变量名的是__C__。 A.if B. 3ab C. b_3a D. a-bc 7. 能正确表示逻辑关系“a≥5或a≤0”的C#语言表达方式是__D__。 A.a>=5 or a<=0 B. a>=5|a<=0 C. a>=5&&a<=0 D. a>=5||a<=0 8. 以下程序的输出结果是___C_____。 A. 5 B. 4 C. 6 D. 不确定 9. If语句后面的表达式应该是__A___。 A.逻辑表达式 B. 条件表达式 C. 算术表达式 D. 任意表达式10.有如下程序:

西交大《程序设计基础》试题及答案

西交大《程序设计基础》试题及答案 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.int a[10];合法的数组元素的最小下标值为()。A:10 B:9 C:1 D:0 答案:D 2.以下运算符中优先级最低的是()。A:&& B:& C:|| D:| 答案:C 3.若使用一维数组名作函数实参,则以下正确的说法是()。A:必须在主调函数中说明此数组的大小B:实参数组类型与形参数组类型可以不匹配C:在被调用函数中,不需要考虑形参数组的大小D:实参数组名与形参数组名必须一致答案:A 4.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。 A:一个整数,代表要读入的数据项总数B:一个文件指针,指向要读的文件C:一个指针,指向要读入数据的存放地址D:一个存储区,存放要读的数据项答案:C 5.对以下说明语句int a[10]={6,7,8,9,10}; 的正确理解是()。A:将5个初值依次赋给a[1]至a[5] B:将5个初值依次赋给a[0]至a[4] C:将5个初值依次赋给a[6]至a[10] D:因为数组长度与初值的个数不相同,所以此语句不正确答案:B 6.下列程序的输出结果是()。main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case case } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\} A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 答案:B 7.下列程序的输出结果为()。main() {int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\ 0:a++;break; 1:b++;break; } A:27.000000 B:27.500000 C:28.000000 D:28.500000 答案:A 8.若k为int型变量,则以下程序段的执行结果是()。k=-8567; printf(\A:格式描述符不合

Visual Basic 程序设计基础教程-课后习题答案-范荣强

第一章程序与编程环境 一、填空题 1. 工程,Form_Load 2. 事件(触发) 3. 窗体,Name 4. CurrentX, CurrentY 5. maxButton, BorderStyle = 1 or 3 or 4 or 5 6. Alignment, 空缺,AutoSize 7. Style, LoadPicture 8. Line, Shape 9. 重画10. FillStyle ll. MultiLine, maxLength, Locked 12. Font 13. sub, 对象名,事件名14. 方法,Object.Method, text1.setfocus() 15. Name, minButtom, CurrentX(Y), Caption 16. Interval, Enable 17. timer, Interval, ms(毫秒) 18. Mouse Down, Click, LoastFocus 19. .Frm, .Frx, .bas. cls. Vbp 20. 注释, “Rem 语句”或者“’语句” 第二章数据的类型、表示以及运算 一、请指出下列哪些是VB的合法常量,并说明原因 (1)√(2)X 常量不能加类型说明符号改成123.4 (3)X与上题类似,如果是常量,则类型说明符放在后面(4)√等价于2E3 (5) √(6)√等于十进制的4113 (7)X 如果是16进制要写&符号(8)X 指数不能为小数(9)X 月份超过12,日超过31 (10)√(11)√(12)√等价于上一题(13)X 8进制数每一位不能超过8 (14)√(15)X 变量,常量要为基本数据类型的值(16)√ 二、找出合法变量 (1)√(2)√如果与控件Label1同在一个应用程序里面,该变量会屏蔽掉控件Label1 (3) X 保留字(4)√(5)X 变量不能以数字开头(6)变量不能有小数点 (7)√(8)√数组变量(9)X保留字(10)√可以,但rnd()不可以,rnd()是函数 (11) √(12)√(13)√(14)X ’符号表示注释(15)X 这是表达式,不是变量(16)X 同上,是表达式 三、指出下列数据x,y,z的声明是否正确,如果正确请指明其类型 (1)√ x--long, y—variant, z—integer (2) √ x—long, y—long, z—integer (3) √ x—double, y—double, z—integer (4) X 变量x &中间不能有空格 (5)√自动转换成字符串 (6)X 变量声明不能直接赋值 (7)√ (8)√自动转换成字符串 (9)X 常量不能把函数写上去 (10)√ 四、写出下列表达式的结果 (1)1 (2) 1 (3)false (4) ab12 (5)123 (6)出错,加法表达式中如果有一个是数值类型,则“+”表示加号,而不是字符的链接符号(7)False (8)true (9) true (10) false 默认转换成相同类型(数值),建议这里把2改成D试试 (P.S. 布尔类型TRUE = -1, FALSE = 0; 优先顺序:^(乘方)→-(求负)→*、/→\(整除)→MOD→+、-) 五、写出下列函数的结果

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

相关文档
最新文档