C语言上机考试试题9

更新时间:2024-03-09 06:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C 语言上机考试试题-9

一、选择题 (每小题2分 )

1. 用数组名作为函数的实参时,传递给函数的形参是________。 (A) 数组的首地址

(B) 数组的第1个元素 (D) 数组的元素个数

(C) 数组中的全部元素

2. 下列定义一维数组正确的写法是________。 (A) int a(10); (C) int n;

(B) int n=10, a[n]; (D) #define SIZE 10 int a[SIZE];

scanf(“%d”,&n); int a[n];

3. 下述函数头定义形式正确的是________。 (A) int f(int x; int y) (C) int f(int x, int y)

(B) int f(int x,y) (D) int f(x,y: int)

4. 以“只读”方式打开文本文件c:\\xy.txt,下列语句中哪一个是正确的________。 (A) fp=fopen(\.txt\ (B) fp=fopen(\.txt\ (C) fp=fopen(\.txt\

(D) fp=fopen(\.txt\

5. 判断变量x和y中有且只有一个值为0成立的表达式为________。 (A) !(x*y)&&x+y (B) (x*y)&&x+y (C) x*y==0 (D) x==0&&y!=0 6. 设有如下定义: struct ss{

char name[10]; int age; char sex;

} std[3],*p=std;

下面各输入语句中错误的是________。 (A) scanf(\ (C) scanf(\

(B) scanf(\(D) scanf(\

7. 语句“int a=0; if(a=1) a+=10;” 编译不会出错,但运行后a的值是________。 (A) 0

(B) 11

(C) 10

(D) 出错

8. 设有字符数组: char s[20];,能把一串字符: How do you do?<回车>全部输入的语句是________。

(A) scanf(\

(B) scanf(\

1

(C) gets(s); (D) scanf(\

9. 定义语句为“char a[10];”,执行下列语句后的输出结果为________。 printf(\,%d\\n\,sizeof(a),strlen(strcpy(a,\(A) 7,7 (B) 7,8

(C) 10,7

(D) 10,8

10. 若有定义:int k=1,*q;,下面赋值表达式正确的是________。 (A) q=&k

(B) *q=&k

(C) q=k

(D) *q=k

套数号 9 答案 1.A 2.D 3.C 4.B 5.A 6.B 7.B 8.C 9.C 10.A 二、 判断题 (每小题2分)

1. t=s; if(u>t) t=u;程序段可以实现将变量u, s中的最大值赋给变量t的功能。 2. 在定义了数组int a[5][6];后,第10个元素是a[4][2]。

3. 在C语言中,以下描述“任何子函数必须位于主函数之前”是正确的。 4. 设变量定义为char s[]=“hello”,则数组s中有5个元素。 5. 若x是单精度实型变量,表达式(x=10/4.0)的值是2.5。 6. 若变量已正确定义,表达式x=y=1符合C语言语法。 7. 表达式!(x>0‖y>0)等价于!(x>0&&!(y>0)。 8. 表达式( 0x19<<1)&0x7的值是3。

9. 在C源程序中将语句“if(x==5) y++;”误写成“if(x=5) y++;”,不会导致编译错误。 10. 式子!(a%2==0)在a为奇数时结果为假。

套数号 9 答案 1. T 2. F 3. F 4. F 5. T 6. T 7. T 8. F 9.T 10. F 三、填空题(每小题2分)

1. C语言中用于结构化程序设计的三种基本结构是: 顺序结构、________和循环结构。 2. int x=-17,y; 执行语句 y=x%4 后y的值为_______。

3. int x=10,y=4; float z=x/y; 执行语句printf(“%.2f”,z); 输出________。

4. a是一个值为两位数的整型变量,判断其个位数是大于等于5的奇数,而十位数是偶数的逻辑表达式为________。

5. 若 a=3、b=8、c=10,条件表达式 ((y=(a+6=5&&m%2==1&&m/10%2==0 (5) 20 2

四、程序改错题(每小题5分)

1. 以下程序输入数字:2 4,则程序运行结果为:8 4。 #include \void f(int a,int *b) { a=a+*b; *b=*b+a; }

int main() { int a,b;

scanf(\

f(b,a); /* $1 */

printf(\ return 1; }

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句f(b,a);有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:在程序中输入:2 4,得到输出数值:8 4。

参考答案:f(b,&a); 运行样例1行

运行样例1:4 8 运行结果:16 8

2. 以下程序输入数值:0 1 2,则程序运行结果为输出:1 3 7 15。 #include int main()

{ int i,n[5]={0,0,0,0,0}; printf(\ for(i=0;i<=2;i++) scanf(\ for(i=1;i<5;i++) { n[i]=2*i+1; /*$*/ printf(\ } printf(\ return 1; }

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句n[i]=2*i+1; 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:在程序中输入数值:1 2 3,得到输出数值:3 7 15 31。

3

答案:n[i]=n[i-1]*2+1; 运行样例3行

运行样例1:please input the nums: 1 2 3

运行结果:3 7 15 31

3. 下列程序是一个从考生文件夹中的文件ks.c中读出它的内容并显示在屏幕上的程序。假设文件ks.c中有语句how do you do . C,则程序运行结果为:how do you do . C 。 #include int main() { FILE *fp; char ch; fp=fopen(\ /* $1 */ ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } printf(\ fclose(fp); return 1; }

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句fp=fopen(\有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:是一个从文件ks.c中读出它的内容并显示在屏幕上的程序。例如:假设文件ks.c中有语句how do you do . C,则程序运行结果为:how do you do . C

答案:fp=fopen(\ 运行样例1行

运行样例1:在ks.c文件中有语句:how do you do . C 运行结果:how do you do . C

4. 下列程序中函数fun功能实现m=1-2+3-4+…+9-10+…的和, 如果本程序输入数值:4 , 则程序运行结果为:m=-2。 #include #include int fun(int n)

{ int m=0,f=1, i; for(i=1;i<=n;i++) { m=i*f; /* $1 */ f=(-1)*f; }

return m; }

int main()

4

{ }

int n;

scanf(\

printf(\return 1;

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句m=i*f; 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:程序中函数fun功能实现m=1-2+3-4+…+9-10+…的和。例如:假设该程序输入数值:4 ,则程序运行结果为:m=-2。 答案:m=m+i*f; 运行样例1行

运行样例1:6 运行结果:-3

五、程序填空(每小题5分)

1. 下列程序功能:对变量地址的操作来完成赋值的过程。假设程序输入两个数:6 8,则程序最后一个printf()输出:8---8。 或者程序输入:1 2,则输出:2---2。根据这两次输入输出来填空。 #include \#include int main() {

int *p1,*p2; int a,b;

printf(\ scanf(\ p1=&a; *p1=100; /* $1 */ *p2=b;

printf(\ printf(\}

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:对变量地址的操作来完成赋值。例如:假设程序输入两个数:6 8,则程序最后一个printf()输出:8---8。 或者程序输入:1 2,则输出:2---2。 答案:p2=p1; 运行样例2行

运行样例1:now input the nums: 6 8

5

运行结果:now output the nums: 8---8

2. 下列程序功能:实现对一个2维数组的转置(行列互换),请填空。 #include int main() { int a[3][3]; int i,j,temp; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ printf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(\ printf(\ }

for(i=0;i<3;i++) /* $1 */ { temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; }

printf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(\ printf(\ } return 1; }

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:实现对一个2维数组的转置(行列互换)。

答案:for(j=i;j<3;j++) 运行样例7行

运行样例1:1 2 3 4 5 6 7 8 9

运行结果 : first array: 1 2 3 now the array:1 4 7

4 5 6 2 5 8 7 8 9 3 6 9

6

六、程序设计(每小题10分)

1. 操作说明

编制程序:从程序中输入m,其中要求输入的m必须大于0且小于等于20。求表达式sum=1+1/2+1/3+1/4+~~~~~~+1/m的和sum,并将sum保留两位小数输出。 参考答案: #include \int main() { int m, i;

double sum=0.0,flag=1.0; do { printf(\ scanf(\ }while(m<0||m>20); for(i=1;i<=m;i++) { sum=sum+1/flag; flag++; } printf(\ return 1; }

运行样例2行

运行样例1:now input the num: 2 结果:1.50 运行样例2:now input the num: 10 结果:2.93

2. 操作说明

编制程序,计算输入字符串的长度及字符串中数字的个数,并输出。 参考答案

#include void main( ) { char c[80]; int i=0,s=0,j=0; scanf(\ while(c[i++]!= '\\0') { s++;

if(c[i]>='0'&& c[i]<='9') j++; }

printf(\ %d\\n\}

运行样例1行

运行样例1:abcd123 结果:7 3

7

本文来源:https://www.bwwdw.com/article/qt3a.html

Top