22.运行下列程序
#include
void main()
{
char c=‵y‵;
if(c>=‵x‵)printf(〝%c〞;c);
if(c>=‵y‵)printf(〝%c〞;c);
if(c>=‵z‵)printf(〝%c〞;c);
}
输出结果是 。
A)y B)yy C)yyy D)xy
23.下列叙述中正确的是 。
A)在switch语句中,不一定使用break语句
B) break语句必须与switch语句中的case配合使用
C)在switch语句中必须使用default
D)break语句只能用于switch语句
24.执行语句for(i=1;i<9;i+=3);后变量i的值是 。
A)8 B) 9 C)10 D)11
25.下列选项中能正确定义并初始化二维数组的是 。
A) int a[ ][3]={1,2,3,4,5,6}; B) int a[ ][ ]={1,2,3,4,5,6};
C) int a[2][ ]={1,2,3,4,5,6}; D) int a[2][3]=“1,2,3,4,5,6”;
26.设有char array[ ]=“Welecome”;则数组array所占的存储单元是 。
A) 6个字节 B)7个字节 C)8个字节 D)9个字节
27.下列程序段的输出结果是 。
char s[ ]=“\\\\x41xyz”;
printf (“%d\\n”,strlen(s));
A)5 B)8 C)9 D)10
28.设有int m[ ]={5,4,3,2,1},i=4;则下列对数组m元素的引用中错误的是 。
A) m[i] B) m[4] C) m[m[0]] D) m[m[i]
29.设有函数调用语句fun((a1,a2),( a3,a4,a5),a6);则该调用语句中实参的个数是 。
A) 6 B)5 C)4 D)3
30.设有以下函数首部:
int func(double x[100],int n)
如果在程序中需要对该函数进行声明,则下列选项中错误的是 。
A) int func(double x[ ],int n); B) int func(double,int );
C) int func(double a[100],int b); D) int func(double *x,int n);
31.C语言规定,函数返回值的类型是由 决定。
A) return语句中的表达式值的类型 B) 调用该函数的主调用函数类型
C) 调用该函数时传递的实参类型 D)定义该函数时指定的函数类型
32.若要说明a是整体型变量,pa为指向a的整体指针变量,则下列选项中正确的是 。
A) int a, *pa=&a; B) int a,pa=&a; C)int a,*pa=a; D) int *pa=&a, a;
33.设有int s[ ]={1,23,5,7,9},*p=s;则下列选项中值为7的表达式是 。
A)*p+2 B)*p+3 C)*(p+3) D)*(p+2)
34.对于类型相同的两个指针变量之间,能进行的运算是 。
A) % B) = C) ! D) /
35.设有
Struct student
{ char name[21];
int age;
char sex;
}std={“Li Ming”,19,’M’},*p;
P=&std;
则下列输出语句中错误的是 。
A) printf(“%d”,(*p).age); B)printf(“%d”,p->age)
C) printf(“%d”,stb.age); D) printf(“%d”,p.age);
36.设有
union data
{ int i ; char c ; float f ;} a ;
int b ;
则下列语句中正确的是 。
A)a=1.6 B) a.c=’\101’ C) b=a D) printf(“%d\\n”,a)
37.设有
Typedef struct ABC
{ long a ; int b; char c[2];}NEW;
则下列叙述中正确的是 。
A)以上的说明形式非法 B)ABC是一个结构体变量
C)NEW是个结构体类型名 D)NEW是个结构体变量
38.设有int x=28; ,则执行语句printf(“%d\\n”,x>>2);后的输出结果是 。
A)7 B)14 C)28 D)56
39.C语言中,根据数据的组织方式,文件可分为ASCII文件和 。
A)二进制文件 B)只读文件 C)只写文件 D)随机文件
40.以读写方式打开一个已存在的文件data.txt,下列选项中正确的是 。
A) FILE *fp;fp=fopen(“data.txt”,”rb”);
B) FILE *fp;fp=fopen(“data.txt”,”w”);
C) FILE *fp;fp=fopen(“data.txt”,”r”);
D) FILE *fp;fp=fopen(“data.txt”,”r+”);
二、填空题(每空2分,共20分)
1.结构化程序设计的三种基本结构分别是:顺序结构、 和循环结构。
2.设有int a=65;,执行语句printf(“%x\\n”,a);后的输出结果是 。
3.设有double x=56.7; ,则执行语句printf(“%.2f\\n”,x);后的输出结果是 。
4.设有int a =27;,则执行语句a%=4;后a的值是 。
5设有int a[3][4]={{1,2},{0,1},{4,6,8,10}};,则a[1 ][1]+a[2 ][2 ]的值是 。
6.C标准库函数中,常用的字符串比较函数是 。
7.表示变量存储方式的关键字auto、 、register和extern.
8.下列程序的输出结果是 。
#include
void main()
{char s[ ]={“Computer”},*p=s;
Printf(“%c”,*p+5);}
9.设有#define M(x) x*x,则M(1+2)的值是 。
10.设有enum weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Satturday};,则枚举元素Saturday对应的数值是 。
三、阅读理解题(每题4分,共20分)
1.运行一下程序是从键盘输入2010,其运行结果是 。
#include
void main()
{int year,leap=0;
scanf(“%d”,&year);
if((year%4= =0&& year%100!=0)∣∣(year%400= =0))leap=1;
if(leap= =1) printf(“%d is a leap year!\\n”,year);
else printf(“%d is not a leap year!\\n”,year);
}
2.以下程序的运行结果是 。
#include
void main( )
{char ch=’c’;
Switch(ch)
{case ‘a’:
case ‘A’:
case ‘b’:
case ‘B’: printf(“good!\\n”);break;
case ‘c’:
case ‘C’: printf(“pass!\\n”);break;
case ‘d’:
case ‘D’: printf(“warning!\\n”);break;
default: printf(“error!\\n”);
}
}
3.以下程序的运行结果是 。
#include
void main()
{char s[ ]= “I / love / C / Programming/”;
int i , num;
num = 0;
for ( i = 0;s[ i ] != ‘\0’; i++)
if(s[i]!=’/’ && s[i+1] = = ‘/’) num++;
printf(“ num = %d\\n “,num);
}
4.以下程序的运行结果是 。
#include
int f(int n)
{ int m;
if( n = = 0∣∣ n = = 1) m= 3;
else m = n*n-f(n-2);
return(m)
}
Void main( )
{
int n=2,m;
m=f(n);
printf ( “ n=%d,m =%d\\n”,n,m);
}
5.以下程序的运行结果是 。
#include
void main()
{char s[ ]= “ABCDEFGH” ,b[ ] = “ abCDefGh”;
char *p1,p2;
printf(“%s\\n”,a);
printf(“%s\\n”,b);
for (p1=a,p2=b;*p1!’\0’;p1++;p2++)
if(*p1= =*p2) printf(“%c”,*p1);
printf(“\\n “);
}
四、编程题(第1题6分,第2、3题各7分,共20分)
1、输入两个正整数a 和 b 整除,输出商,否则输出商和余数。
2、利用循环语句编写程序,计算s = 1+11+111+1111并输出结果。
#include
int main(void)
{
int j,sum=0,t=0;
for(j=1;j<5;j++)
{
t=t*10;
t=t+1;
sum+=t;
printf("%d+",t);
}
printf("\\b=%d\\n",sum);
return 0;
}
解法二
#include
#include
void main()
{
int i,j,a,s=0;
for (i=1;i<5;i++)
{ a=0;
for(j=i;j>0;j--) a=a+pow(10,j-1);
s=s+a;
}
printf("s=1+11+111+1111=%4d",s);
printf("\\n");
}
3、输入10位学生的成绩,输出学生成绩及其所对应的名次。
成绩 90 85 90 95 80 88 70 100 95 95
名次 5 8 5 2 9 7 10 1 2 2
例如,下面有10位学生的成绩及计算后的对应的名次:
其中“95分”排名第2,由于有3个“95分”,下一个较小的成绩“90分”则排名第5。
说明:算法及输出形式不限,相同的成绩及名次可以不重复输出。
#include
void main()
{
int a[11],rank[11];
int i,j,t;
printf("请输入10个学生的成绩:\\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\\n");
for(i=0;i<10;i++)
{ t=1;
for(j=0;j<10;j++)
if(a[i] rank[i]=t;
}
printf("成绩:");
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\\n");
printf("名次:");
for(i=0;i<10;i++)
printf("%4d",rank[i]);
printf("\\n");