C语言网络教育试卷试题和答案2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
4. #include <stdio.h>
void main()
{ int a=2;
switch(a)
{
case 2:
case 3:a++;
case 4:a++;
default:a+=10;
}
printf("a=%d\n",a);
}
答案:a=14
5.分析下面程序的运行结果。 #include <stdio.h> int f(int a); int main() { int f(int); int a=5,i;
则( D ) A.运行后将输出 student ;
C.运行后将输出 b;
B.运行后将输出 a
D.编译出错
7.当数组作函数参数时,选出不正确的描述。( D ) A.实参数组与形参数组类型应一致。 B.数组元素做函数实参时,同变量做实参一样是参数传值。
C.形参数组可以不定义数组大小。
D.实参数组与形参数组大小必须一致,否则C编译会检查出错。
char a[80]; printf("input string:"); gets( a); test(a); printf("\n 字母数=%d 数字数=%d 空格数=%d 其他字符数%d\n",n,m,k,o); return 0; } void test(str) char str[]; { int i;
while(i<=10) { if (!(i%2)) printf("%d,",i);
i++; } } 答案:2,4,6,8,10 3.分析下面程序的运行结果。 #include<stdio.h> main() {char s[]="456789"; s[4]='\0'; printf("%s\n",s); } 答案:4567
电子科技大学网络教育考卷(A 卷)
(20 年至 20 学年度第 学期)
考试时间 年 月 日(120 分钟) 课程
C语言
教师签名_____
大题号 一 二 三 四 五 六 七 八 九 十 合 计
得分
一、单项选择题(每题 2 分,共 30 分)
1.下面的四个选项中,均不是合法的用户标识符的选项是( B )
#include<stdio.h> main()
)。
1
{ static int a[2][3]={{1,2,3},{4,5,6}}; int m; m=*(*(a+1)+1); m=m*a[1][1]; printf("%d",m); return 0;
}
答案:25 2.分析下面程序的运行结果。 #include<stdio.h> main() { int i=1;
int i,j,t; for (i=0; i<10; i++) {
scanf("%d", &a[i]); } for(j=0;j<9;j++) { for(i=0;i<9-j;i++)
{ if (a[i] > a[i+1]) { t = a[i]; a[i] = a[i+1]; a[i+1] = t; }
B.a=1,b=3,c=2〈回车〉
C.a=1 b=3 c=a <回车>
D.1,3,2 〈回车〉
3.如果输入信息为:1234567 则执行语句:scanf("%2d%2d",&x,&y); 之后,x,y 的值为( A )
A. x 为 12,y 为 34
B. x 为 2,y 为 3
C. x 为 12,y 为 67
} }
五、编程题 (每题 10 分,共 20 分) 1. 请编制程序实现:判断一个数能否同时被 4 和 7 整除。
答:算法如下: #include <stdio.h> int main() { int x;
printf("\n 为 X 输入值"); scanf("%d", &x); if (x%4==0) { if(x%7==0)
{ printf("\nX 能被 4 和 7 整除:X="); printf("%-5d\n",x);
} else printf("\nX 不能被 7 整除"); } else printf("\nX 不能被 4 整除"); return 0; }
int n=0,m=0,k=0,o=0; //外部变量 void test(char str[]); main() {
D. (*p)[3]与*p[3]等价。
10. 已知 int b; 则对指针变量 p 正确的说明和初始化是:( 4 )
A. int *p=b; B. int p=b; C. int p=&b; D. int *p=&b;
11.若已定义了如下的共用体类型变量 x,则 x 所占用的内存字节数为( C )
(设在 16 位 pc 机的环境下)
8.在 C 语言中,函数返回值的类型最终取决于( A
)。
A.函数定义时在函数首部所说明的函数类型
B.return 语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
9.若有说明 int (*p)[3]; 则以下正确的描述( B )
A. p 是一个指针数组。 B. p 是一个指针,它只能指向一个包含3个 int 类型元素的数组。 C. p 是一个指针,它可以指向一个一维数组中的任意元素。
A.在开头
B.在结尾
C.在中间
D.可以任意
14. int x=3; if(1<=2)if(0)x=4;else x=5;else x=6; 执行上述语句后 x 的值是( C ).
A.3
B.4
C.
D.6
15. 以下叙述正确的是( C )
A.goto 语句只能用于退出多层循环。
B.可以用 continue 语句来终止 switch 语句的执行。
C.break 语句只能用在循环体内和 switch 语句体中。
D.在循环内使用 break 语句和 continue 语句的作用相同。
二、判断题(每题 10 分,共 10 分) ( × )1.若有代数式 x2÷(3x+5), 则正确的 C 语言表达式为:x*x/3*x+5。 ( √ )2.开发一个 c 语言的源程序要经过的四个阶段编辑、编译、连接,程序运行。 ( × )3.int i=5, j, k; j=i++; k=i; 则 k 的值为 5。 ( ×)4.已知:int s[][3]={1,2,3,4,5,6}; 此时数组元素 s[1][1]的值为 1。 ( √ )5.字符串“hello”占用内存 6 字节。 ( √ )6. C 语言中,注释可以出现在源程序中空格可以出现的任何位置。 ( ×)7. 强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。
k++; //k 为空格 else o++; //统计总字符数 } }
2. 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他符的个数,在主函数中输 入字符串以及输出上述的结果。
#include "stdio.h"
3
姓名__________________ 专业名称__________________ 班号________________学号__________________教学中心_________________ …………………… …… … … … … …密………………… …… … … … … ……封……………… …… … … …线… … … …… … … ……………………
union data
{ int i;
char ch;
double f; }x;
A. 7
B. 11
C. 8
D. 10
12.设 fp 为指向某二进制文件的指针,且已经读到此文件末尾,则函数 feof(fp)的返回值为( B
A.EOF
B.非 0 值
C.0
D.NULL
13. C 语言程序中,main 函数的位置( D )。
for(i=0;i<3;i++) {
printf("%d ", f(a)); } return 0; } int f(int a) { auto int b=0; static int c=3; b = b+1; c = c+1; return (a+b+c); } 答案:10 11 12
四、完善程序填空题(每题 5 分,共 15 分) 1. 输出所有的“水仙花数”,所谓“水仙花数”是指一个 3 位整数,其各位数字立方和等于该数本身。例如,
A. B
B. b-a
C. float
D. _123
M_0
goto
2ab
temp
while
int
_A
INT
2.有输入语句:scanf(“a=%d, b=%d, c=%d”, &a, &b, &c);为使变量 a,b,c 的值分别为 1,3,2,从键盘上输
入数据的正确形式应当是( B
)
A.132 〈回车〉
D.x 为 1234567,y 为 0
4.对于 for(表达式 1;表达式 2 ;表达式 3) 语句的正确描述( A.表达式2省略,循环不执行。
B)
B.表达式3省略,可在循环体中修改循环控制变量,以保证正常退出。
C.三个表达式均不能省略。 D.三个表达式均不能省略。但分号可以省略。 5.以下叙述中正确的是( B )。
if(n==
i*i*i+j*j*j+k*k*k
)
printf("%5d",n);
Baidu Nhomakorabea
}
printf("\n");
} 2. 将原文件 file1.c 的内容读出并显示, 同时将其内容写入 file2.c 文件中。
#include<stdio.h> main() { FILE *fp1,*fp2;
fp1=fopen("file1.c", "r" ); fp2=fopen("file2.c","w"); while(!feof(fp1))
putchar(getc(fp1)); rewind(fp1); while(!feof(fp1))
putc( getc(fp1) ,fp2);
2
fclose(fp1);fclose(fp2); } 3.用冒泡法对 10 个整数排序。
#include <stdio.h> int main() { int a[10];
A.循环语句嵌套必须是同类型的语句
B.循环语句嵌套可以是同类型的语句,也可以不同类型 C.do_while 循环语句和 while 循环语句的程序执行方式都是相同的。 D.循环体中不能再有循环语句
6.有下面的程序段:
char a[ 3 ], b[ ] =”student”;
a=b;
printf (“ %s”,a);
153 是一个水仙花数,因为 153=13+53+33。
答:
#include <stdio.h>
void main()
{ int i,j,k,n;
printf("Narcissus number are: ");
for(n=100;n<1000;n++)
{ i=n/100;
j=n/10-i*10;
k=n%10;
(× )8. 在 C 语言程序中,每个函数必须要有且只能有一个 return 语句。
(√ )9. 枚举类型变量只能取枚举定义中的枚举常量。 (√ )10. 联合类型是同一个存储空间,可以被几个不同数据类型的分量成员共享使用。
三、分析程序给出运行结果(每题 5 分,共 25 分) 1.执行下面程序之后,m 的值为多少。
for(i=0;str[i]!= '\0';i++) { if(str[i]>='a'&&str[i]<='z'|| str[i]>='A'&&str[i]<='Z')
n++; //n 为字母数 else if( str[i]>='0'&&str[i]<='9')
m++; //m 为数字 else if(str[i]==' ')