一、选择题
1、不能把字符串“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!";
2、在宏定义“#define PI 3.14159”中,用宏名PI代替一个 ____________________
A.单精度数 B. 双精度数 C.常量 D.字符串
3、下列说法错误的是 ____________________
A.C语言中对二进制文件的访问速度比文本文件块
B.C语言中随机文件以二进制代码形式存储数据
C.语句“FILE fp;”定义了一个名为“fp”的文件指针
D.C语言中的文本文件以ASCII码形式存储数据
二、基本操作题
30、下列给定程序中,函数fun的功能是:将N*N矩阵中元素的值按列向右移动一个位置,右边被移出矩阵的元素绕回左边第一列。例如,N=3,有下列矩阵。
1 2 3 3 1 2
4 5 6 计算结果为 6 4 5
7 8 9 9 7 8
请将正确内容填入答题卡相应位置,使程序得出正确答案。
#include "stdio.h"
#define N 4
void fun(int(*t)[N])
{
int i,j,x;
for(i=0;i=1;j--) //此处 应为 1
t[i][j]=t[i][j-1];
t[i][0]=x;//____ 3 ____=x;
}
}
main()
{
int i,j,t[][N]={21,12,13,24, 25,16,47,38, 29,11,32,54, 42,21,33,10};
printf("The original array:
");
for(i=0;i");
}
fun(t);//____ 4 ____;
printf("
The result is:
");
for(i=0;i");
}
}
答案:
for(i=0;i",a,b,c);
}
答案:
0,0,5
(2)下列程序的运行结果是 ____________________
#include "stdio.h"
main()
{
int x[5]={2,4,6,8,10},*p,**pp;
p=x;
pp=&p;
printf("%d",*(p++));
printf("%3d
",**pp);
}
答案:
2 4
(3)下列程序的运行结果是 ____________________
#include "stdio.h"
main()
{
int i=2,j=3,k=4;
if(i++==2 && (++j==3 || k++==3))k++;
printf("%d %d %d",i,j,k);
}
答案:
3 4 5
(4)下列程序的运行结果是 ____________________
#include "stdio.h"
int fun(char *a,char *b)
{
while((*a!='\0') && (*b!='\0') && (*a==*b))
{
a++;b++;
}
return (*a-*b);
}
main()
{
char a[10]="abc";
char b[10]="ab";
printf("%d",fun(a,b));
}
答案:
99
(5)下列程序的运行结果是 ____________________
#include "stdio.h"
void WriteStr(char *fn,char *str)
{
FILE *fp;
fp=fopen(fn,"w");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
答案:
end
33、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整。
(1)已知字母A的ASCII码为65,以下是一个猜字母游戏,计算机随机产生A至Z之间的一个字母,用户有10次猜字母的机会。第一次猜中得10分,第二次猜中的9分……。第10次猜中得1分。10次都猜不中得0分,如果猜错,计算机提示所猜字母是超前还是落后。
最后显示总得分。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main()
{
int i,score=0;
char ch,ch1,ch2;
srand((unsigned)time(0));
____ 1 ____;
for(i=1;i<=10;i++)
{
printf("
请输入所猜的大写字母");
scanf("%c%c",&ch1,&ch2);
if(ch1>ch) printf("落后了");
else if(ch1你的得分为:%d %c",score,ch);
return 0;
}
答案:
ch=rand()%26+65;//____ 1 ____;
break;//____ 2 ____;
(2)结果为 13431 请根据结果7完成程序。
#include "stdio.h"
struct NODE
{
int k; struct NODE *link;
};
int main()
{
struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{
____ 3 ____;
p++;
q->k=i++;
____ 4 ____;
}
____ 5 ____;
for(i=0;i<5;i++) printf("%d ",m[i].k);
return 0;
}
答案:
p->k=++i;//____ 3 ____;
q--;//____ 4 ____;
p->k=i;//____ 5 ____;
34、阅读程序,修改程序中的错误,不得增减行,也不得更改程序结构。
(1)输入10个正整数,计算其中的素数之和并输出结果(不考虑溢出情况),两个错误。
两个错误。
L01 #include "stdio.h"
L02 int sum(int *b,int m)
L03 { int s=0,is_prime(long);
L04 while(m--)
L05 if(is_prime(*b++)) s+=*b;
L06 return s;
L07