欢迎光临
我们一直在努力

国开电大《C语言程序设计》综合练习题【标准答案】

可做奥鹏国开全部院校作业论文!答案请添加qq:599792888 或 微信:1095258436

综合练习

1.C语言中的循环类语句有3条,它们是(  )。

2.C语言中的跳转类语句有四条,它们是goto,return和(  )。

3.当不需要函数返回任何值时,则所使用的返回类型为(  )。

4.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(  )。

5.在一个程序文件的开始,若需要使用一个包含命令包含一个头文件时,则命令标识符为(  )。

6.在#include预处理命令中,不可以包含(  )。

7.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据占用的字符位置个数为(  )。

8.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其小数部分占用的字符位置个数为(  )。

9.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其整数部分占用的字符位置个数为(  )。

10.在scanf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输入的数据类型为(  )。

11.在scanf()函数调用的格式字符串中,若使用格式符为“%Lf”,则对应输入的数据类型为(  )。

12.每个C程序文件在编译时可能出现有严重性错误,其对应的标识符号为(  )。

13.在VC++环境下,为运行一个程序而建立的工作区文件的扩展名为(  )。

1.在C语言中,作为标识符的第一个字符可以是英文字母、数字或下划线字符。

2.在C语言中,标识符中的非首字符可以是英文字母、数字或下划线字符。

3.当需要在程序文件中引入用户定义的头文件时,使用的不是#include命令。

4.使用#include命令只能包含头文件,不能包含其他任何文件。

5.注释语句的内容只会出现在源程序文件中,不会出现在编译后而生成的目标代码文件中。

6.一条注释语句的最后必须使用分号结束。

7.源程序文件被编译成目标文件后,其目标文件中也存在有对应的注释内容。

8.源程序文件被编译成目标文件后,源程序文件中的注释语句仍然存在。

9.在一条注释语句中,除了注释内容外,不需要使用任何特定的标记符。

10.多行注释语句的开始和结束标记符可以互换使用。

11.在执行“printf(“%5d”,x);”语句时,其输出的x的值所占用的显示宽度将大于等于5个字符位置。

12.在执行“printf(“%6d”,x);”语句时,其输出的x的值所占用的显示宽度将小于6个字符位置。

13.在执行“printf(“%8.2f”,x);”语句时,其输出的x的值所占用的显示宽度将大于等于8个字符位置。

14.在“scanf(“%d %d”,&x,&y);”语句中,x和y变量均为整数类型。

15.在“scanf(“%s”,x);”语句中,x变量不是字符指针类型。

16.在“scanf(“%d-%d=%d”,&x,&y,&z);”语句中,有语法错误。

17.在C语言程序上机操作的过程中,连接程序的操作步骤之前是编译程序。

18.在C语言程序上机操作的过程中,需要对每个用户头文件进行单独的编译操作。

19.在C语言程序上机操作的过程中,不能够对用户头文件进行单独的编译操作。

int类型的长度为(  )。

常数-4.25的数据类型为(  )。

一个有符号字符类型的值域范围是(  )。

字符串“Its\40\n”的长度为(  )。

实数340.25对应的规格化浮点数为(  )。

要利用const保留字定义整型常量ABC的值为10,则对应的定义语句为(  )。

要利用#define命令定义ABC常量的值为100,则对应的命令格式为(  )。

下列数值中最大值是(  )。

在下面运算符中,优先级最高的是(    )。国开答案请进:opzy.net或请联系微信:1095258436

设有语句序列为“int a=12; a+=a*a;”,则执行结束后,a的值为(  )。

在C语言中,用于比较大小的关系运算符的总数为(  )。

x>0 && y<=5的相反表达式为(  )。

假定x是一个逻辑量,则(x && !x)和(x || !x)的值分别为(    )。

假定x=4.6,则函数ceil(x)的值为(    )。

表达式floor(2.3457*100+0.5)/100的值为(    )。

常数3.26e4是双精度浮点数。

