C语言试卷(带答案)_第1页
C语言试卷(带答案)_第2页
C语言试卷(带答案)_第3页
C语言试卷(带答案)_第4页
C语言试卷(带答案)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机程序设计基础(C语言) 03G0093参考样题一 单项选择题(每题1分,共5分,答案写在题左侧的括号里)( D )1请选出可用作C语言用户标识符的是( )A . get-h B. 5flow C.int D. w_sum ( C )2在C语言中,以( )作为字符串结束标志 An B. 0 ; C.0; D. ( D )3. 存放100个学生的数据(包括学号、姓名、成绩),在如下的定义中,不正确的是( )。 Astruct student int sno; char name20; float score; stu100;B. struct student int sno; char na

2、me20; float score;; struct student stu100; C. struct int sno; char name20;float score; stu100;D. struct student stu100 int sno; char name20; float score;( A )4. 下面各函数中能实现打开文件功能的是( )A. fopen B. fgetc C.fputcD.fclose( B )5.下列说法正确的是( )A. 可以在一个函数中定义另一个函数B. C程序是由函数构成的。C. main()函数必须放在其它函数之前D. C语言不区分大小写。二、

3、 阅读程序(每小题5分,共45分)1. #include <stdio.h> void main() double x, y; printf("Enter x (x>=0):n"); scanf("%lf", &x); if (x <= 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("y = f(%.3f) = %.2fn", x, y); 如键入9.6,运行结果为:y=f(9.600)=12.802. #include <stdio.h&g

4、t; void main() int denominator, flag, i, n; double item, sum; printf("Enter n: "); scanf ("%d", &n); flag = 1; denominator = 1; sum = 0; for (i = 1; i <= n; i+) item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 2; printf ("su

5、m = %fn", sum); (1) 若键入3,运行结果为: (2)程序的功能是: 3. #include <stdio.h> void main() int choice, i; float price; printf("Enter choice: "); scanf("%d", &choice); switch (choice) case 1: price=3.0; case 2: price=2.5; break; case 3: price=4.0; case 4: price=3.5; break; defaul

6、t: price=0.0; printf("price = %0.1fn", price); 若输入1,运行结果为:若输入4,运行结果为:4. #include <stdio.h> #define M 2#define N 3void main( ) int aMN, i, j ;for(i=0;i<M;i+)for(j=0;j<N;j+) aij = i + j;for(i=0;i<M;i+) for(j=0;j<N;j+) printf("%5d",aij); printf("n"); 运行结果

7、为:5.#include <stdio.h>void main() int num,c; scanf("%d",&num); do c=num%10; printf("%dt ",c); num/=10;while (num>0);从键盘输入617,则运行结果为:6. #include <stdio.h> #define N 5void main(void)int i, index, k, n, temp; int aN; for(i = 0; i <N; i+) scanf("%d", &

8、amp;ai);for(k = 0; k < N-1; k+) index = k; for(i = k + 1; i < N; i+) if(ai < aindex) index = i; temp = aindex; aindex = ak; ak = temp; for(i = 0; i < N; i+) printf("%4d ", ai); (1)若键入-7 9 0 5 -1 运行结果为: (2)本程序中有三个for循环语句,请说明各for语句实现的功能。 第一个for循环语句: 第二个for循环语句: 第三个for循环语句:7. #inc

9、lude <stdio.h> void main( ) int i, m;printf("Enter a number: "); scanf ("%d", &m);for(i = 2; i <= m/2; i+)if(m % i = 0) printf("No!n"); break; printf("%d is a prime number! n", m); 若输入6,运行结果为: 8.#include <stdio.h> void main(void) int i = 0,

10、len; char str80 = "Hello!" for(i = 0; stri != '0' i+) ; len = i; printf("len = %dn", len); for(i = 0; stri != '0' i+) putchar(stri); 运行结果为:9. #include <stdio.h> (5分) #define N 5int get_max (int a , int n);void main() int i, aN=6,-7,1,-2,3; int max; max = get

11、_max (a, N); printf("max=%d n" ,max); int get_max (int a , int n) int i, max; max=a0; for ( i = 1; i < n; i +) if(ai>max)max=ai ; return max ; 运行结果为: 本程序的功能是: 三、程序填空,根据程序要求的功能,在划线处填写适当的表达式或语句(每空2分,共8分)1. 定义一个一维数组,通过键盘输入数据,然后按逆序输出。#include <stdio.h> #define N 10 void main() int

12、aN, i, *p ; printf(“input integers:”); for( ; p<a+N; p+) scanf(“%d”, p); for( i=N-1; ; i-)printf(“%5d”, ai) ; 2输入一个字符,判断该字符是数字、字母、空格还是其他字符。#include <stdio.h>void main( ) char ch; ch=getchar( ); if( ) printf("It is an English charactern"); else if( ch>=0&&ch<=9 )print

