上海应用技术学院 C语言 试题模拟二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.选择题
1.以下不正确的C语言标识符是()。
A. AB1
B. a2_b
C. _ab3
D. 4ab
2.若有定义int (*p)[4],则标识符p是一个。
A、指向整型变量的指针变量
B、指向函数的指针变量
C、指向有四个整型元素的一维数组的指针变量
D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指针3.若用数组名作为函数调用时实参,则实际上传递给形参的是
()。
A.数组首地址 B. 数组的第一个元素值
C.数组中全部元素的值 D. 数组元素的个数
4.C语言中规定函数的返回值的类型是由()。
A.return语句中的表达式类型所决定
B.在定义该函数时所指定的函数类型所决定
C.调用该函数时系统临时决定
D.调用该函数时的主调用函数类型所决定
5.以下错误的描述是()。
A. 不同的函数中可以使用相同的变量名
B. 形式参数是局部变量
C. 一个函数内部定义的变量只能在本函数范围内有效
D. 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
6.为了判断两个字符串s1和s2是否相等,应当使用( )。A.
if(s1 == s2) B. if(s1 = s2)
C. if(strcpy(s1,s2))
D.if(strcmp(s1,s2)==0)
7.在while(x)语句中的x与下面条件表达式等价的是:。
A. x!=0
B. x==1
C. x!=1
D. x==0
8.若有以下说明和语句:
struct stu
{
int no;
char *name;
}student, *p=&student;
则以下引用方法不正确的是()。
A. student.no
B. (*p).no
C. p->no
D. student->no
9.以下对二维数组进行正确初始化的是()。
A.int a[2][3]={{1,2},{3,4},{5,6}};
B.int a[2][3]={{1,2},{},{4,5}};
C.int a[][3]={1,2,3,4,5,6};
D.int a[2][]={{1,2},{3,4}};
10.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+1
二、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1.从键盘输入10个整型数据,放入数组a 中,求其最大值及其所在元素的下
标位置,并输出。
main()
{
int a[10], n, pos, max;
for (n=0; n<10; n++)
scanf("%d", &a[n]);
max = ;
pos = ;
for (n=0; n<10; n++)
{
if (a[n] > max)
{
max = a[n];
pos = ;
}
}
printf("max=%d, pos=%d\n", max, pos);
}
2.输入若干个大于2的整数(否则终止运行),判断其是否为2个大于1的整数的乘积。
如:输入8则输出“2*4=8”,输入7则输出“不可分解”。
#include
#include ⑴
void main()
{ int m,i;
while(scanf("%d",&m),⑵ ) {
for(i=2;i<=sqrt(m);i++)
if(m%i==0){ printf("%d*%d=%d\n", ⑶ );break; }
if((4) ) printf("不可分解\n");
}
}
3.下列程序计算方程a•x2+b•x+c=0的实根。
#include
#include
struct root {
⑴ ;
};
root f(float a,float b,float c)
{ ⑵ ;
x.x1=(-b+sqrt(b*b-4*a*c))/2/a;
x.x2=(-b-sqrt(b*b-4*a*c))/2/a;
⑶ ;
}
void main()
{ float a,b,c; root y;
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c<0)
printf("方程无实根\n");
else {
y=f(a,b,c); printf("x1=%f,x2=%f\n", ⑷ );
}
}