浮点数只有单精度表示,没有双精度表示。

定点数包括单精度定点数和双精度定点数两种。

定义符号常量只有一种方法,就是采用预处理命令#define的方法。

使用const语句定义一个符号常量时,则必须对它同时进行初始化。

在一条变量定义语句中,定义的变量和赋给它的初值之间只能使用等号(=)。

假定x=5,则表达式2+x++的值为7。

表达式(int)14.6%5的值为0。

表达式x=x+1表示成增量表达式为x++。

假定x=5,则执行“a=(x?10:20);”语句后a的值为10。

逻辑表达式(a>b || b==5)的相反表达式为(a>b && b==5)。

在C语言中,求一个整数的绝对值的数学函数为abs(x)。

在C语言中,退出程序运行的系统函数为exit()。

若x的值为15,则执行“if(x>10) x++; else x–;”语句后,x的值为(   )。

若x的值为-10,则执行“if(!x) x++; else x–;”语句后,x的值为(    )。

若x的值为10,则执行“switch(x%3){case0: x++; case 1:x++; case 2: x++;}”语句后,x的值为(    )。

若x的值为10,则执行“switch(x%3){case0: x++; break; case 1:x++; default: x++;}”语句后,x的值为(    )。

若n的值为10,则执行“for(i=1;i<n; i++) S;”语句的过程中,表达式i=1共被执行的次数为(    )。

若n的值为10,则执行“for(i=0;; i++) if(i>n/3) break;”语句后,i的值为(    )。

若n的值为10,则执行“for(i=1;i<n; i++) S;”语句的过程中,表达式i++共被执行的次数为(    )。

若n的值为10,则执行“for(i=0;i<n; i++) for(j=i; j<n; j++) S;”语句后,内层循环体S语句的执行总次数为(    )。

若n的值为10,则执行“while(n–>0)s+=n;”语句的过程中,循环体被执行的次数为(    )。

若n的值为5,s的值为0,则执行“while(n–>0) s+=n;”语句后,s的值为(    )。

在下列的语句中,必须以分号作为结束的语句是(    )。

若n的值为5,s的值为0,则执行“do s+=n–; while(n>0);”语句后,s的值为(   )。

要结束任一种循环语句或switch语句的执行,则在其中使用的语句为(    )。

在if语句中,必须带有else子句,不能省略它。

在for循环语句的头部,for后面括号内共有3个表达式位置。

for循环语句不能够被转换为while循环语句。

while循环语句中的循环体可能不会被执行。

while循环语句的循环体,只能是复合语句,不能是简单语句。

do-while循环语句中的循环体可能不会被执行。

do-while循环语句的循环体,只能是复合语句,不能是简单语句。

do-while循环语句是以循环体结尾的。

break语句可以使用在switch语句中。

return语句中可以带有返回表达式。

continue只能使用在任一种循环语句的循环体中。

#include<stdio.h>

void main() {

int a=5,b=8,c=6,d=15,x,y;

if(a>=b) x=a; else x=b;

if(c>=d) y=c; else y=d;

if(x>=y) printf(“%d\n”,x);

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

}

#include<stdio.h>

void main() {

int x=5,y=8,z=12;

if(x>y && x>z) printf(“%d\n”,x);

else if(y>x && y>z) printf(“%d\n”,y);

else printf(“%d\n”,z);

}

#include<stdio.h>

void main() {

int a=5,b=8,c;

if(3*a>2*b) c=2*a+3*b;

else if(a==b) c=a*a+b*b;

else c=a*b+3;

printf(“c=%d\n”,c);

}

#include<stdio.h>

void main() {

int x=5,y=0;

switch(2*x-3) {

case 4: y+=x;

case 7: y+=2*x+1;

case 10: y+=3*x;

}

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

}

#include<stdio.h>