13、f("It is a digit charactern");else if( ch= )printf("It is a space charactern"); printf("It is other charactern"); 四. 程序改错(共10分)1. 程序功能:在数组a(不超过10个元素)中查找数据x首次出现的位置(即下标值)#include <stdio.h> void main( ) int i, x, n=10;int an; printf("输入数组元素的个数:"); scanf(&qu

14、ot;%d", &n); printf("输入数组%d个元素:",n); for(i = 0; i < n; i+) scanf("%d", &ai); printf( "x= " ); scanf("%d", &x); for(i = 0; i < n; i+) if(ai != x) break; if(i!=n) printf( "没有找到与%d相等的元素!n", x); else printf( "和%d相同的数组元素是a%d=%d

15、n", x, i, ai); 1)编译时,划线行提示的错误信息为: expected constant expression 请改正。(2分) 2) 还有一处逻辑错误,请指出并改正。(2分)2. 程序功能:计算1+2+3+100的值#include <stdoi.h>void main(void) int i , sum ; for ( i = 1 , i <= 100 , i+) sum = sum + i; printf("sum = %dn", sum); 1)编译时,划线行提示的错误信息为: missing '' 请改正。

16、(2分) 2) 还有一处逻辑错误,请指出并改正。(2分)3. 请以上2题中的任一题为例,说明查找逻辑错误的方法和步骤。(2分) (提示:说明在哪条语句处设置断点,观察哪个变量的值等)五. 编程题(每小题8分,共32分)1. 输入圆半径(r),当r>0时,计算并输出圆的周长和面积(要求显示到小数点后2位),否则,输出“input error!”提示信息。#include <stdio.h> #define PI 3.14 void main() float r ,s , l; printf("please input r:n"); scanf("%

17、f”,&r); if (r>=0) s=pi*r*r; l=2*i*r ; printf("the area is %.2fn",s);printf("the circumference is %.2fn",l);else printf("input error!n"); 2从键盘输入一批学生成绩,以负数为结束标志,计算平均分。#include <stdio.h> void main() int score ,s,n; float ave; n=0;s=0; printf("please input

18、 score:n"); scanf("%d”,&score); while (score>=0) s+=score; n+ ; scanf("%d”,&score); if(n>0) ave=(float)s/n; printf("the ave is %.2fn",ave;else printf("no valid data input!n"); 3. 定义一个fact函数求n!,并编写主函数,输入一个整数,调用fact函数求出它的阶乘并输出。 #include <stdio.h>d

19、ouble fact(int n);void main() int n;double mul;printf("please input n:n"); scanf("%d”,&n);mul=fact(n);printf("%d!=%fn",mul);double fact(int n) int i;double s=1;for (i=1;i<=n;i+)s*=i; return s;4. 输入10个整数到数组a中,输出数组各元素;输入一个新数据x,将数组各元素依次向前移动一个位置,原a0丢掉,x送入a9(如下图所示),输出移动后的数

20、组a移动前:a0a1a2a3a4a5a6a7a8a9移动后:a1a2a3a4a5a6a7a8a9x#define N 5#include <stdio.h>void main() int aN,i,x; printf(“enter array a:n”); for(i=0;i<N;i+) scanf(“%d”,&ai); for(i=0;i<N;i+) printf(“%4d”,ai);printf("nplease input x: ");scanf("%d”,&x); for(i=0;i<N-1;i+) ai=ai

21、+1; ai=x; printf(“n Now, array a:n”); for(i=0;i<N;i+) printf(“%4d”,ai); 参考答案及评分标准一单项选择题 评分标准: 每题1分,共5分DCDAB二阅读程序 评分标准: 每题5分,共45分1 y=f(9.60000)=12.80 2 (1)sum=0.46666 3分(2)计算1-1/3+1/5-1/7+ 前n项和 2分3 price=2.5 2.5分price=3.5 2.5分4 0 1 2 1 2 3 5 7 1 66 (1) -7 -1 0 5 9 2分(2)输入数组各元素 1分按从小到大排序 1分输出排序后的数组

22、各元素 1分7 No 6 is a prime number!8 len=6 hello!9. max=6 调用函数求数组元素的最大值,并输出最大值 三 填空, 评分标准: 每空2分,共8分1. p=a i>=0 2. ch>=a&& ch<=z| ch>=A&& ch<=Z else 四 程序改错: (共10分)1. #include <stdio.h> void main( )int i, x, n=10;int an; int a10; (2分) printf("输入数组元素的个数:"); sc

23、anf("%d", &n); printf("输入数组%d个元素:",n); for(i = 0; i < n; i+) scanf("%d", &ai); printf( "x= " ); scanf("%d", &x); for(i = 0; i < n; i+) if(ai != x) break;if(ai= x) (2分) if(i!=n) printf( "没有找到与%d相等的元素!n", x); else printf( "和%d相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论