好文档 - 专业文书写作范文服务资料分享网站

大学C语言期末考试练习题(带详解答案) 

天下 分享 时间: 加入收藏 我要投稿 点赞

(详见p69-78);

}

sum应初始化 即加入sum=1 第四行改为:scanf(“%d”,&n);

第六行改为:while(i<=n)或者 while(i

2.求一个数组中最大值及其下标。

main( )

{ int max,j,m; int a[5];

for(j=1;j<=5;j++) // j=1为循环变量j赋初值为1,同时用j作为数字元素的逻辑地址下标。因此输出的时候只能从a[1]开始输出,无法输出a[0].因此应将j赋初值0,相应的循环条件改为j<5或者j<=4用于控制循环执行5次

scanf(“%d”,a); //若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面欲赋值的变量的类型一致,此题%d与a的类型int一致(详见p69-78);(2)变量的前面要有地址符号&

max=a[0];

for(j=1;j<=5;j++) //修改思路与上一个for语句同 if(max>a[j]) { max=a[j]; m=j; }

printf(“下标:%d\\n最大值:%d”, j, max) //j为for语句的循环变量,当for语句

执行完之后,j中的值为6,并非最大值下标,在执行某一次循环的比较过程中,将当时最大值的下标存在了m里

}

第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max

第十三行改为:printf(“下标:%d\\n最大值:%d”, m,max)

3.用一个函数求两个数之和。

sum(x,y) //函数定义的一般形式p173-174 { float z; z=x+y;

return; //return语句后面可以返回0、常量、变量和表达式的值。 }

main()

{ float a,b;

int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定

义用于存放运算结果的变量时,一定要赋初值。一般赋值0或者循环初值。

scanf(\c=sum(a,b);

printf(\}

第一行改为:float sum(float x, float y ); 第四行改为:return(z);或者return z; 第八行:float c;

第十一行:printf(\

4. 程序读入20个整数,统计非负数个数,并计算非负数之和. #include “stdio.h” main() {

int i, s , count ,n=20;

int a[n]; //数组定义的一般形式,详见p143, 其中的常量表达式不能为变量 s=count=1;

for( i=1, i<20, i- -) // for语句的格式,三个表达式之间用分号,且分号不可省略

scanf(“%d”, a[i] ); //若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面欲赋值的变量的类型一致,此题%d与n的类型int一致(详见p69-78);(2)变量的前面要有地址符号& for(i=0;i<20;i++) {

if(a[i]<0)

break; // break与continue的区别 p128. 在改错题中若错误出现在break语句,

则通常是将break换为continue;反之,若错误出现在continue,通常是将其换为break

s +=a[i]; count++; }

printf(“s=%f count=%f\\n”, s, count); //若printf语句有错误,常见考点有1个:格式声明符号要与后面欲输出的变量的类型一致 }

答案:int a[20]

s=count=0; for(i=0;i<20;i--) scanf(“%d”,&a[i]); continue;

printf(“s=%d count=%d\\n”,s,count);

5. 从键盘输入整数x的值,并输出y的值.

main()

{ float x,y;

scanf(“%d”,&x);

y=3.5+x;

printf(“y=%d”); }

正确的: int x; float y; printf(“y=%f”,y);

6 编程计算下面分段函数, 输入x, 输出y

x?0?x?1?y??2x?10?x?10

?3x?11x?10?main() { int x,y;

printf(“\\n Input x:\\n”);

scanf(“%d”, x); // 错误同上题scanf

if(x<0) y=x-1;

else if(x>=0||x<=10) // ||表示逻辑或,当左边表达式成立或者右边表达式成立时,整个表达式成立。 &&表示逻辑与,当左边表达式和右边表达式同时成立时,整个表达式成立。此处用逻辑表达式来表示x的区间[0,10], 因此应改用逻辑与符号 y=2x-1; // C语言中乘号不能省略,且用*表示乘法运算

else

y=3x-1; // C语言中乘号不能省略,且用*表示乘法运算

printf(“y=%d”,&y); //printf与scanf不用,printf后面给出的是变量名列表或表达式列表,无需地址符号

}

第一处改为:scanf(“%d”,& x); 第二处改为:x>=0&&x<=10 第三处改为:y=2*x-1; 第四处改为:y=3*x-1; 第五处改为:printf(“y=%d”,y);

7. 求100~300间能被3整除的数的和。

main()

{ int n;

long sum; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值, 一般赋值0或者循环初值。

for(n=100,n<=300,n++) // for语句的格式,三个表达式之间用分号,且分号不可省略

{

if(n%3=0) // = 是赋值符号,用于将右边的值赋给左边的变量;== 是

关系符号,用来判断两个值是否相等 。改错中if后面表达式中的赋值符号是常见的考点。

sum=sum*n; }

printf(“%ld ”,sum); }

第一处改为:long sum=0;

第二处改为:for(n=100;n<=300;n++) 第三处改为:if(n%3==0) 第四处改为:sum=sum+n; 8. 求表达式c?ab的值

#include #include int fun(int x, int y); main()

{ int a,b; float f;

scanf(“%d,%d”,a,b); //与改错第1题中的scanf错误相同 if(ab>0){ // C语言中乘号不能省略,且用*表示乘法运算

fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里 printf(\ //与第6题中printf错误相同 }

else printf(“error!”);}

fun(x, y) // 定义函数的一般形式p173-174 { float result;

result = sqrt(a+b); return; //return语句后面可以返回0、常量、变量和表达式的值。

} 第一处改为:if(a*b>0) 第二处改为:f= fun(a,b);

第三处改为:printf(\第四处改为:float fun(int x, int y) 第五处改为:f= fun(a,b);

第六处改为:result = sqrt(a*b); 第七处改为:return result;

五、 编程题

1.输入2个整数,求两数的平方和并输出。

#include int main(void) { intt a ,b,s;

printf(\ scanf(\ s=a*a+b*b;

printf(\ is %d\\n\return 0; }

2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。

#include #define PI 3.14

int main(void)

{ double r ,area , girth; printf(\ scanf(\

if (r>=0) { area =PI*r*r; girth =2*PI*r ;

printf(\

printf(\

else

printf(\ return 0; }

3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0) 2x-1 (x>0)

#include void main() { int x,y;

scanf(“%d”,&x); if(x<0) y=2*x+1;

8x8516pjq775cln2zb9f
领取福利

微信扫码领取福利

微信扫码分享