void main() {

char ch;

int a,b,c;

scanf(“%c”,&ch);

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

switch(ch) {

case ‘+’: c=a+b; break;

case ‘-‘: c=a-b; break;

case ‘*’: c=a*b; break;

case ‘/’: c=a/b; break;

default: printf(“Error!\n”);

}

printf(“%d%c%d=%d\n”,a,ch,b,c);

}

#include<stdio.h>

void main() {

int i,s=0;

for(i=16; i>0; i-=2)

if(i%3==0 || i%4==0) s+=i;

printf(“s=%d\n”,s);

}

#include<stdio.h>

void main() {

int i,x,y,s=0;

scanf(“%d %d”,&x,&y);

if(x>y) {i=x; x=y; y=i;}

for(i=x; i<=y; i++)

if(i%2==1) s+=i*i;

printf(“s=%d\n”,s);

}

#include<stdio.h>

const int N=100;

void main() {

int a,b;

for(a=2; a<=N; a++) {

for(b=2; b*b<=a; b++)

if(a%b==0) break;

if(b*b>a) printf(“%d “,a);

}

}

#include<stdio.h>

void main() {

int i=0, s=0;

while(s<50) {i+=2; s+=i*i;}

printf(“s=%d\n”,s);

}

#include<stdio.h>

void main() {

int x,p=2;

scanf(“%d”,&x);

while(x>=p)

if(x%p==0) {printf(“%d=%d*%d\n”,x,p,x/p); break;}

else p++;

}

#include<stdio.h>

void main() {

int x,y,a,p=1;

scanf(“%d %d”,&x,&y);

if(x<y){a=x; x=y; y=a;}

if(x%y==0) {printf(“%d\n”, y); return;}

a=2;

while(y>=a)

if(x%a==0 && y%a==0) {x=x/a; y=y/a; p*=a;}

else a++;

printf(“%d\n”,p);

}

#include<stdio.h>

void main() {

int x=36,y=48,z;

do {z=x%y; x=y; y=z;} while(y>0);

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

}

#include<stdio.h>

void main() {

int x,i=0,s=0;

scanf(“%d”,&x);

do {i+=2; s+=i*i;}while(s<x);

printf(“n=%d\n”,i-2);

}

#include<stdio.h>

void main() {

int x=37,k=2;

do {if(x%k==0) break; k++;} while(k*k<=x);

if(k*k>x) printf(“Yes!\n”);

else printf(“No!\n”);

}

假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为(    )。

假定一维数组的定义为“char* a[8];”,则该数组所占用的存储空间的字节数为(    )。

假定有一个定义语句为“int a[10]={3,4,2,8,6};”,则元素a[5]的值为(    )。

在下面的一维数组定义语句中,有语法错误的是(    )。

假定二维数组的定义语句为“int a[3][5];”,则该数组所含元素的个数为(    )。

假定有一个定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(    )。

对于一个长度为n的字符串,保存它至少需要占用的存储字节数为(    )。

对于一个二维字符数组a[M][N],存储每个字符串的长度至多为(    )。

若需要比较两个字符串的大小,则选用的函数是(    )。

一维数组元素带有两个下标。

对于二维数组元素,数组名后使用两对中括号。

在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。

在一维数组的定义语句中,数组名前为元素类型关键字。

在二维数组的定义语句中,数组名后带有两对圆括号。

假定二维数组的定义语句为“double a[M][N];”,则每个数组元素的列下标取值范围在1~N之间。

使用“typedef char BB[10];”语句定义标识符BB为含有10个元素的一维字符数组。

使用“typedef char BB[10][50];”语句定义标识符BB为含有10行50列共500个元素的二维字符数组类型。

一个二维字符数组a[10][20]中存储每个字符串的最大长度为19。

#include<stdio.h>

void main() {

int a[8]={10,8,6,15,9,21,8,16};

int i,x=a[0];

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

if(a>x) x=a;

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

}

#include<stdio.h>

void main() {

int a[8]={12,15,20,8,5,9,16,10};

int i,s[3]={0};

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

s[a%3]+=a;

printf(“%d %d %d\n”,s[0],s[1],s[2]);

}

