)。 A. 4
B. 3
C. 2
D. 1
11、表达式18/4*sqrt(4.0)/8值的数据类型为( )。
A. int
B. float
C. double
D. 不确定
12、在C语言中,不正确的int类型的常数是( )。
A. 32768
B. 0
C. 037
D. 0xAF
13、语句:printf("%d",(a=2)&&(b= -2);的输出结果是( )。
A. 无输出
B. 结果不确定
C. -1
D. 1
14、下列描述中不正确的是( )。
A. 字符型数组中可以存放字符串
B. 可以对字符型数组进行整体输入、输出
C. 可以对整型数组进行整体输入、输出
D. 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
15、以下选项中不能作为C 语言合法常量的是( )。
A. 'cd'
B. 0.1e+6
C. "\\a"
D. '\\011'
16、以下叙述中错误的是( )。
A.用户定义的函数中可以没有return 语句
B.用户定义的函数中可以有多个return 语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有return 语句,则应当定义函数为void 类型
D.函数的return 语句中可以没有表达式
17、若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m 数组元素的引用中错误的是
( )。
A.m[--i]
B.m[2*2]
C.m[m[0]]
D.m[m[i]]
18、已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A.kk>='A'&&kk<='Z'
B.!(kk>='A'‖kk<='Z')
C.(kk+32)>='a'&&(kk+32)<='z'
D.isalpha(kk)&&(kk<91)
19、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
20、以下叙述中错误的是
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
21、以下描述正确的是( )。
A.C程序的执行是从main函数开始,到本程序的最后一个函数结束
B.C程序的执行是从第一个函数开始,到本程序的最后一个函数结束
C.C程序的执行是从main函数开始,到本程序的main函数结束
D.C程序的执行是从第一个函数开始,到本程序的main函数结束
二、将下列程序补充完整。(每空2.5分,共30分)
1.输入三角形的三条边a,b,c,求三角形的面积。
#include <math.h>
#include <stdio.h>
void main( )
{ float a,b,c,d,t,s;
printf(“请输入三角形的三条边:”);
scanf(“%f,%f,%f”,&a,&b,&c);
if ( 1 )
printf(“%f%f%f不能构成三角形!”, a,b,c);
else {t=( 2 )/2;
s=sqr(t*(t-a)*(t-b)*(t-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,area=%7.2f\\n”, a,b,c,s);}
}
(1) ____a+b<=c&&a+c<=b&&b+c<=a______________________
(2) ____a+b+c_______________________________________
2.输入两个整数,n1,n2(要求n1#include <stdio.h>
void main()
{int n1,n2,j=0,n=0;
printf(“\\n请输入两个数:”);
scanf ( ( 3 ) );
if(n1>n2){ ( 4 ) }
for(j=n1;j<=n2,j++)
if ( 5 ) n++;
printf(“a=%5d,b=%5d,n=%5d\\n”n1,n2,n);}
(3)______"%d %d", &n1, &n2___
(4) _____printf("输出的值非法!enter任意键退出\\n");getch();exit(0);___
(5)_____ j%3==0__________________________________
3.输入两个整数,n1,n2(要求n1 #include <math.h>
#include <stdio.h>
int prime (int x)
{ int k;
for ( 6 )
if (x%k==0) return(0);
return(1)
}
void main()
{int a,b,j,n=0;
printf(“\\n请输入两个数:”);
scanf(“%d,%d”,&a,&b);
if(a>b){ (7) }
for(j=a;j<=b,j++)
if( (8) ) n++;
printf(“a=%4d,b=%4d,n=%4d\\n”a,b,n);}
(6) _k=2;k<=x-1;k++
(7) _printf("输出的值非法!enter任意键退出\\n");getch();exit(0);
(8) prime(j)___________________________________ __
4.编写程序,输入n个整数(n由键盘输入),统计其中正数、负数和零的个数。
#include <stdio.h>
void main( )
{int x,n,k,k1=0,k2=0,k3=0;
printf(“input n=:”);
( 9 )
for(k=0;k{scanf(“%d”,&x);
if (x<0)k1++;
( 10 ) ;
else k3++;
printf(“k1=%4d,k2=%4d,k3=%4d\\n”,k1,k2,k3)
}}
(9)scanf (" %d", &n);
(10)else if (x==0) k2++;
5.设计一个程序完成以下功能:若从键盘输入英文字母,则原样输出;输入其他字符不理会,直到输入Q键结束.
#include <stdio.h>
void main( )
{ char ch;
do{ch=getchar();
if ( (11) )break;
else if( (12) )putchar(ch);
}while(1);
}
(11) ch=='q' || ch=='Q'
(12) ch>='a'&& ch<='z' || ch>='A' && ch<='Z'
三、编程题(从下面的试题中选择其中一题上机完成,两题均作答的,按其中一题给分,30分)
1.编写程序,将将矩阵 9 7 5 倒置为 9 3 4
3 1 2 7 1 6
4 6 8 5 2 8
2.求元素个数为10的一维数组元素中的最大值、最小值和平均值。
3.编写函数:输入两个正整数m,n,求它们的最大公约数和最小公倍数。
编程题1:
/*
file name: code1.c
description:编写程序,将将矩阵 9 7 5 倒置为 9 3 4
3 1 2 7 1 6
4 6 8 5 2 8
date: 2012-12-26 by fxk
*/
#include
int main (void)
{
int i=0, j=0, a[3][3]={{9,7,5},{3,1,2},{4,6,8}}, b[3][3]={0};
/*输出Arr a 并赋值*/
printf ("array a:\\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf ("%d\", a[i][j]);
b[j][i] = a[i][j];
}
putchar('\\n');
}
putchar('\\n');
/*输出Arr b:*/
printf ("array b:\\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%d\", b[i][j]);
}
putchar('\\n');
}
return 0;
}
编程题2:
/*
file name: code2.c
description: 求元素个数为10的一维数组元素中的最大值、最小值和平均值
date: 2012-12-26 by fxk
*/
#include
#define N 10
int max_date (int arr[N]);
int min_date (int arr[N]);
float avg_date (int arr[N]);
int main (void)
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int max = 0, min = 0;
float avg = 0;
/*求最大值并输出*/
max = max_date (arr);
printf ("max=%d\\n", max);
/*求最小值并输出*/
min = min_date (arr);
printf ("min=%d\\n", min);
/*求平均值并输出*/
avg = avg_date (arr);
printf ("avg=%.2f\\n", avg);
return 0;
}
int max_date (int arr[N])
{
int m, i;
m = arr[0];
for (i=1; i < N; i++)
{
if (m < arr[i])
{
m = arr[i];
}
}
return m;
}
int min_date (int arr[N])
{
int m, i;
m = arr[0];
for (i=1; i < N; i++)
{
if (m > arr[i])
{
m = arr[i];
}
}
return m;
}
float avg_date (int arr[N])
{
int i = 0;
float avg = 0, sum = 0;
for (i=0; i {
sum += arr[i];
}
avg = sum / N;
return avg;
}
编程题3:
/*
file name: code3.c
description: 输入两个正整数m,n,求它们的最大公约数和最小公倍数
date: 2012-12-26 by fxk
*/