1.
以下叙述中正确的是( )。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求行内只能写一个语句
C,C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中
2.设有如下程序段
char s [20]=" Bejing ",* p ;
p = s ;
则执行 p =s ;语句后,以下叙述正确的是()
A 可以用* p 表示 s [0]
B . s 数组中元素的个数和 p 所指字符串长度相等
C . s 和 p 都是指针变量
D .数组 s 中的内容和指针变量 p 中的内容相等
3.有定义语句: char s [10];,若要从终端给 s 输入5个字符,错误的输入语句是
A . gets (& s [0]);
B . scanf ("% s ", s +1);
C . gets ( s );
D . scanf ("% s ", s [1]);
4.当输入 quert ?输出结果是什么?
# include < stdio . h >
void main()
{
char c ;
while (( c - getchar ()!='?')
putchar (++ c );
}
答案:CAD 取地址符
quert?
5.任意大于2的偶数可以分解为两个素数之和,请验证。
# include < stdio . h >
void main ()
{
int n ,n1,n2;
int i ;
printf ("输入一个偶数");
scanf ("% d ",& n );
for (n1=2;n1<= n /2;n1++)
{
n2= n - nl ;
for ( i =2; i < nl ; i ++)//判断 nl 是否为素数
{
if (n1%i==0)
break ;
}
if ( i < nl )//如果 nl 不是素数,则不用判断n2是否为素数.
continue ;
for ( i =2; i <n2; i ++)//进一步判断n2是否为素数.
if (n2%i=0)
break ;
if ( i >=n2)/如果n2是素数,则跳出循环.
break ;
printf ("% d 可分解为% d +% d \ n ", n , nl ,n2);
}
6.请编写函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一
个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,一维数组中的数据是:2223445666677899101010。
删除后,数组中的内容应该是:2345678910。
# include < stdio . h >
# define N 80
int fun ( int a [], int n )
{
int i ,j=1,k=a[0];
for ( i =1; i <n,i++)
if ( k != a [ i ]){
a [ j ++]= a [ i ];
k = a [ i ];
}
return j
}
void main ()
}
int a [ N ]=(2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i , n =20;
printf (" The original data :\ n ");
for ( i =0; i < n ; i ++)
printf ("%3d", a [ i ]);
n = fun ( a , n );
printf (" n nThe data after deleted : in ");
for ( i =0; i < n ; i ++) printf ("%3d", a [ i ]);
printf (" n ");
}