苏州市职业大学2010─2011学年第二学期试卷
《计算机语言C 》答案与评分标准
一、填空题 (每空1分,共161分)
1. 下列程序由两个源程序文件:t4.h 和t4.c 组成,程序编译运行的结果是: 【 】。
t4.h 的源程序为:
#define N 10
#define f2(x) (x*N)
t4.c 的源程序为:
#include
#define M8
#define f(x)((x)*M)
#include "t4.h"
main( )
{ int i,j;
i=f(1+1); j=f2(1+1);
printf("%d%d\n",i,j);
}
【答案】
16 11
2. 执行以下程序后,输出'#'号的个数是【 】。
#include
main()
{ int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++) putchar('#');
}
【答案】
6
3. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【 】( double,double);
main()
{ double x,y;
scanf("%lf%lf",&x,&y );
printf("%lf\n",max(x ,y));
}
double max(double a,double b)
{ return(a>b ? a:b); }
【答案】
double max
4. 下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。请填空。
#include
FILE *fp;
main( )
{ int i,j;
if((fp=fopen("【 】","wb"))==NULL) exit(0);
for(i=0;i<10;i++)
{ scanf("%d",&j);
fwrite(&j,sizeof(int),1,【 】);
}
fclose(fp);
}
【答案】
bi.dat fp
5. 以下程序中函数fun 的功能是:统计person 所指结构体数组中所有性别(sex)为M
的记录的个数,存入变量n 中,并作为函数值返回。请填空。
#include
#define N 3
typedef struct
{ int num; char nam[10]; char sex; } SS;
int fun(SS person[])
{ int i,n=0;
for(i=0; i
if( 【 】=='M') n++;
return n;
}
main()
{ SS W[N]={{1, "AA",’F’},{2, "BB",'M'},{3, "CC",'M'}}; int n;
n=fun(W); printf("n=%d\n", n);
}
【答案】
person[i].sex
6. 己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i 【 】;i++)
a【 】=a[i];
}
【答案】
7. 若有定义语句:int a=5;,则表达式a++的值是【 】。
【答案】
5
8. 若有定义:int k; ,以下程序段的输出结果是【 】。
for(k=2;k<6;k++,k++) printf("##%d",k);
【答案】
##2##4
9. 以下程序的输出结果是【 】。
#include
void fun(int x)
{
if(x/2>0) fun(x/2);
printf("%d",x);
}
main()
{
fun(3);printf("\n");
}
【答案】
13
10. 以下程序运行后的输出结果是【 】。
main()
{ int i=10, j=0;
do
{ j=j+i; i--;
}while(i>2);
printf("%d\n",j);
}
【答案】
52
11. 下面程序的运行结果是:【 】
int f( int a[], int n)
{ if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];
}
main ( )
{ int aa[3]={1,2,3},s;
s=f(&aa[0],3); printf("%d\n",s);
}
【答案】
6
12. 下列程序运行后的输出结果是【 】。
void swap(int x,int y)
{ int t;
t=x;x=y;y=t;printf("%d %d ",x,y); }
main( )
{ int a=3,b=4;
swap(a,b); printf("%d %d\n",a,b);
}
【答案】
4 3 3 4
13. 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【 】 。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
【答案】
10
14. 以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。
double fun(int n)
{double s=0.0,fac=1.0; int i;
for(i=1;i<=n;i++)
{fac=fac【 】;
s=s+fac;
}
return s;
}
【答案】
*(1.0/i)
15. 以下程序运行后的输出结果是【 】 。
main()
{ int a=1,b=3,c=5;
if (c=a+b) printf("yes\n");
else printf("no\n");
}
【答案】
yes
16. 以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)
int fun(int a[N][M])
{int i,j,row=0,col=0;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][col]){row=i;col=j;}
return(【 】);
}
【答案】
a[row][col]
17. 下列程序的运行结果是【 】。
int k=0;
void fun(int m)
{m+ =k;k+ =m;printf("m=%dk=%d",m,k+ +);}
main( )
{ int i=4;
fun(i+ +); printf("i=%dk=%d\n",i,k);
}
【答案】
m=4 k=4 i=5 k=5
18. 以下程序运行后的输出结果是【 】。
#include<stdio.h>
main()
{int a=200,b=010;
printf(”%d%d\n”,a,b);
}
【答案】
2008
19. 下列程序用于判断a、b、c 能否构成三角形,若能,输出YES,否则输出NO。当给a、
b、c 输入三角形三条边长时,确定a、b、c 能构成三角形的条件是需同时满足三个条
件:a+b>c,a+c>b,b+c>a。请填空。
main( )
{ float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if( 【 】 )printf("YES\n"); /*a、b、c 能构成三角形*/
else printf("NO\n"); /*a、b、c 不能构成三角形*/
}
【答案】
(a+b>c)&&(a+c>b)&&(b+c>a)
20. 下列程序的输出结果是【 】。
#include
main( )
{ char a[ ]={'\1', '\2', '\3', '\4', '\0'};
printf("% d%d\n",sizeof(a),strlen(a));
}
【答案】
5 4
21. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【 】( double,double);
main()
{ double x,y;
scanf("%lf%lf",&x,&y );
printf("%lf\n",max(x ,y));
}
double max(double a,double b)
{ return(a>b ? a:b); }
【答案】
double max
22. 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【 】 。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
【答案】
10
23. 有下列程序:
int sub(int n) { return(n/10+n%10);}
main( )
{ int x,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若运行时输入:1234
【答案】
10
24. 下列程序的功能是输出如下形式的方阵:
13 14 15 16
9 10 11 12
5 6 7 8
1 2 3 4
请填空。
main( )
{ int i,j,x;
for(j=4;j 【 】;j--)
{ for(i=1;i<=4;i+ +)
{ x=(j-1)*4+ 【 】;
printf("%4d",x);
}
printf("\n");
}
}
【答案】
>0 i
25. 若有程序,要求给i赋10,给j赋20,则应该从键盘输入【 】。
main()
{ int i,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d\n ",i,j);
}
【答案】
i=10,j=20
26. 下列程序中的函数strcpy2( )实现字符串两次复制,即将t 所指字符串复制两次到s 所
指内存空间中,全并形成一个新字符串。例如。若t 所指字符串为:efgh,调用strcpy2
后,s 所指字符串为:efghefgh。请填空。
#include
#include
void strcpy2(char *s,char *t)
{ char *p=t;
while(*s+ + =*t+ +);
s= 【 】;
while ( 【 】=*p+ +);
}
main( )
{ char str1[100]= "abcd",str2[ ]="efgh";
strcpy2(str1,str2); printf("%s\n",str1);
}
【答案】
s-1 *s++
27. 若已定义:int a[10],i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
fun( int a[ ])
{ int i;
for(i=1; i<=10; i++) 【 】=i;
for(i=0; i<5; i++) 【 】=a[i];
}
【答案】
a[i-1] a[9-i]
28. 下列程序运行后的输出结果是【 】。
main( )
{ int a=3,b=4,c=5,t=99;
if(a
printf("%d%d%d\n",a,b,c); }
【答案】
435
29. 设y是int型变量,请写出判断y为奇效的关系表达【 】。
【答案】
(Y%2)= =1
30. 设y是int型变量,请写出判断y为奇效的关系表达【 】。
【答案】
(Y%2)= =1
31. 下列程序运行后的输出结果是【 】。
main( )
{ char c; int n=100;
float f=10; double x;
x=f* =n/ =(c=50);
printf("%d %f\n",n,x);
}
【答案】
2 20.000000
32. 下列程序运行后的输出结果是【 】。
main( )
{ int a, b,c;
a=10; b=20; c=(a%b<1)‖(a/b>1);
printf("%d %d %d\n",a,b,c);
}
【答案】
10201
33. 以下程序的输出结果是【 】 。
main()
{ int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
【答案】
5
34. 若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【 】);。
【答案】
”d1.fat”,”rb”
35. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i;
for(i=0; 【 】!=‘\0';i++);
return(【 】);
}
【答案】
*(str+i)或str[i] i
36. 以下程序运行后的输出结果是【 】 。
main()
{ int p=30;
printf("%d\n",(p/3>0?p/10:p%3));
}
【答案】
3
37. 在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【 】时表示逻辑值“真”。
【答案】
非0
38. 下列函数rotate 的功能是:将a 所指N 行N 列的二维数组中的最后一行放到b 所指
二维数组的第0 列中,把a 所指二维数组中的第0 行放到b 所指二维数组的最后一列
中,b 所指二维数组中其他数据不变。
#define N 4
void rotade(int a[ ][N],int b[ ][N])
{ int i,j;
for(i=0;I
{ b[i][N-1]= 【 】; 【 】=a[N-1][i]; }
}
【答案】
a[0][i] b[0][i]
39. 有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(”%d\n”,*r);
}
int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序运行后的输出结果是【 】
【答案】
2
40. 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
Strcen(char a[], char b[])
{ int num=0,n=0;
while(*(a+num)!=【 】) num++;
while(b[n]){*(a+num)= b[n]; num++;【 】;}
return(num);
}
【答案】
‘\0'或0 n++或n+=1或n=n+1
41. 已有定义:char c=' ';int a=1, b;(此处c 的初值为空格字符),执行b=!c &&a;后
b 的值为【 】。
【答案】
0
42. 设变量a 和b 已正确定义并赋初值。请写出与a-=a+b 等价的赋值表达式【 】。
【答案】
a=a-(a+b)或 a=-b
43. 函数fun的功能是:使一个字符串按逆序存放,请填空
void fun (char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i<【 】;i++,j--)
{ m=str[i];
str[i]=【 】;
str[j-1]=m;
}
printf("%s\n",str);
}
【答案】
strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1 str[j-1]或*(str+j-1)
44. 下列程序的功能是:将输入的正整数按逆序输出。例如:若输入135 则输出531。请
填空。
#include
main( )
{ int n,s;
printf("Enter a number : "); scanf("%d",&n);
printf("Output: ");
do
{ s=n%10; printf("%d",s); 【 】;}
while(n! =0);
printf("\n");
}
【答案】
n/=10
45. 下列程序的输出结果是【 】。
#include
main()
{ int n=12345,d;
while(n! =0) { d=n%10;printf("%d",d);n/=10; }
}
【答案】
54321
46. 执行下列程序后的输出结果是【 】。
main( )
{ int a=10;
a=(3*5,a+4); printf("a=%d\n",a);
}
【答案】
a=14
47. 以下函数的功能是:求x的y次方,请填空。
double fun( double x, int y)
{ int i;
double z;
for(i=1, z=x; i
return z;
}
【答案】
x
48. 设有以下变量定义,并已赋确定的值
char w; int x; float y ; double z;
则表达式:w*x+z-y所求得值的数据类型为【 】
【答案】
double
49. 以下程序运行后的输出结果是 【 】 。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}
【答案】
3
50. 下列程序运行后的输出结果【 】。
main( )
{ int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n"b);
}
【答案】
1
51. 有下列程序段,且变量已正确定义和赋值
for(s=1.0,k=1;k<=n;k+ +) s=s+1.0/(k*(k+1) );
printf("s=%f\n\n",s);
请填空,使下列程序段的功能与之完全相同
s=1.0;k=1;
while( 【 】){s=s+1.0/(k*(k+1) ); 【 】;}
printf("s=%f\n\n",s);
【答案】
k<=n k++
52. 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char *s,char *t)
{ while(*s++=【 】);}
main( )
{ char str1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
【答案】
*t++
53. 以下程序输出的结果是【 】。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
【答案】
0
54. 有以下程序,程序运行后的输出结果是【 】。
float fun(int x,int y)
{return(x+y); }
main()
{int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
【答案】
9
55. 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
struct st
{ char name[20]; double score; };
main()
{ struct st ex;
printf("ex size: %d\n",sizeof( 【 】 ));
}
【答案】
struct st 或ex
56. 执行以下程序后,输出'#'号的个数是【 】。
#include
main()
{ int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++) putchar('#');
}
【答案】
6
57. 下列程序的输出结果是【 】。
#include
main( )
{printf("%d\n",strlen("IBM\n012\1\\"));}
【答案】
9
58. 有以下程序,请在 【 】 处填写正确语句,使程序可正常编译运行。
#include
【 】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}
【答案】
double avg(double a,double b);
59. 有以下程序
#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}
}
程序运行后的输出结果是【 】。
【答案】
141340
60. 下列程序运行后的输出结果是【 】。
main( )
{ char c1,c2;
for(c1='0',c2='9';c1
printf("\n");
}
【答案】
0918273645
61. 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 [ ] 。
c=(a-=(b-5));
c=(a%11)+(b=3);
【答案】
3
62. 下列程序中,fun()函数的功能是计算x2-2x+6,主函数中将调用fun()函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include "math.h"
double fun(double x){return(x*x-2*x+6);}
main( )
{ double x,y1,y2;
printf("Enter x: "); scanf("%lf",&x);
y1=fun( 【 】);
y2=fun( 【 】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
【答案】
x+8 sin(x)
63. 设有如下宏定义
#define MYSWAP(z,x,y) {z=x; x=y; y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
float a=5,b=16,c;
MYSWAP(【 】,a,b);
【答案】
c
64. 以下sum函数的功能是计算下列级数之和。
s=1+x+x^2/2!+x^3/3!+........+x^n/n!
请给函数中的各变量正确赋初值。
double sum(double x, int n )
{ int i; double a,b,s;
【 】
for( i=1;i<=n;i++)
{ a=a*x; b=b*i; s=s+a/b; }
return s;
}
【答案】
a=1;b=1;s=1;
65. 下列程序的输出结果是【 】 。
#include
main( )
{ int i;
for(i='a';i<'f';i+ +,i+ +) printf("%c",i-'a'+'A');
printf("\n");
}
【答案】
ACE
66. 若有语句
int i=-19,j=i%4;
printf("%d\n",j);
则输出的结果是【 】。
【答案】
-3
67. 设有定义
struct person
{ int ID;char name[12];}p;
请将scanf("%d",【 】);语句补充完整,使其能够为结构体变量p的
成员ID正确读入数据
【答案】
&p.ID
68. 下列程序的功能是输出a、b、c 三个变量中的最小值。请填空。
#include
main( )
{ int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a【 】;
t2=c
printf("%d\n",t2);
}
【答案】
a:b c:t1
69. 下列程序运行后的输出结果是 【 】。
main( )
{ int m=011,n=11;
printf("%d %d\n",+ +m,n+ +);
}
【答案】
10 11
70. 以下程序的功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。
#include
main()
{ int a[10],*p,*s;
for(p=a;p-a<10;p++) scanf("%d",p);
for(p=a,s=a;p-a<10;p++) if(*p>*s) s= 【 】 ;
printf(“index=%d\n”,s-a);
}
【答案】
p
71. 以下程序的输出结果是 【 】 。
#define MAX(x,y) (x)>(y)?(x):(y)
main()
{ int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
【答案】
7
72. 表达式(int)((double)(5/2)+2.5)的值是【 】
【答案】
4
73. 执行下列程序时,输入1234567
#include
main( )
{ int a=1,b;
scanf("%2d%2d",&a,&b); printf("%d%d\n",a,b);
}
【答案】
12 34
74. 有以下程序
#include<stdio.h>
main()
{int x,Y;
scanf(”%2d%3d”,&x,&y);printf(”%d\n”,x+y);
}
程序运行时输入:1234567程序的运行结果是【 】。
【答案】
357
75. 设x为int型变量,请写出一个关系表达式 【 】 ,用以判断x同时为3和7的倍数时,关系表达式的值为真。
【答案】
(x%3==0)&&(x%7==0)
76. 设有以下程序: 程序运行后,如果从键盘上输入1298;则输出结果为【 】。
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
【答案】
8921
77. 若变量a,b 已定义为int 类型并赋值21 和55,要求用printf 函数以a=21,b=55 的形
式输出,请写出完整的的输出语句 【 】 。
【答案】
printf("a=%d,b=%d",a,b);
78. 设有说明:
struct DATE{int year;int month;int day;};
请写出一条定义语句,该语句定义d 为上述结构体类型变量,并同时为其成员year、
month、day 依次赋初值2006、10、1: 【 】。
【答案】
struct DATE d={2006,10,1};
79. 已知字母A 的ASCII 码为65,下列程序运行后的输出结果是【 】。
main( )
{ char a,b;
a='A'+'5'-'3'; b=a+'6'-'2';
printf("%d %c\n",a,b);
}
【答案】
67 G
80. 以下程序运行后的输出结果是 【 】 。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}
【答案】
20 0
81. 以下程序的定义语句中,x[1]的初值是【 】,程序运行后输出的内容是【 】。
#include
main()
{
int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{
p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
【答案】
2 2 4 6 8
82. 下列程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A 的个数,
num[1]中统计字母B 的个数,其他依次类推。用#号结束输入,请填空。
#include
#include
main( )
{ int num[26]={0},i; char c;
while(( 【 】)! ='#')
if(isupper(c)) num[c-'A']+ = 【 】;
for(i=0;i<26;i+ +)
printf("%c:%d\n",i+'A',num[i]);
}
【答案】
c=getchar() 1
83. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
int fun( int n)
{ int m=0,f=1,i;
for(i=1; i<=n; i++)
{ m+=i*f;
f=【 】 ;
}
return m;
}
main()
{ printf("m=%d\n",【 】); }
【答案】
-f f(10)
84. 若整型变量a 和b 中的值分别为7 和9,要求按以下格式输出a 和b 的值:
a=7
b=9
请完成输出语句:printf (" 【 】",a,b);。
【答案】
a=%d\nb=%d
85. 下列程序中,fun()函数的功能是求3 行4 列二维数组每行元素中的最大值。请填空。
void fun(int, int, int(*)[4],int*);
main( )
{ int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i+)printf("%4d",b[i]);
printf("\n"); }
void fun(int m, int n, int ar[ ][4], int *br)
{ int i, j, x;
for(i=0;i
{ x=ar[i][0];
for(j=0;j
if(x
【 】=x;
}
}
【答案】
br[i]
86. 以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n所指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。请填空:
void fun (char *w,char x,int *n)
{ int i,p;
p=0;
while (x>w[p])
【 】
for(i=*n;i>p;i--)w[i]= 【 】
w[p]=x;
++ *n;
}
【答案】
p++; w[i-1];
87. 以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)
int fun(int x[N])
{int i,k=0;
for(i=0;i
if(x[i]< x[k])【 】;
return x[k];
}
【答案】
k=i
88. 以下函数的功能是删除字符串s中的所有数字字符。请填空。
viod dele(char *s)
{ int n=0,i;
for(i=0;s[i];i++)
if(【 】)
s[n++]=s[i];
s[n]=【 】;
}
【答案】
!(s[i]>='0'&&s[i]<='9') '\0'
89. 下面的程序是求满足如下条件的最大的n:12+22+32+...+n2<1000。请填空。
main()
{ int s, n;
;
while(s<1000)
{ n++; s+=n*n; }
printf("n=%d, s=%d\n", );
}
【答案】
s=n=0 n-1,s-n*n
90. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
int fun( int n)
{ int m=0,f=1,i;
for(i=1; i<=n; i++)
{ m+=i*f;
f=【 】 ;
}
return m;
}
main()
{ printf("m=%d\n",【 】); }
【答案】
-f f(10)
91. 有以下定义和语句,则sizeof(a)的值是【 】,而sizeof(a.share)的值是【 】
struct date{ int day;
int month;
int year;
union{int share1
float share2;
}share;
}a;
【答案】
10 4
92. 下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add(int x,inty, 【 】)
{ 【 】 =x+y;}
【答案】
int *z *z
93. 有以下语句段
int n1=10,n2=20;
printf("【 】",n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
【答案】
n1=%d\nn2=%d
94. 以下程序运行后的输出结果是【 】
fun(int x)
{ if(x/2>0) fun(x/2) ;
printf("%d ",x);
}
main()
{ fun(6); }
【答案】
1 3 6
95. 设有定义:FILE *fw;,请将以下打开文件的语句补充完整,以便可以向文本文件
readme.txt 的最后续写内容。
fw=fopen("readme.txt", 【 】);
【答案】
"a"
96. 下列程序的功能是输入任意整数给n 后,输出n 行由大写字母A 开始构成的三角形
字符阵列图形。例如,输入整数5 时(注意:n 不得大于10),程序运行结果如下:
A B C D E
F G H I
J K L
M N
O
请填空完成该程序。
main( )
{int i,j,n; char ch='A';
scanf("%d",&n);
if(n<11)
{for(i=1;i<=n;i+ +)
{for(j=1; j<=n-i+1;j+ +)
{ printf("%2c",ch);
【 】 ;
}
【 】 ;
}
}
else printf("n is too large!\n")
printf("\n");
}
【答案】
ch++ printf("\n")
97. 下列程序的运行结果为【 】
#include
#include
struct A
{int a; char b[10];double c;};
void f(struct A *t);
main()
{ struct A a={1001,"ZhangDa",1098.0};
f(&a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct A *t)
{ strcpy(t->b,"ChangRong");}
【答案】
1001,ChangRong,1098.0
98. 下面程序的功能是:输出 100以内能被 3整除且个位数为 6的所有整数,请填空。
#include<stdio.h>
main()
{ int i, j;
for(i=0;i<=9; i++)
{ j=i *10+6;
if (【 】) continue;
printf("%d", j);
}
}
【答案】
j%3!=0或j%3
99. 若有以下定义和语句,则sizeof(a)的值是【 】,而sizeof(b)的值是【 】。
struct { int day; char mouth; int year;}a;*b;
b=&a;
【答案】
5 2
100. 已知字符A 的ASCII 代码值为65,下列程序运行时若从键盘输入:B33
出结果是 【 】。
#include
main( )
{ char a,b;
a=getchar( );scanf("%d", &b);
a=a-'A'+'0'; b=b*2;
printf("%c %c\n",a,b);
}
【答案】
1B
101. 下列函数fun 的功能是返回str 所指字符串中以形参c 中字符开头的后续字符串的首
地址,例如:str 所指字符串为:Hello!,c 中的字符为e,则函数返回字符串:ello!
的首地址。若str 所指字符串为空串或不包含c 中的字符,则函数返回NULL。请填
空。
char *fun(char *str,char c)
{ int n=0; char *p=str;
if(p! =NULL)
while(p[n]! =c&&p[n]! = '\0')n+ +;
if(p[n]= = '\0') return NULL;
return( 【 】 );
}
【答案】
p+n
102. 设有定义语句:int a[ ][3]={{0},{1}{2}};,则数组元素a[1][2]的值是【 】。
【答案】
0
103. 有以下程序(说明:字符0的ASCII码值为48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序运行时从键盘输入48<回车>,则输出结果为 【 】 。
【答案】
09
104. 有以下程序
#include
main()
{ char a[20]="How are you?",b[20];
scanf("%s",b); printf("%s %s\n",a,b);
}
程序运行时从键盘输入: How are you?<回车>
则输出结果为【 】
【答案】
How are you? How
105. 以下程序运行后的输出结果是【 】
#include
main()
{ int x=20;
printf("%d ",0
printf("%d\n",0
}
【答案】
1 0
106. 下列程序的功能是:输出100 以内(不含100)能被3 整除且个位数为6 的所有整数,
请填空。
main( )
( int i,j;
for(i=0; 【 】 ;i+ +)
{ j=i*10+6;
if( 【 】 )continue;
printf("%d",j);
}
}
【答案】
i<10 j%3!=0
107. 下面程序的功能是从键盘输入10个无序的整数,去掉一个最大数和最小数,然后求其平均值。请填空。
main()
{ int j,x,max,min,sum;
float ave;
printf(“Enter 10 number:\n”);
scanf(“%d”,&x);
sum=max=min=x;
for( ;j<=10;j++)
{ ;
sum+=x;
if( x>max ) max=x;
else if(x
}
;
ave=sum/8.0;
printf(“The average is %.2f\n”,ave);
}
【答案】
j=2 scanf("%d",&x) sum=sum-max-min
108. 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
现在请你在下面的函数中填空,完成求π的功能。
#include "math.h"
double pi(long n)
{ double s=0.0; long i;
for(i=1;i<=n;i++)s=s+【 】;
return(sqrt(6*s));
}
【答案】
1.0/(i*i)
109. 若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(【 】,x/y);
补充完整,使其输出的计算结果形式为: x/y=11。
【答案】
"x/y=%d"
110. 下列程序运行后的结果是【 】。
#include
void fun(char *s, int p, int k)
{ int i;
for(i=p;i
main( )
{ char s[ ]="abcdefg";
fun(s,3,strlen(s)); puts(s);
}
【答案】
abcfg
111. 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。
#include< Stdio.h>
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i<=10; i+=2 )
{ a+=i;
【 】;
c+=b;
}
printf("偶数之和=%d\n”,a);
printf("奇数之和=%d\n”,c-11);
}
【答案】
b=i+1
112. 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include
#include
main()
{ char a[]="clanguage",t;
int i,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j
if (【 】) { t=a[i]; a[i]=a[j]; a[j]=t;}
puts(a);
printf("\n");
}
【答案】
j+=2 a[i]>a[j]
113. 下列程序的输出结果是【 】。
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5;printf("%d\n",k);
}
【答案】
55
114. 下列程序运行时若从键盘输入:10 20 30
#include
main( )
{ int i=0, j=0, k=0;
scanf("%d%*d%d",&i,&j,&k); printf("%d%d%d\n",i,j,k);
}
【答案】
10300
115. 若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 【 】。
int b,c; float a;
scanf("%f,%d,c=%d",&a,&b,&c);
【答案】
5.0,4,c=3
116. 下列程序的功能:利用指针指向3 个整型变量,并通过指针运算找出3 个数中的最大
值,输出到屏幕上。请填空。
main( )
{int x,y,z,max, *px, *py, *pz, *pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x; py=&y; pz=&z; pmax=&max;
【 】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);
}
【答案】
*pmax=*px
117. 若有以下程序,执行后输出结果是【 】。
main()
{ char a;
a='H'-'A'+'0';
printf("%c\n",a);
}
【答案】
7
118. 若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值是【 】
【答案】
1
119. 设有定义:float x=123.4567;,则执行下列语句后的输出结果是【 】。
printf("%f\n",(int)(x*100+0.5)/100.0);
【答案】
123.460000
120. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。
#include
main()
{ char str[100],str2[100],c;
int i,s;
printf("\n input string 1:\n"); gest(str1);
printf("\n input string 2:\n"); gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!=【 】))
i++;
s=【 】;
printf("%d\n",s);
}
【答案】
'\0'或0 strl[i]-str2[i]
121. 65. 以下程序的输出结果是【 】
int fun(int x,int y)
{ static int m=0,i=2;
i+=m+1;
m=i+x+y;
return m
}
main()
{ int j=4,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
【答案】
8,17
122. 有以下程序,执行后输出结果是【 】。
main( )
{ int t=1,i=5;
for(;i>=0;i--) t*=i;
printf("%d\n",t);
}
【答案】
0
123. 下列函数sstrcat( )的功能是实现字符串的连接,即将t 所指字符串复制到s 所指字符
串的尾部。例如:s 所指字符串为abcd,t 所指字符串为efgh,函数调用后s 所指字
符串为abcdefgh。请填空。
#include
void sstrcat(char *s,char *t)
{ int n;
n=strlen(s);
while(*(s+n)= 【 】){s+ +,t+ +;}
}
【答案】
*t
124. 有以下语句段
int n1=10,n2=20;
printf("【 】",n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
【答案】
n1=%d\nn2=%d
125. 下列程序的功能是计算:s=1+12+123+1234+12345。请填空。
main( )
{ int t=0,s=0,i;
for(i=1;i< =5;i+ +}
{ t=i+ 【 】; s=s+t; }
printf("s=%d\n",s);
}
【答案】
t*10
126. 当执行下列程序时,输入1234567890
#include
main( )
{ char ch;
while((ch=getchar( ))= ='0')printf("#");
}
【答案】
0
127. 下列程序中huiwen()函数的功能是检查一个字符串是否是回文,当字符串是回文时,
函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即
正向与反向的拼写都一样,例如:adgda。请填空。
#include
char*huiwen(char *str)
{ char *p1,*p2; int i,t=0;
p1=str; p2= 【 】;
for(i=0);i<=strlen(str)/2;i+ +)
if(*p1+ +! =*p2--){t=1;break;}
if( 【 】)
return("yes!");
else
return("no!");
}
main( )
{ char str[50];
printf("Input:"); scanf("%s",str);
printf("%s\n", 【 】);
}
【答案】
str+strlen(str)-1 i>strlen(str)/2 huiwen(str)
128. 以下程序运行后的输出结果是【 】
#include
main()
{ int a=1,b=7;
do{
b=b/2;a+=b;
} while (b>1);
printf("%d\n",a);
}
【答案】
5
129. 已知字符A的ACSII码值为65,以下语句的输出结果是【 】
char ch=’B’;
printf("%c %d\n",ch,ch);
【答案】
B 66
130. 下列isprime 函数的功能是判断形参a 是否为素数,是素数,函数返回1,
否则返回0。请填空
int isprime(int a)
{ int i;
for(i=2;i<=a/2;i+ +)
if(a%i= =0) 【 】 ;
【 】 ;
}
【答案】
return 0 return 1
¥29.8
¥9.9
¥59.8