(1)一个C程序由多个函数组成,且必须有一个main( )函数,要求main( )函数必须放到最前面。( x )
(2)所有的变量在使用前都必须予以声明。( v )
(3)C的double类型数据可以精确表示任何实数。( x )
(4)a是一维数组名,数组元素a[1]还可以写作“*(a++)”。( x )
(5)break语句只能用于switch语句和循环控制语句中。 ( v )
(6)C语言中的数组下标从0开始,当引数组元素超过所定义的范围,将出来编译错误。( x )
(7)一个for循环语句,一定可以使用while语句来替换。( v )
(8)函数原型为“void sort(float a[], int n)”,调用该函数时,形参数组a被创建,实参数组各元素的值被复制到a数组各元素中。( x )
(9) 一个结构类型的变量,在内存中占的字节数,为各成员数据类型所占内存的总和。( v )
例如:
struct example
{ int I;
float f;
char s[20];
} x ;
(10)、语句 y=*(p++); 和 y=(*p)++; 是等价的。 ( x )
(1) C语言的基本数据类型分为 型、 型、 型和
枚举型。
(2)、A不等于B在C语言中应使用表达式 来表示。
(3)写出数学表达式d3e2a53ebd268115860a0b8209c6c939.png
(4)写出判断字符变量ch是(’0’~’9’)数字符的C表达式 ________。
(5) 若s=’d’,执行语句s=(s>=’a’&&s<=’z’)?s-32:s;后,字符变量s的值为 __d__。
(6)int b=5;执行赋值表达式a=5+(b+=6) 后,a、b的值依次是_16___11_。
(7) 在C语言程序中,如果对函数f的类型未加显说明,则函数f的隐含类型是_int___。
(8)定义语为char a[10] ="john\0ni";,语句printf("%d",strlen(a));输出结果是__4________。
(9)所有的程序都可以用三种控制结构编写。这三种控制结构是 、
和 。
(10)要使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8,用下面的语句输入:
scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);
键盘上输入数据的正确形式为: 10 20Aa 1.5 -3.75 2.2,67.8回车
(11)函数调用时,若形、实参数均为数组,则其传递方式是______________。
(12)表达式(5==5==5)的值为____0__________。
(13)设int x[]={1,2,3,4},y,*p=&x[1]; 则执行语句y=(*- -p)++;后变量y的值为__1_______。
(14)‘a’和“a”是有区别的,‘a’在内存中占_1___个字节,“a”在内存中占__2__个字节。
(1)算法具有五个特性,以下选项中不属于算法特性的是( b )
(A)有穷性 (B)简洁性 ( C)可行性 (D)确定性
(2)以下选项中可作为C语言合法常量的是( b )
(A)-80. (B)-080 (C)-8e1.0 (D)-80.0e
(3)以下不能定义为用户标识符是 ( d )
(A) Main (B)_0 (C) _int (D)sizeof
(4)在下列各程序段中,没有构成死循环的是( a )
(A)int i=100; (B) int y=1;
while (1) for(; y<=10;y++)
{i=i%100+1; y- -;
if(i=100) break;
}
(C)int k=1000; (D)int s=36;
do{++k} while (k>=1000) ; while(s);- -s;
(5)设变量定义为“int a[4]={1,3,7,9}, *p=a+2;”,则*p的值是( a )。
(A)7 (B)3 (C)4 (D)&a[0]+2
(6)下面程序段求两个数中的大数,( d )不正确。
(A)max =x>y?x:y; (B)if (x>y) max = x; else max=y;
(C)max=x; (D)if (y>=x ) max=y;
if (y>=x) max =y; max = x;
(7)给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为 b
(A)数组X和数组Y等价 (B) 数组X的长度大于数组Y的长度
(C)数组x和数组Y的长度相同 (D)数组X的长度小于数组Y的长度
(8))对于以下的变量定义,表达式___ ___是正确的。
struct node
{ char s[10];
int k;
} p[4];
(A)p->k=2 (B)p[0].s=“abc” (C)p[0]->k=2 (D)p->s=‘a’
(9)说明语句int (*p) ( ); 的含义是 c 。
A) p是一个指向一维数组的指针变量
B) p是指针变量,它指向一个整型数据的指针
C) p是一个指向函数的指针变量,该函数的返回值为整型数
D) p是一个指指针函数,该函数的返回值为指针值
(10)下列函数fun的功能是 。
fun(char *s)
word/media/image2.gif{
char *t=s;
while(*t++) ;
return (t-s-1);
}
A) 求两个串的长度差 B) 比较两个串的大小
C) 将串s复制到串t中 D) 求s所指向的字符串长度
1.下程序是使用递减法求两自然数m、n的最大公约数。
void main()
{ int m,n, div;
scanf(“%d,%d”,&m,&n);
div=m;
if (n
while ( m%div !=0 || n%div !=0 )
_______(2)________;
printf ( “最大公约数=%d\n”,div);
}
(1) (A) div=0; (B)div=n; (C){div=m; m=n;n=div;} (D)m=n;
(2) (A) div++; (B)++div; (C)div--; (D)div=m-n;
2. 下面的程序是打印所有的水仙花数。水仙花数是指一个3位数,其各位数字立方和等于该数本身。如:153=13+53+33
main()
{ int i,temp,bai,shi,ge;
printf("\n all the shuixianhuashu are:\n");
for(i=100;i<1000;i++) /*三位数的范围:100~999*/
{ bai=i/100, /*分别求出百位、十位、个位 上的数字*/
shi= ------(3)----- ;
ge=i%10;
temp=------(4)-------
if(----(5)-------) printf("%5d",i);
}
}
(3) (A) i/10 %10 (B)i%10/10
(C)i-i\10*10 (D)(i-bai*100)%10
(4) (A)bai^3+shi^3+ge^3 (B)bai*100+shi*10+ge
(C)bai*bai*bai+shi*shi*shi+ge*ge*ge; (D)bai,shi,ge
(5)(A) i==temp (B) i!=temp (C)i>=temp (D)i=temp
3.输入1 个正整数 n, 计算并输出 s 的前n项的和。
S = 1 -1/2 + 1/3 - 1/4 + 1/5 -1/6 + ……1/n
void main( )
{ int k, flag=1, n;
float s;
-----(6)----;
scanf("%d", &n);
for (k=1 ; k<=n; k++)
{ s=-----(7)----;
-----(8)----;
}
printf("sum=%f\n", s);
}
(6) (A) n=0 (B) s=0
(C)k=1 (D)printf(“Enter a number\n”)
(7) (A) s+flag/n (B) s+1/k
(C)s+1.0*flag/k (D)flag/k
(8) (A) n++ (B) flag=-flag (C)flag++ (D)k++;
4. 函数sort使用选择法将一维整型数组中个元素按值从大到小排序。
void sort(int a[],int n)
{ int i,j,k ,temp;
for(i=0;i
{ k=i;
for(j=i+1;j
if(-----(9)---- ) k=j;
temp=a[k]; -----(10)---- ;
}
}
(9) (A) a[i]>a[j] (B) a[j]>a[j+1] (C)a[k]>a[j] (D)a[k]
(10)(A) a[k]=a[i]; a[i]=temp (B)a[i]=a[k]; a[k]=temp
(C)flag++ (D)k++;
(认真阅读程序,写出程序运行结果,注意输出数据的格式)
(1)在执行以下程序时,如果从键盘上输入:ABC123def<回车>,则输出为 :
void main( )
{ char ch;
while((ch=getchar( ))!=’\n’)
{ if(ch>=’A’ && ch<=’Z’)ch=ch+32;
else if(ch>=’a’ && ch<’z’)ch=ch-32;
printf(“%c”,ch);
}
printf(“\n”);
}
2、下列程序的输出结果是 。
main()
{ int a[ ]={1,2,3,4},i,j,s=0;
j=1;
for (i=3; i>=0;i--)
{ s=s+a[i]*j;
j=j*10;
}
printf(“s=%d\n”,s);
}
3、以下程序运行后的输出结果是
f(int a)
{ auto b=0;
static c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
main()
{
int a=2,i;
for( i=0; i<3; i++)
printf(“%d ”, f(a));
}
4、以下程序运行后的输出结果是
#include "stdio.h"
fun(char *w)
{char t,*s1,*s2;
for (s1=w,s2=w+strlen(s1)-1;s1
{t=*s1;
*s1=*s2;
*s2=t;
}
}
main()
{char *p="12345";
fun(p);
puts(p);
}
5、以下程序的执行结果是 。
#include
main( )
{
char ch[2][5]={"6934","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for (i=0;i<2;i++)
for (j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
1.求出10至1000之内能同时被2、3、7整除的数,并输出。(7分)
2、编一程序,输入15个整数存入一维数组,再按逆序重新存放后输出(用函数完成逆置,形参用指针变量完成)。(8分)
答 卷
一、判断题(每题1分,共10分)
(1) 整型、实型、字符型 (2) 0
(3) (b-sqrt(b*b-4*a*c))/(2*a) (4) 结束本次循环
(5) ‘D’ (6) 16 ,11
(7) 整型(int) (8) 4
(9) 顺序结构、选择结构、循环结构 (10) 10 0Aa 1.5 -3.75 ,67.8
(11) 地址传递 (12) 0
(13) 1 (14) 1
(15) 1 2
五 、程序阅读题(每题4分,共20分)
六、程序设计题(2题,共15分)参考答案
1、main( )
{ int i;
for (i=10;i<=1000;i++)
if (i%3==0&&i%7==0&& i%2==0) printf(“%3d”,i);
}
2、void inv(int *x, int n)
{int *p,m,t,*i,*j;
m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for (;i<=p;i++,j--)
{t=*i;
*i=*j;
*j=t;
}
}
main()
{int i,arr[10],*p=arr;
printf("The original array:\n");
for (i=0;i<10;i++,p++)
scanf("%d",p);
printf("\n");
p=arr;
inv(p,10);
printf("The array has been inverted:\n");
for (p=arr;p
printf("%d ",*p);
printf("\n");
}
本文来源:https://www.2haoxitong.net/k/doc/8bf8f2cf30b765ce0508763231126edb6e1a76ce.html
文档为doc格式