2012年全国高等教育自学考试高级语言程序设计标准预测试卷(4)
-
输出100以内所有个位数字为7且能被3整除的数。
-
一个二维数组int a[4][4],请将其填满并输出其四个边的元素。
-
以下程序用来统计从终端输入的字符中大写字母的个数。以"$"作为输入结束标记。
#include<stdio.h>
#include<ctypc.h>
main()
{int num[126],i;char c;
for(i=0;i<26;i++)
num[i]=0;
while((______)!='$')/*第一空*/
if(isupper(c))num[c-65]+=1;
for(i=0;i<26;i++)
if(______)/*第二空*/
printf("%c:%d\n",______,num[i]);/*第三空*/
}
-
输入5个字符,从中找出最大的并输出。要求用字符数组存放此字符,并用指针数组元素分别指向这5个字符。
#include<stdio.h>
main()
{char a[5],*p[5],*max;
int I;
for(I=0;I<5;I++)
______;/*第一空*/
for(I=0;I<5;I++)
scanf("%C",p[I]);
max=p[0];
for(I=0;______;I++)/*第二空*/
if(*max<*p[I])
______;/*第三空*/
printf("%c",*max);
}
-
#include<stdio.h>
int trans(int m,int n)
{int i;
if(m>n){
i=m%n;trans(m,n);}
else i=m:
if(i<10)printf("%d\n",i):
else printf("%C".’A’+i-10):
}
main()
{int i;
printf("The output is:\n");
printf("n%d\n",-23);
trans(21,3);
printf("n%d\n",123);
trans(123,16);
}
-
将一个十进制整数转变成一个二进制整数。
#include<stdio.h>
main()
{int i=0.j,n,num[20];
scanf("%d",______);/*第一空*/
while(n!=0)
{num[i++]=______;/*第二空*/
n=______;)/*第三空*/
for(j=i-1;j>=0;j--)
printf("Ha",num[j]);
printf("\n");
}
-
#include<stdio.h>
void main()
{int i;
for(i=1;i<5;i++)
printf("%d\t%c\n",i,('A'+i));
}
-
#include<stdio.h>
void main()
{int i,j,a[4][4];
for(i=0;i<4;i++)
for(j=0;0<4;j++) a[i][j]=1+i;--j;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
if(a[i][j]>0)printf("%3 d",a[i][j]);
printf("\n");}
}
-
#include<stdio.h>
int f(int n)
{static int s=1;
while(n)s*=n--;
return s;
}
main()
{int i,j;
i=f(3);j=f(5);
printf("The output is:\n");
printf("i=%d j=%d\n",i,j);
}
-
设
int x=5;
x+==x-=x*x;
则x的值是______。
三、程序分析题
阅读下列程序,将输出结果写到各题右侧的空白处。
-
设int a;float b;char c;long d;double e;unsigned u;,则表达式a+c/b-d*e+u值的类型是______。
-
已知char str[]="ABCD";,则语句printf("%d",strlen(str));的输出是______。
-
数组int arry[5][9];的第二维下标的最大值是______。
-
在进行程序清单的编译时,______是先于编译进行的。
-
文件包含命令是以______为开头的编译预处理命令。
-
______是C语言中唯一的一个三目运算符,它是由两个符号组成。
-
与标准输出设备所对应的文件型指针名为______。
-
将字符串写入文件时,不写入文件的字符串结束标志是______。
-
将字符转换成ASCⅡ代码值的函数是______。
-
下列选项中合法的数组定义是( )
- A.int a[]="string";
- B.int a[5]={0,1,2,3,4,5};
- C.char a="sting";
- D.char a[]={0,1,2,3,4}
-
不能把字符串"Hello!"符给数组b的语句是( )
- A.char b[10]={'H','e','l','l','o','!'};
- B.char b[10];b="Hello!";
- C.char b[10];strcpy(b,"Hello!");
- D.char b[10]="Hello!";
-
设有以下定义
int a[4][3]={{1,2,3},{4,5,6},{7,8,9),{10,11,12};
int *ptr[3]={a[0]},*p=a[0];
则以下能正确表达数组元素a[1][2]的表达式是( )
- A.*((*ptr+1)[2])
- B.*(*(p+5))
- C.*((*ptr+1)+4)
- D.*(*(p+1)+2)
-
执行以下程序段后s的值为( )
int a[]={5,6.4,4,8,9,5,8};
int s=0;
int k;
for(k=0;k<8;k+=2)
s+=*(a+k):
- A.17
- B.22
- C.27
- D.32
-
若有以下说明,则在seanf函数调用语句中对结构体变量成员引用方式不正确的是( )
struct pub
{char name[20];
int age;
int sex;
}pub[5],*P;
- A.scanf("%s",pup[0].name);
- B.scanf("%d",&pup[0].age);
- C.scanf("%d",&p->sex);
- D.scanf("%d",*P.age);
-
若x、y是int型变量,则执行以下语句后的x值是( )
#include<stdio.h>
main()
{
int x,y;
for(y=1,x=1;y<50;y++)
{if(x>=10)break;
if(x%2==1)
x+=5;}
x-=3;
}
- A.3
- B.6
- C.7
- D.10
-
执行下列语句后b的值为( )
int a,b,C,l=4,m=6,n=8;
int *p1=&1,*p2=&m,*p3;
- a=p1==&1;b=3*(-*p1)/(*p2)+7;
- c=*(p3=&n)=*p1*(*p2);
- A.4
- B.5
- C.7
- D.8
-
下列程序正确的运行结果为( )
#include<stdio.h>
main()
{int a[]={2,6,8,10,14,18);
int *ptr[-]={&a[0],&a[1],&a[2],&a[3],&a[4]);
int i;
for(i=0;i<5;i++)
- a[i]=a[i]/2+a[i] printf("%d\n",*(*(ptr+2))); printf("%d\n",*(*ptr)); }
- A.12 21
- B.21 12
- C.12 3
- D.3 12
-
以下函数的功能是( )
ABC(ps)
char *ps;
{char *P;
p=ps;
while(*p++);
return(p-ps);
}
- A.比较两个字符串的大小
- B.求字符串的长度
- C.将字符串ps复制到P中
- D.以上三种说法都不对
-
若有下列类型说明语句:
char w;int x;float y;double z;
则表达式w*x+z-y的结果的数据类型是( )
- A.char
- B.int
- C.float
- D.double
-
若有说明语句:int I,;则以下关于x、*x、x[0]、&x[0][0]的描述正确的是( )
- A.x、*x、x[0]、&x[0][0]均表示元素x[0][0]的地址
- B.只有x、*x表示元素x[0][0]的地址
- C.只有x[0]、&x[O]L0]表示元素x[0][0]的地址
- D.只有&x[0][0]表示元素的地址
-
若有以下定义:
char s[20]=="programming",*ps=s;
则不能代表字符o的表达式是( )
- A.*(ps+2)
- B.s[2]
- C.ps[2]
- D.*ps+=2
-
C语言的基本数据类型包括( )
- A.字符型和数值型
- B.字符型和逻辑型
- c.整型和实型
- D.指针型和数据型
-
已知有以下定义(假定现有计算机字长为16)
Int a=0x48,b=0xf0;
- a^b的值为( )
- A.184
- B.183
- C.290
- D.287
-
下列关于C语言的描述正确的是( )
- A.C语言是面向硬件的高级语言
- B.C语言是面一种面向对象的程序设计语言
- C.C语言是一种结构化程序设计语言
- D.C语言的前身是汇编语言