南京信息工程大学试卷2009 - 2010 学年第 1学期程序设计基础/C语言程序设计课程试卷( B 卷) 本试卷共 9 页;考试时间 120分钟;任课教师课程组;出卷时间 2010 年 1月学院专业2009 年级班学号姓名得分一、单项选择题 (每小题 1分,共 14分)1. C语言规定:在一个源程序中,main的位置A)必须在最开始 B)必须在系统调用的库函数后面C)可以任意 D)必须在最后2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中的任意一种3.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是。
int a1,a2; char c1,c2;scanf(“%d%c%d%c”,&a1,&a2,&c1,&c2);A)10A 20B↙B)10 A 20 B↙C)10A20B↙D)10A20 B↙4.C语言对嵌套if语句的规定是:else总是与。
A)其之前最近的if配对B)第一个if配对C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对5.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。
if (a<b)if (c<d) x=1;elseif (a<c)if (b<d) x=2;else x=3;else x=6;else x=7;A)1 B)2 C)3 D)46.下述语句执行后,变量k的值是。
int k=1;while (k++<10);A)10 B)11 C)9 D)无限循环,值不定7. 引用数组元素时,其下标表达式的值类型一定是:A) char B) intC) double D) bool8.若对两个数组a和b进行初始化char a[]="ABCDEF";char b[]={'A', 'B', 'C', 'D', 'E', 'F'};则下列叙述正确的是。
A) a与b数组完全相同B) a与b数组占用内存相同C) a与b数组都存放字符串 D) 数组a比数组b占用内存大9.若调用一个函数,且此函数中没有return语句,则正确的说法是。
A)该函数没有返回值B)该函数返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值10.若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组中第一个元素的值C)数组中的全部元素的值D)数组元素的个数11.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是。
A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等12.若已定义char s[10];则在下面表达式中不表示s[1]的地址是。
A)s+1 B)s++C)&s[0]+1 D)&s[1]13.若有定义:int a[2][3];则对a数组的第i行第j列元素的正确引用是。
A)*(a[i]+j) B)(a+i)C)*(a+j) D)a[i]+j14.已知学生记录描述为:struct student{int no ;char name[20];char sex;struct {int year;int month ;int day ;} birth ;} s ;设结构变量s中的“birth”为“1985年10月1日”,则下面正确的赋值方式是。
A)year=1985 B)birth.year=1985month=10 birth.month=10day=1 birth.day=1C )s.year=1985D )s.birth.year=1985s.month=10 s.birth.month=10s.day=1 s.birth.day=1二、基础知识填空(每空2分,共22分)1.C 源程序的基本单位是 。
2.按照计算机科学家沃思(Wirth )的提法,一个计算机程序应包括数据结构和 两部分。
3.数学表达式yx b a y ++=22的C 语言表达式是 。
4.若s 是int 型变量,s=6;则表达式s%2+(s+1)%2的值为5.C 语言本身不提供输入输出语句,其输入输出操作是由 来实现的。
6.已知A=7.5,B=2,C=3.6,表达式A>B && C>A || A<B && !C>B 的值是 。
7.设有以下定义语句:int a[3][2]={10,20,30,40,50,60}, (*p)[2];p=a;则表达式*(*(p+2)+1)的值为 。
8.设i,j,k 均为int 型变量,则执行完下面的for 循环后,k 的值为 。
for(i=0,j=10;i<=j ;i++,j--) k=i+j;9.在一个C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 。
10.C 程序中,文件可以用 和二进制两种代码形式存放。
11.下面程序的运行结果是#include<stdio.h>#define S(x) 4*x*x+1void main ( ){int m=6,n=8 ;printf(“%d\n ”,S(m+n)) ;}三、程序阅读题(每题3分,共24分)1.以下程序运行后的输出结果是 。
#include<stdio.h>int main( ){int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};int i=0,j=0,s=0;while (i++<4){if (i==2 || i== 4 ) continue ;j=0;do {s+=a[i][j];j++;}while (j<4) ;}printf("%d\n" , s );return 0;}2.下面程序的运行结果是#include<stdio.h>void copy_string(char *,char *);int main(){ char a[]="I am a top man.";char b[]="You are teachers.";copy_string(a,b);printf("\nstring_a=%s\nstring_b=%s\n",a,b);return 0;}void copy_string(char *from,char *to){ for(;*from!='\0';from++,to++)*to=*from;*to='\0';}3.下面程序运行的结果是#include<stdio.h>int main ( ){int k=1,n=463 ;do{k*= n%10 ;n/=10 ;} while (n) ;printf(“%d\n”,k);return 0;}4.按键盘上的Ctrl键回车后,下面程序执行结果是#include <stdio.h>int main(){ char c;printf("Enter a character:");c=getchar();if(c<0x20) printf("The character is a control character\n");else if(c>='0'&&c<='9') printf("The character is a digit\n");else if(c>='A'&&c<='Z') printf("The character is a capital letter\n");else if(c>='a'&&c<='z') printf("The character is a lower letter\n");else printf("The character is other character\n");return 0;}5.若输入的值是32,写出下面程序的运行结果是。
#include <math.h>#include<stdio.h>void fun(int);int main ( ){ int n ;scanf(“%d”,&n);printf(“%d=”,n);if (n<0) printf(“-”);n = fabs(n);fun(n);return 0;}void fun (int n){ int k,r ;for (k=2; k<=sqrt(n); k++) {r = n % k ;while (!r) {printf(“%d”,k); n=n/k;if (n>1) printf(“*”);r = n % k ;}}if (n!=1) printf(“%d\n”,n);}6.下面的程序的输出结果的第一行是,第二行是,第三行是。
#include<stdio.h>int main(){char *s="1221";int k=0,a=0,b=0;do{if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';}while(s[++k]);printf("k=%d\n a=%d \nb=%d\n",k,a,b);return 0;}7.以下程序执行后输出的结果是#include <stdio.h>int main( ){FILE *fp;int i,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp, "%3d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp, "%d%d",&k, &n);printf("%d,%d\n",k, n) ;fclose(fp);return 0;}8.下面程序的运行结果是#include<stdio.h>int fun (char *);int main ( ){ char *a=”abcdef” ;printf(“%d\n”,fun(a)) ;return 0;}int fun (char *s){ char *p=s;while (*p) p++ ;return (p-s) ;}四、程序填空题(每空2分,共20分)1.下面程序是是找出2009年到2050年的所有闰年,补足所缺语句,使程序完整。