c语言的问题

一、 基础题(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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-24
#include <stdio.h>
void main()
{ int x[3], sum,i;
printf("Enter three numbers: \n");
scanf("%d%d%d",&x[0],&x[1],&x[2]);
sum = 0;
for(i=0; i<3;i++)
sum += x[i];
printf ("sum = %d\n",sum);
}
改错第一个,scanf后要有&,for循环里的是分号,其余的不想做,太多了本回答被提问者采纳
第2个回答  2009-04-24
楼主,太多了吧
(3):
int a;
if(ch=' '){a=1};
else a=0;
printf("%d",a);
第3个回答  2009-04-24
改错第4个
sum应定义为float
#5 i<N
#10 if前加else
相似回答