C语言练习题集(带答案解析) 下载本文

精品文档

} cnum[2]={1,3, 2, 7}; mai n() { printf( }

运行结果是:6

%d\\n”,c nu m[O].y * cn um[1].x );

4.

#i nclude struct abc { int a, b, c; }; main ()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a+s[1].b; prin tf(\”,t); }

运行结果是:6

精品文档

三、程序填空

1输入一个字符,判断该字符是数字、字母、空格还是其他字符。

mai n() { char ch; ch=getchar();

if( ____ ch>='a'&ch<=z '||ch>= 'A'&&ch<='Z') prin tf(\else if( _____ ch>='0'&&ch<='9' )

prin tf(\else if( ____ ch== ‘ '

prin tf(\else

prin tf(\

2.下列程序的功能是从输入的整数中,

统计大于零的整数个数和小于零的整数个数。

用输

入0来结束输入,用i,j来放统计数,请填空完成程序。 void mai n() { printf( scanf( while (

int

n ,i=0,j=0;

input a in teger,0 for end\\n %c”&n);

n 或 n!=0 ) { if(n >0) i=

else j=j+1; } printf(

'”;

i+1 ;

i=M,j=M\\n ”,i,j);

}

3.编程计算1+ 3+ 5+

+ 101的值

精品文档

#i nclude void mai n() { int i, sum = 0;

for (i = 1;

i<=101 sum = sum + i;

prin tf(\

;

i++

)

4. 编程计算1 + 3+ 5…+ 99的值

main () { int i, sum = 0;

i=1; while (

i<100

)

{ sum = sum + i;

i++

prin tf(\}

5. 从键盘输入一个字符,判断它是否是英文字母。 #i nclude void mai n() {char c;

printf(\c=getchar();

if(c>= A ' &&c<= Z' || c>= a '&&c<= else prin tf(\}

6. 下面程序的功能是在 a数组中查找与x值相同的元素所在位置,请填空。

#i nclude void mai n() { int a[10],i,x; printf(

input 10 integers

for(i=0;i<10;i++)

scanf( ?,&a[i]);

printf(

input the number you want to find x

scanf( %d: &x );

for(i=0;i<10;i++)

:\

: ”); ; }

z°)

printf(\

精品文档

if( x==a[i]

break;

if(

i<10 printf(

else printf( }

)

)

fhe pos of x is : %d\\n”);

“an not find x ! \\n ”

7?程序读入20个整数,统计非负数个数,并计算非负数之和。 #i nclude mai n()

{ int i, a[20], s, count; s=co un t=0; for(i=0; i<20 ; i++) sca nf(

%(”& a[i]);

for(i=0; i<20; i++) { if( a[i]<0 ) continue ;

s+=a[i] ; coun t++; }

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

8.输入一个正整数n (1 int main (void){

int i, i ndex, k, n, temp; ___________ / printf( printf(

En ter n:\

En ter %d in tegers: \

定义1个数组a,它有10个整型元素*/

for(i = 0; i < n; i++) scanf(\for(k = 0; k < n-1; k++){ /* in dex = k;

for( _____________ ) __________________ if(

) in dex = i; ______

对 n 个数排序 */

精品文档

}

prin tf(\for(i = 0; i < n; i++) return 0;}

/*

输出n个数组元素的值*/

四、程序改错

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

2 3 4

n

mai n() { long int sum; int n,i=1; scan f(\printf(

“n ”);

while(i< n) { sum=sum*i; i++;

}

prin tf(\}

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

第十行改为:prin tf(\

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

mai n() { 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]);