谁有C语言试题,给小弟一份,谢啦

 我来答
k040624
2011-06-11 · 超过19用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:32.3万
展开全部
一、 单项选择题(每小题2分,共40分) 将正确选项涂写在答题纸相应位置上。
1.在下列标识符中,哪个是不合法的_____
A)pAd B)scanf C)abc+ D)list
2.(4+5)*3*(5/2)的结果是______
A)67 B)67.5 C)68 D)69
3.不正确的转义字符是_____
A)'\'' B)'\\' C)'\0' D)'\0FFF'
4.在C语言中,int型数据在内存中以_____形式存放
A)补码 B)BCD码 C)反吗 D)原码
5.设整型变量x的值为5,则表达式(x++)+(x++)+(x++)的值是____
A)24 B)20 C)15 D)25
1. A B C D 2. A B C D 3. A B C D 4. A B C D 5.A B C D
6.switch(exp)
{ case n1:语句块1;
case n2:语句块2;
…………
case nk:语句块k;
default:语句块k+1;
}
正确的叙述是_____
A)n1~nk只能是数值型常数 B)n1~nk只能是字符型常数
C)n1~nk可以是变量 D)n1~nk可以是常量表达式
7.以下不是无限循环的语句是_____
A)for(x=1; x>0; x++);
B)for(;; x++=1);
C)while(2>3){ x++; }
D)for(i=10; ; i--)sum+=i;
6. A B C D 7. A B C D 8. A B C D 9. A B C D 10.A B C D
8.若有函数调用语句:fun(a,(x,y),fun(n,d,(a,b)));则在此函数调用语句中实参的个数是_____
A)3 B)4 C)5 D)6
9.以下对c语言函数的描述中,正确的是_____
A)C语言的函数即可以嵌套定义又可以递归调用。
B)C程序由一个或一个以上的函数组成。
C)函数必须有返回值
D)所有函数必须在同一个程序文件中定义。
10.以下程序的输出结果是_____
A)1 2 3 4 5 B)5 4 3 2 1 C)3 1 2 3 4 D)3 5 7 4 5
#include <stdio.h>
void func(int *s)
{ static int j;
do{
s[j]+=s[j+1];
}while (++j<2);
}
main()
{ int k,a[10]={1,2,3,4,5};
for (k=1; k<3; k++)
func(a);
for (k=0; k<5; k++)
printf("%2d",a[k]);
printf("\n");
}
11.A B C D 12.A B C D 13.A B C D 14.A B C D 15.A B C D
11.以下叙述正确的是_____
A)函数调用必须在函数的定义之后
B)float类型的函数在调用前不必声明
C)函数的形参是自动变量
D)函数内部可以定义全局变量
12.以下程序的输出结果为_____
A)13 B)12 C)11 D)10
#define FUDGE(y) 2.84+y
main()
{ int x=2;
printf(“%d\n",(int)(FUDGE(5)*x));
}
13.下列程序执行后的输出结果是_____
A)you&me B)you C)me D)err
main()
{ char arr[10];
strcpy(arr,"yourme"’);
arr[3]='&';
}
14.在以下定义中,标识符fprt_____
int (*fprt)();
A)是一个指向一维数组的指针。
B)是一个指向int型变量的指针。
C)是一个指向函数的指针,该函数返回值为int型。
D)定义不正确。
15.设int b=2; 执行以下语句:
b<<2; b=b>>1;
后,b 的值是_____
A)8 B)4 C)2 D)1
16.有如下程序段
int*p,a,b=10;
p=&a; *p=b+10;
执行该程序段后,a的值为_____
A)10 B)20 C)随机值 D)编译出错
16.A B C D 17.A B C D 18.A B C D 19.A B C D 20.A B C
17.设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[3]=a;
则下列能够正确表示数组元素a[1][2]的表达式是______
A)*((*p+1)[2]) B)*(*(*p+5)) C)*(p+1)+2 D)*(*(a+1)+2)
18.下列程序执行后的输出结果是______
A)0,0,0 B)1,0,0 C)1,0,1 D)1,1,0
main()
{ int x=0,y=0,z=0;
(++x||++y)&& ++z;
printf("%d,%d,%d\n",x,y,z);
}
19.若有以下说明,则输出结果为_____
A)7 B)4 C)2 D)1
union U
{ int a;
float f ;
char ch;
};
printf("%d\n",sizeof(union U));
20.对于C语言的文件,正确的结论是______
A)可以顺序存取文件 B)不能读取源文件     
C)不能处理二进制文件  D)只能处理文本文件
二、 填空题(1~5题,每空2分,6~7题,每空3分,共15分)
1.运算符%两侧的数据均应为 ⑴ 类型。
2.C语言程序的基本单元是 ⑵ 。
3.在调用一个函数的过程中又直接或间接调用该函数本身,称为函数的 ⑶ 。
1.(1) 整型
2.(2) 函数
3.(3) 递归调用
4.如果在定义函数时不指定函数类型,系统会隐含指定函数类型为 ⑷ 型。
5.指针是C语言的一个重要特色,它是一种特殊的变量,是用来存放变量的 ⑸ 的。
6.执行下述程序将输出3到100之间的所有素数。请填空。
#include <stdio.h>
main()
{ int i,j;
for (i=3; i<=100; i++)
{ for (j=2; j<=i-1; ⑹ )
if (____⑺____)
break;
if ( ⑻ )
printf("%3d",i);
}
printf("\n");
}
4.(4) int
5.(5) 地址
6.(6) j++ (7) i%j==0 (8) j>=i
7.(9) a[i]=a[j] (10) a[j]=t
7.以下程序将N个数从大到小的顺序排列后输出
#include <stdio.h>
#define N 10
main()
{ int a[50],i,j,t;
for(i=0; i<N; i++) scanf("%d",&a[i]);
for(i=0; i<N; i++)
for(j=i+1; j<N-1; j++)
if(a[i]<a[j])
{ t=a[i];
⑼ ;
⑽ ;
}
for(i=0; i<N; i++)
printf(“%5d”,a[i]);
}

