一、 基础题(30%)
3.设有ch=getchar(),写出判断ch不是“回车”的表达式。
5.分别计算字符串的长度:“\’usst\”\n”与“\\xyz\t123\123”。
6.定义int a=320,b; char ch=’A’; b=a-ch; ch=a; 求出b和ch的值。
7.写出实数x的小数点第二位四舍五入的表达式。
二、 改错(40%)
1、试找出程序中的语法错误,写出错误所在行号及正确内容。
本程序输入三个整数,输出这三个整数的和(有三处错)。
#1 #include <stdio.h>
#2 void main()
#3 { int x[3], sum;
#4 printf("Enter three numbers: \n");
#5 scanf("%d%d%d",x[0],x[1],x[2]);
#6 sum = 0;
#7 for(i=0, i<3, i++)
#8 sum += x[i];
#9 printf ("sum = %d\n",sum);
#10 }
2、本程序用二分法在一个已升序排列的数组中查找某个数。若存在,输出该数及它的下标位置;若不存在,输出表示找不到该数的信息。
#1 #include <stdio.h>
#2 void main()
#3 { int a[10]={2,5,6,8,11,15,18,22,60,88};
#4 int low,high,m,i,x;
#5 scanf("%d",&x);
#6 low=0;
#7 high=0;
#8 while(low<=high)
#9 {
#10 m=(low+high)/2;
#11 if (x=a[m]) break;
#12 else if (x>a[m]) low=m+1;
#13 else high=m-1;
#14 }
#15 if (low=high)
#16 printf("%d is found, the position is %d\n",x,m);
#17 else
#18 printf("%d is not found\n",x);
#19 }
3、由键盘输入长度不超过80的字符串,在按原样输出。(本题有3处错)
#1 #include <string.h>
#2 void main()
#3 {
#4 char str[80];
#5 int i=0;
#6 while(1)
#7 { scanf("%s",str[i]);
#8 if (str[i++]=='\n') return;
#9 }
#10 str[i]='\0';
#11 printf("%s\n",str);
#12 }
4、下面的程序用于将计算n个元素组成的整型数组中去掉一个最大值和一个最小值后求平均值(如果有多个相同的最大值和最小值,只需去掉一个,且要求n>2)。(本题有3个错)
#1 #define N 10
#2 main()
#3 { int a[N],i,sum,max,min;
#4 float aver;
#5 for (i=0;i<n;i++)
#6 scanf("%d",&a[i]);
#7 sum=max=min=0;
#8 for (i=1;i<N;i++)
#9 { if (max<a[i]) max=a[i];
#10 if (min>a[i]) min=a[i];
#11 sum=sum+a[i]; }
#12 aver=(sum-max-min)/(N-2);
#13 printf("average=%f\n",aver);
#14 }
三、 程序填空(15%)
1.以下程序可以把从键盘上输入的十进制数(long型)以二进制~十六进制任一制式的形式输出,请填空。
#include <stdio.h>
main()
{ char b[]={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F',};
int c[64],d,i=0,base;
long n;
printf("enter a number :\n"); scanf("%ld",&n);
printf("enter new base :\n"); scanf("%d",&base);
do
{ c[i]= ① ;
i++;
n= ② ;
} while ( ③ );
printf("transmite new base:\n");
for (--i;i>=0;--i)
{ d=c[i];
printf("%c",b[d] );
}
printf("\n");
}
四、 编写程序
1、cos(x)幂级数展开的近似公式是1-x2/2!+x4/4!-x6/6!+…-(-1)n+1xn/n!,其中x是弧度值,要求输入角度值,求cos(x),取n=10。
2、打印出下面图案,第一行的第四颗*定位在第20列。
*******
*****
***
*
#include "stdio.h"
int main()
{
int sum=0,i;
for (i=2;i<=100;i=i+2)
sum=sum+i;
printf("2+4+6...+100=%d\n",sum);
return 0;
}
#include "stdio.h"
#include "string.h"
int main()
{
char s1[6]={};
char s2[6]={'w','a','t','e','r','\0'};
int i;
printf("输入字符串: \n");
gets(s1);
for (i=0;i<5;i++)
{
if(s1[i]!=s2[i])
break;
}
if(i==5)
printf("This word is water\n");
else
printf("This word is not water\n");
return 0;
}