一、填空题(20分,每空1分)。
2.若char型常量在内存中存放的是
。
正确答案
正确答案:ASCII码
3.若有int a=12,b=20,t=18;,则执行下列语句后a,b,t的值为
。
if(a>b) t=a; a=b; b=t;
7.设有以下宏定义, 则执行赋值语句: v = LENGTH * 10;(v为int型变量)后,v的值是
。
#define WIDTH 10
#define LENGTH WIDTH+30
正确答案
正确答案:310
8.若定义数组int a[]={1,2,3,4,5,6}; ,则此数组元素a[a[2]]的值为
。
正确答案
正确答案:4
10.若有定义int a[5]={1,2,3,4,5};*p=a;,则*(p+3)的值为
正确答案
正确答案:4
11. 有以下源程序
#include<stdio.h>
void main()
{ int a=0,b=0,c=0,d=0;
if (a=1) b=1;c=2;
else d=3;
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
请说明无法编译通过的原因是
。
正确答案
正确答案:if后面的赋值语句应变为复合语句
12.若有以下定义: 则执行printf(“%d”, ++(*p)); 后输出的结果是
。
int a[5]={10,20,30,40,50},*p=&a[1];
正确答案
正确答案:21
13.有说明char *s1="Abcdef" ,*s2="aBCD";,则strcmp(s1,s2)>0;的结果是
。
正确答案
正确答案:0
17.设有如下定义语句:FILE *fp;若要打开D盘上user子目录下的名为abc.txt的文本文件进行读、写操作,正确的语句应该写为fp=
。
正确答案
正确答案:fopen(“D:\\user\\abc.txt”,”r+”)
二、阅读程序,写出程序运行的结果(30分,每题5分)
1. 以下程序段的输出结果为:
#include<stdio.h>
void main()
{
char c1,c2,c3;
c1 = 'a';c2='z';
c3 = c2 - c1;
printf("%c,%c,%d",c1,c2,c3);
}
正确答案
正确答案:a,z,25
2.有以下程序段,程序运行后,输入5<回车>,输出结果是:
c=getchar();
switch(c-‘2’)
{ case 0:
case 1: putchar( c + 4 );
case 2: putchar( c + 4 );break;
case 3: putchar( c + 3 );
case 4: putchar(
c + 2 );break;}
}
正确答案
正确答案:87
3.执行下面的程序,输出结果是:
#include <stdio.h>
void main( )
{
int a = 1,b;
for( b = 1;
b <= 10; b++)
{
if(
a >= 8 ) break ;
if(
a % 2 == 1) { a += 5; continue ;}
a
- = 3;
}
printf(“%d\n”
, b) ;
}
正确答案
正确答案:4
4.执行下面的程序,输出结果是:
#include<stdio.h>
int fun(int n)
{
static int
f = 1;
f = f * n
;
return f ;
}
void main()
{
int i,a[5]
;
for( i = 1
; i <= 5 ; i++) a[i-1]=fun(i) ;
printf(“%d\n”,a[3]);
}
正确答案
正确答案:24
5. 执行下面的程序,输出结果是:
#include<stdio.h>
void fun1(char *p)
{
char *q; q
= p;
while( *q
!= ‘\0’ )
{ (*q)++;
q++; }
}
void main()
{
char a[ ]={“Program”},
*p;
p=&a[3];
fun1(p);
printf(“%s\n”,a);
}
正确答案
正确答案:prohsbn
6. 执行下面的程序,输出结果是:
#include<stdio.h>
void main()
{
int i , f[5]
= { 1, 2};
for( i = 2
; i < 5 ; i++)
f[i] = f[i-2]
* f[i-1];
for( i = 0
; i < 5 ; i++)
printf(“%d,”,f[i]);
}
正确答案
正确答案:1,2,2,4,8,
三、程序填空(20分,每空2分)阅读程序说明及程序,把它补充成一个完整的程序。
1.以下程序的功能是输出100以内(不含100)能被3整除且个位数为6的所有整数,
请填空。
#include<stdio.h>
void main()
{ int i, j ;
for ( i = 0 ; ; i++)
{
j = i * 10 + 6 ;
if ( ) continue ;
printf(“%d\t”, j);
}
}
正确答案
正确答案:第一空:i<10 第二空:
j%3!=0
2.下面程序运行结果输出如下图形。
*
***
*****
*******
#include<stdio.h>
void main( )
{
int i;
for ( i = 1; i <= 4; i++)
;
}
void printstar( int i )
{
int j,k;char space=’’;
for( j = 1; j <= 5-i; j++) printf(“%c”, space);
for( k = 1;
; k++) printf(“%c”, ‘*’);
}
正确答案
正确答案:第一空:printstar(i) 第二空:
k<=2*i-1 第三空:
printf(“\n”);
3. 用冒泡法对10个数由小到大排序。
#include<stdio.h>
void sort(
)
{ int i,j,temp;
for( i = 1; i < n ; i++)
for( j = 0;
; j++)
if( a[j] > a[j+1] )
{ temp = a[j];
; a[j+1] = temp;}
}
void main()
{
int a[10],i;
printf(“Enter the array:\n”);
for( i = 0 ; i < 10 ; i++)
scanf(“%d”,
);
sort(
);
printf("\n排好序的10个整数为:\n");
for(i=0;i<10;i++) printf(“%3d”,a[i]);
}
正确答案
正确答案:第一空:int a[],int n 第二空:j<n-i 第三空:a[j]=a[j+1] 第四空:
&a[i] 第五空:a,10
四、编写程序(30分)
1.编写一个函数isprime(n),判断n是否是素数,如果是素数,则返回1,否则返回0;再编写一个主函数,输入一个整数,调用isprime()函数,判断此整数是否为素数,并输出结果。请编程实现。
正确答案
正确答案:略
2.编写程序,由键盘输入一个字符串(长度不超过20)存到数组中,将该字符串的有效字符按反序存放(要求:转换时不能使用辅助数组),并输出结果。
正确答案
正确答案:略
3.从文本文件infile.txt中读入一个字符串,然后将其中的小写字母全部转换成大写字母,再输出到outfile.txt文件中。
正确答案
正确答案:略