C语言练习题带答案 下载本文

7.程序读入20个整数,统计非负数个数,并计算非负数之和。 #include main( )

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

{ if( a[i]<0 ) continue ; s+=a[i] ; count++; }

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

8. 输入一个正整数n (1

#include int main(void){

int i, index, k, n, temp;

/* 定义1个数组a,它有10个整型元素*/ printf(“Enter n: \

printf(“Enter %d integers: \ for(i = 0; i < n; i++) scanf(\

for(k = 0; k < n-1; k++){ /* 对n个数排序 */ index = k;

for( ) if( ) index = i; }

printf(\

for(i = 0; i < n; i++) /* 输出n个数组元素的值 */ return 0;}

四、 程序改错

一、 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。

1.求1?2?3?4???n main()

{ long int sum; int n,i=1;

scanf(\printf(“\\n”); while(i

{ sum=sum*i; i++; }

printf(\}

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

第十行改为:printf(\

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

main( )

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

for(j=1;j<=5;j++) scanf(“%d”,a); max=a[0];

for(j=1;j<=5;j++) if(max>a[j]) { max=a[j]; m=j; }

printf(“下标:%d\\n最大值:%d”, j, max) }

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

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

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

sum(x,y) { float z; z=x+y; return; }

main()

{ float a,b; int c;

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

printf(\}

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

第十一行:printf(\

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

int i, s , count ,n=20; int a[n]; s=count=1; for( i=1, i<20, i- -)

scanf(“%d”, a[i] ); for(i=0;i<20;i++) {

if(a[i]<0)

break;

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

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

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

答案:int a[20]

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

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); if(x<0) y=x-1;

else if(x>=0||x<=10) y=2x-1; else y=3x-1; printf(“y=%d”,&y); }

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

main() { int n;

long sum; for(n=100,n<=300,n++) {

if(n%3=0) sum=sum*n; }

printf(“%ld ”,sum); }

8. 求表达式c?ab的值

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

{ int a,b; float f;

scanf(“%d,%d”,a,b); if(ab>0){

fun(a,b);

printf(\ }

else printf(“error!”);}

fun(x, y) { float result;

result = sqrt(a+b); return; }

9、通过函数调用,求两个数之差

sub(x,y) { float z; z=x-y; return; }

main()

{ float a,b; int c; scanf(“%f,%f”,&a,&b); sub(a,b); printf(“\\nSub is %f”,sub); }