x:
y;
22.运行下列程序
#include
voidmain()
{
charc=‵y‵;
if(c>=‵x‵)printf(〝%c〞;c);
if(c>=‵y‵)printf(〝%c〞;c);
if(c>=‵z‵)printf(〝%c〞;c);
}
输出结果是。
A)yB)yyC)yyyD)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)8B)9C)10D)11
25.下列选项中能正确定义并初始化二维数组的是。
A)inta[][3]={1,2,3,4,5,6};B)inta[][]={1,2,3,4,5,6};
C)inta[2][]={1,2,3,4,5,6};D)inta[2][3]=“1,2,3,4,5,6”;
26.设有chararray[]=“Welecome”;则数组array所占的存储单元是。
A)6个字节B)7个字节C)8个字节D)9个字节
27.下列程序段的输出结果是。
chars[]=“\\x41xyz”;
printf(“%d\n”,strlen(s));
A)5B)8C)9D)10
28.设有intm[]={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)6B)5C)4D)3
30.设有以下函数首部:
intfunc(doublex[100],intn)
如果在程序中需要对该函数进行声明,则下列选项中错误的是。
A)intfunc(doublex[],intn);B)intfunc(double,int);
C)intfunc(doublea[100],intb);D)intfunc(double*x,intn);
31.C语言规定,函数返回值的类型是由决定。
A)return语句中的表达式值的类型B)调用该函数的主调用函数类型
C)调用该函数时传递的实参类型D)定义该函数时指定的函数类型
32.若要说明a是整体型变量,pa为指向a的整体指针变量,则下列选项中正确的是。
A)inta,*pa=&a;B)inta,pa=&a;C)inta,*pa=a;D)int*pa=&a,a;
33.设有ints[]={1,23,5,7,9},*p=s;则下列选项中值为7的表达式是。
A)*p+2B)*p+3C)*(p+3)D)*(p+2)
34.对于类型相同的两个指针变量之间,能进行的运算是。
A)%B)=C)!
D)/
35.设有
Structstudent
{charname[21];
intage;
charsex;
}std={“LiMing”,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.设有
uniondata
{inti;charc;floatf;}a;
intb;
则下列语句中正确的是。
A)a=1.6B)a.c=’\101’C)b=aD)printf(“%d\n”,a)
37.设有
TypedefstructABC
{longa;intb;charc[2];}NEW;
则下列叙述中正确的是。
A)以上的说明形式非法B)ABC是一个结构体变量
C)NEW是个结构体类型名D)NEW是个结构体变量
38.设有intx=28;,则执行语句printf(“%d\n”,x>>2);后的输出结果是。
A)7B)14C)28D)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.设有inta=65;,执行语句printf(“%x\n”,a);后的输出结果是。
3.设有doublex=56.789;,则执行语句printf(“%.2f\n”,x);后的输出结果是。
4.设有inta=27;,则执行语句a%=4;后a的值是。
5设有inta[3][4]={{1,2},{0,1},{4,6,8,10}};,则a[1][1]+a[2][2]的值是。
6.C标准库函数中,常用的字符串比较函数是。
7.表示变量存储方式的关键字auto、、register和extern.
8.下列程序的输出结果是。
#include
voidmain()
{chars[]={“Computer”},*p=s;
Printf(“%c”,*p+5);}
9.设有#defineM(x)x*x,则M(1+2)的值是。
10.设有enumweekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Satturday};,则枚举元素Saturday对应的数值是。
三、阅读理解题(每题4分,共20分)
1.运行一下程序是从键盘输入2010,其运行结果是。
#include
voidmain()
{intyear,leap=0;
scanf(“%d”,&year);
if((year%4==0&&year%100!
=0)∣∣(year%400==0))leap=1;
if(leap==1)printf(“%disaleapyear!
\n”,year);
elseprintf(“%disnotaleapyear!
\n”,year);
}
2.以下程序的运行结果是。
#include
voidmain()
{charch=’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
voidmain()
{chars[]=“I/love/C/Programming/”;
inti,num;
num=0;
for(i=0;s[i]!
=‘\0’;i++)
if(s[i]!
=’/’&&s[i+1]==‘/’)num++;
printf(“num=%d\n“,num);
}
4.以下程序的运行结果是。
#include
intf(intn)
{intm;
if(n==0∣∣n==1)m=3;
elsem=n*n-f(n-2);
return(m)
}
Voidmain()
{
intn=2,m;
m=f(n);
printf(“n=%d,m=%d\n”,n,m);
}
5.以下程序的运行结果是。
#include
voidmain()
{chars[]=“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
intmain(void)
{
intj,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);
return0;
}
解法二
#include
#include
voidmain()
{
inti,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位学生的成绩,输出学生成绩及其所对应的名次。
成绩908590958088701009595
名次58529710122
例如,下面有10位学生的成绩及计算后的对应的名次:
其中“95分”排名第2,由于有3个“95分”,下一个较小的成绩“90分”则排名第5。
说明:
算法及输出形式不限,相同的成绩及名次可以不重复输出。
#include
voidmain()
{
inta[11],rank[11];
inti,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");