#include<stdio.h>

void main() {

int a[3][3]={{3,8,6},{5,9,2},{8,5,12}};

int i,j,b[3]={0};

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

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

b[j]+=a[j];

for(j=0; j<3; j++) printf(“%d “,b[j]);

}

#include<stdio.h>

void main() {

int a[3][4]={{60,75,83,52},{76,94,88,35},{80,74,46,90}};

int i,j,x=a[0][0],y=-1;

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

for(j=0; j<4; j++)

if(a[j]>x) {y=x; x=a[j];}

else if(a[j]>y) y=a[j];

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

}

#include<stdio.h>

#include<string.h>

void main() {

char a[10],b[10],c[10];

int c1,c2,c3;

scanf(“%s %s %s”,a,b,c);

c1=strlen(a); c2=strlen(b); c3=strlen(c);

if(c1>c2 && c1>c3) printf(“%s “,a);

else if(c2>c1 && c2>c3) printf(“%s “,b);

else printf(“%s “,c);

}

#include<stdio.h>

void main() {

char a[]=”abcdbfbgacd”;

int i=0,i1=0,i2=0,i3=0;

for(i=0; a!=’\0′; i++) {

switch(a) {

case ‘a’: i1++; break;

case ‘b’: i2++; break;

case ‘c’: i3++; break;

}

}

printf(“%d %d %d %d\n”,i1,i2,i3,i);

}

#include<stdio.h>

void main() {

char a[]=”12342345342356″;

int i,c[7]={0};

for(i=0; a!=’\0′; i++)

c[a-48]++;  //48为数字字符0的ASCII码

for(i=1; i<7; i++) printf(“%d “,c);

}

一个指针指向一个数据对象,它保存着该数据对象的地址,若数据对象为DataType类型,则该指针的类型为(    )。

NULL是一个符号常量,通常作为空指针值,它的取值为(    )。

若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(    )。

若要定义整型指针p并初始指向x,则所使用的定义语句为(    )。

假定p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为(    )。

假定p是一个指针变量,则该变量的地址表示为(    )。

已知“char*s=”Hello world!”;”,要使变量p指向s所指向的同一个字符串,则p应定义为(    )。

假定a为一个数组名,则下面表达式中错误的是(    )。

已知“charb[10]=”12345”, *p=b;”,则*(p+2)的值为(   )。

已知“int a[6][5];”,则元素a[2][4]的地址比该数组的首地址大(    )。

要使p指向二维整型数组a[10][20],p应定义为(   )。

执行“int *p=malloc(sizeof(double)*2);”语句后得到的动态存储空间的字节数为(    )。

利用动态存储分配创建具有10个字节的一维数组空间的正确语句是(    )。

在定义指针变量的语句中,对指针变量不允许赋初值。

在定义指针变量的语句“int *p,pp;”中,p和pp具有相同的数据类型。

在语句“typedefint* inPointer;”中,把标识符inPointer定义为int*类型。

假定a是一个一维数组,则a+i的值与&a的值相等。

已知“int a[10], *p=a;”,则进行*p++运算是不允许的。

假定a是一个二维数组,则表达式*(a[j]+i)所对应的元素为a[j]。

假定a是一个二维数组,则数组名a的值和a[0]的值相等。

进行动态存储分配的calloc()函数带有一个参数。

用于释放动态存储空间的函数为free,调研它需要带有一个参数。

假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i个字节。

执行下面程序的输出结果为回答

#include<stdio.h>

void main() {

int a[8];

int s1=0,s2=0,*p;

printf(“请输入8个整数:”);

for(p=a; p<a+8; p++) scanf(“%d”, p);

for(p=a; p<a+8; p++) {

if(*p%2) s1+=*p;

else s2+=*p;

}

printf(“%d %d\n”,s1,s2);

}

#include<stdio.h>

