当前位置:文档之家› 上海应用技术学院 C语言 试题模拟二

上海应用技术学院 C语言 试题模拟二

一.选择题
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 <stdio.h>
#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 <stdio.h>
#include <math.h>
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", ⑷ );
}
}。

相关主题