浙江理工大学
          C程序设计        试题(七)
一、判断题(判断下列各题,正确的在题后括号内打“√”,错的打“×”。每小题1分,共10分)
1.C语言源程序是可以用来直接运行的程序。(    )
2.C语言中以%x开头的数是十六进制整数。(    )
3.C程序中的变量,必须先定义(声明),才能使用。(    )
4.在C程序中,9ab是非法的用户标识符。(    )
5.C语句必须用一个分号作为结束。(    )
6.do¬¬_while语句构成的循环不能用break语句退出。(    )
7.scanf函数是C语言的标准输入函数。(    )
8.C程序的main函数不能有参数。(    )
9.在函数内部定义的变量称为局部变量。(    )
10.用# include包含的头文件的后缀必须是.h。(    )
二、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共20分)
1.C语言程序的三种基本结构是(    )结构、选择结构和循环结构。
A.顺序 B.递归
C.转移 D.嵌套
2.以下选项中正确的实型常量是(    )。
A. 0 B. -10
C. 0.19 D. 1.9×102
3.在C语言程序中,用关键字(    )定义长整型变量。
A. long B. float
C. double D. char
4.十进制数8的八进制数是(    )。
A. 11 B. 010
C. 8 D. 08
5.(    )不是合法的C语句。
A. {int j;j++;} B. {int j;j++;;}
C. {int j;;j++;} D. {float j=0;j++;}
6.若变量a,b已正确定义并赋值,符合C语言语法的表达式是(    )。
A. a=b=a+1 B. a≤b
C. a≥b D. a≠b
7.对以下的scanf语句,正确的输入方式是(    )。
int k1,k2,k3,k4;
scanf(″%d%d%d%d″,&k1,&k2,&k3,&k4);
A. 1020 30,40 B. 10 20 30 40
C. 10,20 3040 D. 10 20 30,40
8.表达式!x等效于(    )。
A. x==1 B. x==0
C. x!=1 D. x!=0
9.要定义字符型变量a并赋初值,(    )是正确的。
A. char a=’3’; B. char a=”3”;
C. char a=%; D. char a=*;
10.以下函数调用语句中,含有的实参个数是(    )。
calc(exp1,(exp3,exp4,exp5));
A. 1 B. 2
C. 3 D. 4
11.下列语句定义整型指针p1、p2,(    )是正确的。
A.int p1,p2; B. int *p1,*p2;
C. int *p1,p2; D. int**p1,p2;
12.若变量已正确定义并且指针p已经指向变量x,则*&x相当于(    )。
A. x B. p
C. &x D. &*p
13.数组定义为“int a[4];”,表达式(    )是错误的。
A. *a B. a[0]
C. a D. a++
14.数组定义为int a[2][3]={1,2,3,4,5,6},数组元素(    )的值为1。
A. a[1][2] B. a[1][1]
C. a[2][3] D. a[0][0]
15.表达式strlen(”hello”)的值是(    )。
A. 4 B. 5
C. 6 D. 7
16.要调用字符串函数时,在# include命令行中应包含(    )。
A.”stdio.h” B.”string.h”
C.”math.h” D.”ctype.h”
17.若变量已正确定义且k的值是4,计算表达式(j=k++)后,(    )是正确的。
A. j=4,k=5 B. j=4,k=4
C. j=5,k=4 D. j=5,k=5
18.C语言中运算对象必须是整型的运算符是(    )。
A. % B. /
C. ! D. **
19.若有char fname[]=″infile.dat″;,则为读而打开文本文件infile.dat的正确写法是(    )。
A. fopen(infile.dat,″r″)
B. fopen(″infile.dat″,″r″)
C. fopen(fname,″r″)
D. fopen(″fname″,″r″)
20.下列运算符中,优先级从高到低依次为(    )。
A. &&,!,|| B. ||,&&,!
C. &&,||,! D. !,&&,||
三、填空题(每小题2分,共20分)
1.表达式(4/5*(float)3+(float)3*4/5)的值为______。
2.下列程序段的输出结果是______。
# include <stdio.h>
printf(″%d″,NULL);
3.表达式((4|1)&3)的值为______。
4.下列程序段的输出结果是______。
# define M(x,y) (x*y)
printf(″%d″,M(2,3+4));
5.下列程序段的输出结果是______。
char c=’a’;int k=4;
switch(c){
case ‘a’: k=1;
case ‘b’: k=2;
case ‘c’: k=3;
}
printf(″%d″,k);
6.下列程序段的输出结果是______。
int k=10;
if (k<0) printf(“%d”,k<0);
else printf(“%d”,k>=0);
7.下列程序段的输出结果是______。
int x=3;
if (x=5) x++;
printf(″%d\n″,x);
8.以下程序段的输出结果是______。
int k,sum=0;
for(k=5;k<10;k++)
sum+=k;
printf(”%d”,sum);
9.对于以下递归函数f,调用f(4)的返回值是______。
int f(int n)
{
if (n) return f(n-1)+n;
else return n;
}
10.下列程序段的输出结果是______。
static char s[]=″window″;
printf(″%s″,s+3);
四、阅读理解题(阅读下列程序或程序段,写出运行结果,每小题4分,共20分)
1.以下程序段的输出结果是______。
int k=10;
while (k=0) k=k-1;
printf(″%d #″,k);
2.以下程序的输出结果是______。
# include <stdio.h>
main()
{ int k;
for (k=4;k>=1;k--)fun();
}
fun()
{ static int m=0;
m++;
printf(”%d#”,m);
}
3.以下程序的输出结果是______。
# include<stdio.h>
int c;
func(int *a,int b)
{ c=(*a)*b; *a=b-1;b++;
return(*a+b+1);
}
main()
{ int a=4,b=2,p=0;
p=func(&b,a);
printf(″%d,%d,%d,%d#″,a,b,c,p);
}
4.若输入afds2008b3c<回车>,则以下程序的输出结果是______。
# include<stdio.h>
void main()
{
int n;
char ch;
do{
ch=getchar();
}while(ch<′0′||ch>′7′);
n=0;
do{
n++;
ch=getchar();
}while(ch>=′0′&&ch<=′7′);
printf(″%d#″,n);
}
5.若head是node类型的全程量,以head为头指针的链表各节点的值如下图所示,则调用fun(head)返回值是______。
struct node{
int num;
struct node *next;
}
int fun(struct node *p)
{ int k=0;
struct node *pp=p;
while (pp!=NULL){
if((pp->num)%2==0) k+=pp->num;
pp=pp->next;
}
return(k);
}
五、程序填空题(阅读程序,在______处填入适当的内容,使程序变得完整,第1小题6分,第2小题4分,共10分)
1.读入n(n<=10)个整数并放入一个数组r中,统计并输出比相邻元素小的数组元素的个数。
# include ″stdio.h″
void main()
{
int k,count,n,r[10];
scanf(″%d″,&n);
for(k=0;k<n;k++)
scanf(″%d″,&r[k]);
______;
for(k=1;k<n-1;k++)
printf函数括号内参数的构成解说if(______)count++;
if(______)count++;
if(r[n-1]<r[n-2])count++;
printf(″count=%d\n″,count);
}
2.统计当前目录下文本文件中数字字符(‘0’到‘9’)出现的次数。
# include <stdio.h>
void main()
{ ______;
char ch;int count=0;
if((fp=fopen(″″,″r″))==NULL){
printf(″不能打开文件!\n″);
exit(0);
}
while((ch=______(fp))!=EOF)
if(ch<=’9’&&ch>=’0’)count++;
printf(″%d″,count);
fclose(fp);
}
六、编程题(每小题10分,共20分)
1.sum=1+3+5+7+9+……,输入正整数n,求sum的前n项和。
2.输入一个正整数m,如果m是素数,输出“Yes”,否则,输出“No”。要求定义并调用函数isprime(x)来判断x是否为素数(素数:除了1和此数本身之外,不能被其它整数整除的自然数,1不是素数,2是素数),在下面空出的位置完成程序,不能定义新的变量,可不用已定义的某些变量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。