void main() {

chara[5][10]={“12345″,”asde45″,”wer45t”,”zxc12″,”89uy78″};

char *p;

int i,c=0,k=0;

for(i=0; i<5; i++) {

p=&a[0];

while(*p!=’\0′) {

if(*p>=’0′ &&*p<=’9′) k++;

c++; p++;

}

}

printf(“%d %d\n”,k,c);

}

#include<stdio.h>

#include<stdlib.h>

void main() {

int i,n,*a;

do scanf(“%d”,&n); while(n<2);

a=calloc(n,sizeof(int));

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

if(i%2) a=2*n+i; else a=2*n-i;

for(i=0; i<n; i++) printf(“%d\n”,a);

}

#include<stdio.h>

#include<stdlib.h>

void main() {

int i=0,j,n=10,*a;

a=calloc(10,sizeof(int));

while(i<n) {

a=rand()%30+10;  //每次得到一个随机整数

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

if(a==a[j]) break;

if(i==j) i++;

}

for(i=0; i<n; i++) printf(“%d\n”,a);

}

在下面的函数声明语句中存在着语法错误的是(    )。

如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为(    )。

假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为(    )。

假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是(    )。

假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为(    )。

假定一个函数的参数说明为const int a,则在函数体中不能进行的操作是(    )。

在函数体中定义的变量具有(    )。

在函数外定义的变量,若带有作用域关键字static,则它具有(    )。

在函数体中定义一个静态变量时,选用的存储属性关键字为(    )。

假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为(    )。

函数定义格式中的参数表被称为实参表。

函数定义格式中的参数表被称为形参表。

函数调用参数表中的每个实参可以是表达式。

对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为0。

在函数体中定义一个变量时,若不选用任何存储属性关键字进行标识,则它为静态变量。

在C语言程序中,主函数也可以成为递归函数。

在C语言程序中,除主函数外的任何用户定义的函数都可以是递归函数。

void xk9(int x) {

char a[10];

int i=0,rem;

do {

rem=x%8; x=x/8;

a=48+rem;      //’0′字符的ASCII码为48

i++;

} while(x!=0);

while(i>0) printf(“%c”,a[–i]);

printf(“\n”);

}

int wr1(int a[], int n, int x) {

int i;

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

if(a==x) return 1;

return 0;

}

void wr4(int a[], int b[], int n) {

int i;

b[0]=b[1]=0;

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

if(a%2==0) b[0]++; else b[1]++;

}

#include<stdio.h>

int wr11(int a[], int n, int k) {

int i,c=0;

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

if(a>=k) c++;

return c;

}

void main() {

int a[9]={9,5,7,12,4,8,15,10,15};

int c=wr11(a,9,8);

printf(“%d\n”,c);

}

#include<stdio.h>

int c=15;

void main() {

int a=10, b=20;

{ int b=a+15; printf(“%d “,a+b+c);}

printf(“%d\n”,a+b+c);

}

#include<stdio.h>

void fn2(int* a, int* b) {

int x=*a;

*a=*b; *b=x;

}

void main() {

int x=15, y=26;

fn2(&x,&y);

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

}

#include<stdio.h>

int fn1() {

int x=0;

static int y=0;

x++; y++;

return x+y;

}

void main() {

int x1=fn1();

int x2=fn1();

printf(“%d %d\n”,x1, x2);

}

int ff3(int m, int n, int b) {

if(m<b || n<b) return 1;

else if(m%b==0 && n%b==0) return b*ff3(m/b,n/b,b);

else return回答

;

}

编写一个函数,求出一维整型数组a[n]中所有元素的平方之和。

int fun1(int a[], int n);

编写一个函数,分别求出一维整型数组a[n]中所有奇数元素的个数和所有偶数元素的个数,假定分别用c1和c2所指的对象保存。

void fun2(int a[], int n, int* c1, int* c2);

编写一个非递归函数过程,求出两个自然数m和n的最大公约数。

int fun5(int m, int n);

 

赞(0)
未经允许不得转载:奥鹏作业网 » 国开电大《C语言程序设计》综合练习题【标准答案】

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址