第一讲 C程序和C程序概述
模拟题
C语言程序设计试卷(A)
考试时间:120分钟
请考生注意:本卷共五道大题,请将第一、二、三题的正确答案填在答题卡对应的编号上。
一、填空(10分,每题1分)
1.一个C语言程序总是从main函数开始执行。
2.x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为 1 。
3.系统判断字符串结束的标志是…\0?。
4.能正确表示“当ch为小写字母为真,否则为假”的表达式是.ch>?a?&&ch
二、阅读程序,写出程序运行结果(30分,每题6分)
else printf(“%3d”,i);
}
2 4 6 8 10 2.
2.main( ) { int i,j,k; printf(“\n”); }
}
3.main() {int i,j,sum=0,a[3][3]; if(i==j) sum+=a[i][j]; } printf(“%d”,sum);
}
6
4.int x,y num() printf("%d,%d",x,y) }
5,11
5. main() printf(“%d,%d\n”,*p,*(a+2))printf(“%d,%d\n”, *(p+3),*p++);
} 1,5
7,1
三、程序填空(20分,每空2分)
阅读程序说明及程序,把它补充成一个完整的程序
1.下面程序是用冒泡法对10个数进行从小到大排序的程序。
{ int a[10] ,i,j,temp; scanf("%d", &a[i] ); for(j=0; j
printf("%5d",a[i]);
}
2.下面程序将按如下形式输出杨辉三角形。
main() { a[i][0]=1; a[i][i]=1;} for(i=2;i 3.for(j=0; j<=i;j++) } } 四、问答题(10分,每题5分) 1.简述字符常量与字符串常量的区别。 字符常量:单引号括起来的一个字符,用字符变量存放 字符串常量:双引号括起来的一串字符,用字符数组存放 2.简述局部变量的三种存储方式。 auto,static,register 五、编写程序(30分,每题10分) 1. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 2. 编写程序,输入一个字符串,计算出这个字符串的长度(要求不能使用strlen函数) 3. 编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。 1、main() {int number[10]; aa(number); bb(number); cc(number); } aa(int *array) {int i; for(i=0;i<10;i++) scanf("%d,",&array[i]); } bb(int *array) {int *max,*min,t; int *p; p=max=min=array; for(p=array+1;p if(*max<*p) max=p; else if(*min>*p) min=p; t=*max;*max=array[9];array[9]=t; t=*min;*min=array[0];array[0]=t; } cc(int *array) { int *p; for(p=array;p printf("%d,",*p); printf("%d\\n",array[9]); getch(); } 2、#include"stdio.h" int get_str_length(char c[]){ int length=0; int i=0; while(c[i++]) length++; return length; } void main(){ char c[10000]; printf("请输入一个字符串:"); scanf("%s",c); printf("字符串的长度为:%d\n",get_str_length(c)); } 3.#include "stdio.h" #include "math.h" #define N 10 void invert(int x[]) { int i,t; for(i=0;i {t=x[i];x[i]=x[N-1-i];x[N-1-i]=t;} } main() { int i,a[N]; printf("please input %d integers:\n",N); for(i=0;i { printf("the %dth number is:",i); scanf("%d",&a[i]); } printf("the integers you input is:\n"); for(i=0;i printf("%5d ",a[i]); invert(a); printf("\nthe integers after invert is:\n"); for(i=0;i printf("%5d ",a[i]); printf("\n"); } C语言程序设计试卷(B) 考试时间:120分钟 请考生注意:本卷共五道大题,请将第一、二、三题的正确答案填在答题卡对应的编号上。 1.3.5 2.ASCII 3.ch>?A?&&ch0&&x<5|| y>0&&y<5 5.在局部变量定义的函数或复合语句内 6.数组的首地址7.strcat(s1,s2) 8.int (*p)() 9.a[2] 10.静态存储区 一、填空(10分,每题1分) 1.x=3.5,y=5,z=7.8,则表达式x+y/3*(int)(x+z)%2/5的值为 3.5 。 2.C语言中,char 型数据在内存中的存储形式是ASCII 。 3.判断字符型变量ch是否为大写字母的表达式是ch>?A?&&ch 4.表示“x,y中至少有一个大于0且小于5”的表达式是x>0&&x<5|| y>0&&y<5 。5.局部变量的作用范围是: 在局部变量定义的函数或复合语句内。 6.若定义x[5],则数组名x的含义是数组的首地址; 7.若说明char s1[20]=”hello”,s2[]=”world”;则将s2与s1连接的语句为strcat(s1,s2) 。8.定义一个指向函数的指针变量p的语句为int (*p)() 。 9.若定义char a[5],*p=a;则*(p+2)表示a[2] 。 10.全局变量放在内存的__静态存储区。 二、阅读程序,写出程序运行结果(30分,每题6分) 1.main() {int a=2,b=3,c; c=a+b; printf(“%d,%d%d\n”,a,b,c); } 3 , 1 , 5 3 , 5 , 4 2.main( ) { b+=3; continue; } b-=5; printf(“%d\n”,a); } 8 3. main() {int i,f[10]; f[0]=0;f[1]=1; for(i=2;i<10;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<10;i++) printf(“%d,”,f[i]); } 0,1,1,2,3,5,8,13,21,34 4. main() {char *p,s[]="ABCDEFG"; p=s; while(*p!= '\0' ) {printf("%s\n",p); p++; if(*p!= '\0') p++; else break; } } ABCDEFG CDEFG EFG G 5.main() {int i; for(i=2;i<5;i++) printf("fun(%d)=%d\t",i,fun(i)); printf("\n"); } int fun(int x) {static int f=1; return(f*=x); } fun(2)=2 fun(3)=6 fun(4)=24 三、程序填空(20分,每空2分) 阅读程序说明及程序,把它补充成一个完整的程序 1.下面程序运行结果输出如下图形。 main( ) { int i; for(i=1; i<=4 ; i++) printstar(i) ; } void printstar(int i ) {int j,k;char space=??; for(j=1;j<=5-i;j++) p rintf(“%c”, space); for(k=1; k<=2*i-1 ; k++) printf(“%c”, …*?); printf(“\n”) } 2.下面程序将输入的一个字符串按逆序存放。 #include “stdio.h” main() {int i, n,temp; char a[50] ; gets( a ); n=strlen(a); for(i=0; i 四、问答题(10分,每题5分) 1.什么是全局变量和局部变量? 全局变量:函数外定义的变量 局部变量:函数内或复合语句内定义的变量 * * *** ***** ******* 2.定义一个结构体变量,包括学号、姓名(最多8个字符)、性别、年龄和住址成员。struct student {int num; char name[8];char sex;int age;char addr[30];}p1; 五、编写程序(30分,每题10分) 1. 输入一行字符,统计其中字母字符、数字字符和其它字符的个数。 2. 编写程序, 输入10个学生3门课的成绩, 计算每个学生的平均成绩,按平均成绩降序排列并打印出结果。 3.编写一个程序,将字符串a复制到b中。要求不能使用strcpy函数。 1、#include #include main() {char c; int w=0,x=0,y=0,z=0; while((c=getchar())!='\n') {if((c>='a'&& c<='z')||(c>='A' && c<='z')) w++; else if (c==' ') x++; else if (c>='0' && c<='9') y++; else z++; } printf("w=%d,x=%d,y=%d,z=%d",w,x,y,z); } 2 。 #include"string.h" #define M 10 #define N 3 main() { int i,j; float t; float total=0; char name[M][5]; char change[1][5]; float score; score[M-1][N-1]*/ float average[M]; clrscr(); for(i=0;i { total = 0; /*here*/ printf("name:"); scanf("%s",name[i]); printf("score:"); for(j=0;j { scanf("%f",&score); total+=score; } average[i] = total/N; } for(i=0;i { for(j=0;j if(average[j] { t=average[j];average[j]=average[j+1];average[j+1]=t; strcpy(change[0],name[j]); strcpy(name[j],name[j+1]); strcpy(name[j+1],change[0]); } } for(i=0;i { printf("%s:",name[i]); printf("%f\n",average[i]); } getch(); } 3. #include void strcopy (char *wordaPre, char *wordbPre); int main(void) { char worda[100]; char wordb[100]; printf("Please input some chars: "); gets(worda); strcopy (worda, wordb); puts(wordb); return 0; } void strcopy (char *wordaPre, char *wordbPre) { while (*wordaPre != '\0') *wordbPre++ = *wordaPre++; *wordbPre='\0'; }