一、单项选择题(每题2分,共30分)
1.请问:下面这个程序段的输出是什么?( D )
int a=7,b=8,c=9;
if(a<b) { a=b; b=c; c=a; }
printf("a=%d b=%d c=%d/n",a,b,c);
A . a=7 b=8 c=7 B. a=7 b=9 c=7
C. a=8 b=9 c=7 D. a=8 b=9 c=8
2.C语言对嵌套 if 语句的规定是:else总是与( D )配对。
A.其之前最近的 if B.第一个 if
C.缩进位置相同的 if D. 其之前最近且不带 else 的 if
3.有以下程序段:
int k=0;
while(k=1) k++;
while循环执行的次数是( A )。
A.无限次 B.有语法错,不能执行
C. 一次也不执行 D.执行1次
4.若有语句:
static char x[]="12345";
static char y[] = {'1','2','3','4','5'};
则下面那一个是正确的描述。( 2 )
A.x数组和y数组的长度相同。
B.x数组长度大于y数组长度。
C.x数组长度小于y数组长度。
D.x数组等价于y数组。
5.若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是( C )。
A.该数组共有20个元素 B.a[0][6]是该数组的一个元素
C.a[0][0]是该数组的一个元素 D.a[5][6]是该数组的一个元素
6.对局部变量不正确描述( B )
A.在不同块内可以使用相同的变量名而不会混淆。
B.局部变量在任何一个函数内有效。
C.局部变量的初值每调用一次赋一次
D.用auto说明的变量为局部变量。
7.凡是函数中未指定存储类别的局部变量,隐含的存储类别为( A )。
A.auto B. register C. static D. extern
8.在说明语句:int *f( );中,标识符f代表的是( A )
A.一个返回值为指针型的函数名
B. 一个用于指向整型数据的指针变量
C.一个用于指向函数的指针变量
D.一个用于指向一维数组的行指针
9.typedef( D )
A. 可以定义各种类型名和变量名。
B. 可以创造新的数据类型。
C. 和#define作用相同。
D. 只是对已存在的类型增加一个类型名,不能创造新类型。
10.若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是( B )。
A.fp=fopen("d1.dat","r"); B.fp=fopen("d1.dat","rb");
C.fp=fopen("d1.dat","r+"); D.fp=fopen("d1.dat","w");
11.以下选项中,当x为大于1的奇数时,值为0的表达式是( D )。
A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0
12.若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是( B )。
A.*(*w+3) B.*(w+1)[4] C.*(*(w+1)) D.*(&w[0][0]+1)
13、有以下程序段typedef struct node {int data;struct node *next;}* NODE; NODE p; 以下叙述中正确的是__________C________。
A.p是指向struct node结构体变量的指针的指针
B.NODE p;语句出错
C.p是指向struct node结构变量的指针
D.p是struct node结构变量
14、若有程序段:double x=-5.9;int y;y=(int)x; 执行该段程序后_____A_____。
A.x=-5.9,y=-5 B.x=-5.9,y=-6
C.x=-5,y=-5 D.x=-6,y=-6
15.已知 int b; 则对指针变量正确的说明和初始化是:__ D __
A.int *p=b; B.int p=b; C.int p=&b; D.int *p=&b;
二、判断题(每题1分,共10分)
( √ )1.执行char c[3]=”ab”, *p; p=c;程序段后,*(p+1)的值是 b , *(p+2)的值是 /0 。
( × )2.C语言中,变量名用大小写是等价的。
( √ )3.强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。
( ×)4.存储字符串所需的内存空间等于字符串的长度。
( √ )5.C语言中,注释可以出现在源程序的任何位置。
( ×)6.整型、字符型、指针型是C语言中最简单的数据类型。
( √ )7.全局变量在整个源程序文件中都有效。
( × )8. switch选择结构中必须有default子句。
( √ )9.如果x>y或者a<b为真,那么表达式( x>y||a<b)为真。
( √ )10.结构成员名可以与程序中的变量同名,也可以与结构类型名相同,而不会混淆。
三、分析程序给出运行结果(每题5分,共25分)
1.以下程序的运行结果是:
#include "stdio.h"
#include "stdlib.h"
struct data
{ int x,y; };
void main()
{ struct data * p;p=(struct data *)malloc(sizeof(struct data));
(*p).x=3;(*p).y=4;
printf("%d %d/n",p->x,p->y);
free(p);
}
答案:3 4
2.分析下面程序的运行结果。
#include <stdio.h>
int main()
{ int i,j, row=0, colum=0, max;
int a[3][4] = {{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for (i=0;i<=2;i++)
{ for (j=0;j<=3;j++)
{ if (a[i][j]>max)
{ max = a[i][j];
row = i;
colum=j;
}
}
}
printf("max=%d,row=%d,colum=%d/n", max, row, colum);
return 0;
}
答案:max=10,row=2,colum=1
3.分析下面程序的运行结果。
#include<stdio.h>
main()
{char ss[]="2345678";
ss[5]='/0';
printf("%s/n",s);
}
答案:23456
4.给出以下程序的运行结果。
#include<stdio.h>
main( )
{
printf("%d %x %o/n",88,88,88);
printf("%d %x %o/n",025,025,025);
printf("%d %x %o/n",0x31,0x31,0x31);
return 0;
}
答案:88 58 130
21 15 25
49 31 61
5. main()
{ char a[]="This is a program.",b[20];
int i=0;
while(a[i]!='/0')
{ b[i]=a[i];
i++; }
b[i]='/0';
printf("string a is: %s/n",a);
printf("string b is: ");
for(i=0;*(b+i)!='/0';i++)
printf("%c",*(b+i));
printf("/n");
}
答案:string a is: This is a program.
string b is: This is a program.
四、完善程序填空题(每题5分,共15分)
1.将一个数组中的值按逆序重新存放,
#include <stdio.h>
void main()
{ int i,j,m,n=0,temp;
int x[20];
printf("输入需排序的个数%d/n",n);
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%d,", &x[i]); }
m = (n-1)/2;
for(i=0;i<=m;i++)
{ j = n-1-i;
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
2.将原文件file1.c的内容读出并显示, 同时将其内容写入file2.c文件中。
#include<stdio.h>
main()
{ FILE *fp1,*fp2;
fp1=fopen("file1.c","r");
fp2=fopen("file2.c","w");
while(!feof(fp1)) putchar(getc(fp1));
rewind(fp1);
while(!feof(fp1)) putc(getc(fp1),fp2);
fclose(fp1);fclose(fp2);
}
3. 统计字符串中小写字符的个数。
#include "stdio.h"
main()
{
char str[20];
int i,n=0;
gets( );
for(i=0;str[i]!= ‘/0‘;i++) 改为‘/0’
if(str[i]>='a'&&str[i]<='z')
n++;
printf("%d/n",n);
}
五、编程题 (每题10分,共20分)
1.编写一个C程序,输入a、b、c三个值,要求按其大小顺序输出。
答:算法如下:
#include <stdio.h>
int main()
{ float a, b, c, t;
scanf("%f%f%f", &a, &b, &c);
if (a > b)
{ t=a;a=b;b=t;}
if (a > c)
{ t=a;a=c;c=t;}
if (b>c)
{ t=b; b=c; c=t; }
printf("%5.2f, %5.2f, %5.2f", a, b, c);
return 0;
}
2.编制程序实现:将输入的一个偶数写成两个素数之和的形式。例如,若输入数值8,则输出8=3+5。
答:编制程序如下:
#include<stdio.h>
#include<math.h>
void fun(int a)
{ int b,c,d;
for(b=3;b<=a/2;b=b+2 )
{ for( c=2;c<=sqrt(b); c++)
if(b%c = = 0)
break;
if(c>sqrt(b))
d= a-b;
else break;
for( c=2;c<=sqrt(d); c++)
if(d%c = = 0)
break;
if(c>sqrt(b))
printf(“%d=%d+%d/n”,a,b,d);
}
}
main()
{ int a;
printf(“/n input a:/n”);
scanf(“%d”,&a);
fun(a);
}
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
相关文章:
期货公司停业的,应当向中国证券监督管理委员会提交的材04-27
高一年级必修二生物知识点04-27
国内某出口企业3个月后将收到一笔日元出口货款,则可用04-27
高一数学上册教案范例5篇04-27
高一年级语文必修三知识点总结04-27
外汇期权合约中规定卖出的货币,其利率越高,期权持有者在04-27
高一年级必修二物理知识点04-27
外汇掉期与货币互换的区别主要体现在( )。A期限不同B04-27
高一年级必修三英语知识点总结04-27