三、修改程序题(每个/******found*******/下面的几行语句中都有一处错误,共有5处错误,每处3分,共15分)将错误的地方改正,请在答题纸上完成,直接在试卷上改正不给分。
1.下面函数fun的功能是将数组x的元素按逆序存放。例如,x数组中的数据为1,2,3,4,5,则逆序存放后为5,4,3,2,1。请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<stdio.h>
#include<conio.h>
#define M 20
/************found************/
void fun(int x,int n)
{ int i,j,t;
i=0; j=n-1;
/************found***********/
while(i>j)
{ t=x[i]; x[i]=x[j]; x[j]=t;
i++; j--;
}
}
main()
{ int a[M],i;
for(i=0; i<M; i++)
scanf("%d",&a[i]);
fun(a,M);
for(i=0; i<M; i++)
printf("%d\t",a[i]);
}
1. 第一处改正: void fun(int x[],int n)
第二处改正: while(i<j)
2.下述程序中函数calc的功能是对传送过来的两个实数求出和值与差值,并通过两个指针形参分别将这两个值传送回调用函数。
注意:不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
void calc(float x,float y,float *add,float *sub)
{
*add=x+y;
/**********found*********/
sub=x-y;
}
main()
{
float x,y,add,sub;
printf("Enter x,y:");
/**********found*********/
scanf("%f%f",x,y);
/**********found*********/
calc(&x,&y,add,sub);
printf("x+y=%f,x-y=%f\n",add,sub);
}
2. 第一处改正: *sub=x-y;
第二处改正: scanf("%f%f",&x,&y);
第三处改正: calc(x,y,&add,&sub);
四、程序设计题(每题10分,共20分)
1.函数mseek的功能是在若干个字符串中查找一个指定的字符串是否存在,如果存在,则返回1,否则返回0。
注意:不要改动给出的部分源程序,仅要求编写函数mseek。
#include<stdio.h>
#include<string.h>
#define TOTAL 7
int mseek(char*str[],char xstr[],int n)
{

}
main()
{
char*name[TOTAL]={“李宁”,“林山”,“田园”,“张蔷”,“海魂”,“方斌”};
  char xname[20];
printf(“enter a name:”);
gets(xname);
if(mseek(name,xname.TOTAL))
printf(“Found!\n”);
else
printf(“Not found!\n”);
}
1.int mseek(char*str[],char xstr[],int n)
{
int i;
for(i=0; i<n; i++) /* 循环占3分 */
{
if(strcmp(str[i],xstr)==0) /* 比较占3分 */
return 1; /* 找到占2分 */
}
return 0; /* 未找到占2分 */
}
2.下面的程序是求数组中的最小元素,输出最小元素的下标及最小元素值。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数findmin的花括号中填入你编写的若干语句。
#include <stdio.h>
void findmin(int *s,int n,int *k)
/*s是指向数组首地址的指针,n是数组大小,k是指向数组中最小数组元素的指针*/
{

}
main()
{
int a[10],i,*k=&i;
for (i=0; i<10; i++)
scanf("%d",&a[i]);
findmin(a,10,k);
printf("%d,%d\n",*k,a[*k]);
}
2.void findmin(int *s,int n,int *k)
{ int p;
for (p=0,*k=p; p<n; p++) /* 循环占5分 */
if (s[p]<s[*k]) /* 比较找最小值下标占5分 */
*k=p;
)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式