C语言练习题(带详解答案)

更新时间:2024-07-07 01:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 编程题

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; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); }

4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。

#include void main(){

int data;

char grade; printf(\ scanf(\

switch(data/10) { case 10:

case 9 : grade=’A’; break;

case 8: grade=’B’; break; case 7: grade=’C’; break;

break;

case 6: grade=’D’; }

default: grade=’E’;

printf(\ }

5. 编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:

30元?? 费用??每小时3元?每小时2.5元??10小时10?50小时 ?50小时要求当输入每月上网小时数,显示该月总的上网费用(6分)

#include void main() { int hour; float fee;

printf(“please input hour:\\n”); scanf(“%d”,&hour); if(hour<=10) fee=30;

else if(hour>=10&&hour<=50) fee=3*hour; else fee=hour*2.5;

printf(“The total fee is %f”,fee); }

6. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。

#include void main( ) { int a, i,p=0,n=0,z=0;

printf(\

for(i=0;i<10;i++){ scanf(\

if (a>0) p++; else if (a<0) n++; else z++; }

printf(\正数:], 负数:],零:]\\n\

}

7、编程序实现求1-10之间的所有数的乘积并输出。

#include void main( ) { int i;

long sum=1; for(i=1; i<=10; i=i+1) sum=sum*i;

printf(“the sum of odd is :%ld”,sum); }

8. 从键盘上输入10个数,求其平均值。 #include void main(){

int a,i,sum=0; float ave;; for(i=0;i<10;i++){

scanf(\

sum+=a; }

ave=(float)sum/10;

printf(\ }

9、编程序实现求1-1000之间的所有奇数的和并输出。

#include void main( ) { int i, sum=0; for(i=1; i<1000; i=i+2) sum=sum+i;

printf(“the sum of odd is :%d”,sum); }

10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。 #include void main(){ int i,t,n=20; float a=2,b=1,s=0; for(i=1;i<=n;i++) {s=s+a/b;

t=a; a=a+b; b=t; }

printf(\}

11.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,

并在主函数中调用该函数) #include float max(float x,float y); void main() { float a,b,m;

scanf(\m=max(a,b); printf(\}

float max(float x,float y) {

if (x>=y) return x;

else return y; }

12. 编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。

#include #include

int IsPrimeNumber(int number) { int i;

if (number <= 1)

return 0;

for (i=2; i

return 0; }

return 1;} void main() { int n;

printf(“Please input n:”); scanf(“%d”,&n); if(IsPrimeNumber(n))

printf(“\\n%d is a Prime Number”,n);

else printf(“\\n%d is not a Prime Number”,n);}

13、从键盘输入n个数存放在数组中,将最小值与第一个数交换,输

出交换后的n个数。 #include int main(void){ int i,n,iIndex,temp;

int a[10];

printf(\

scanf(\

printf(\ for(i=0;i

scanf(\ iIndex=0;

for(i=1;i

if(a[i]

}

temp=a[0];a[0]=a[iIndex];a[iIndex]=temp; for(i=0;i

printf(\ printf(\

return 0; }

第二种解法 利用函数 #include

int comp(int arry[], int n) {

int i,index,temp;

printf(\为数组赋值:\\n\for(i=0;i

for(i=1,index=0;i<=n-1;i++) { if(arry[i]

temp=arry[0];arry[0]=arry[index];arry[index]=temp; for(i=0;i

printf(\ \

{ index=i; }

scanf(\

}

}

return 0;

main() { int n;

14. 用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。

#include void main() { int a[5], s=0; int i;

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

printf(“result=%f”,s/5.0); } int a[10];

printf(\为n赋值:\\n\scanf(\comp(a,n);}

15、输入一个正整数n(n<=6),再输入n×n的矩阵,求其主对角线元

素之和及副对角线元素之和并输出。 #include int main(void) { int i,j,n,sum1=0,sum2=0; int a[6][6];

printf(\ scanf(\ printf(\ for(i=0;i

for(j=0;j

scanf(\ if(i==j)

sum1+=a[i][j];

if(i+j==n-1)

sum2+=a[i][j];

}

printf(\ return 0; }

16、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和

平均分。

(提示:用数组存放成绩数据) #include #define M 30 void main ( )

{ float score[M], max , min, aver; int i ;

printf(“please input score: \\n”); for(i=0; i

{ if (max < score[i]) max= score[i]; if (min>score[i]) min=score[i]; aver+=score[i]; }

printf(“max=%f, min=%f,aver=%f”, max, min, aver/M);

}

17.将一个有5个元素的数组中的值(整数)按逆序重新存放。

例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8 #define N 5 #include void main() {int a[N],i,temp; printf(“enter array a:\\n”); for(i=0;i

{ temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; }

printf(“\\n Now, array a:\\n”); for(i=0;i

18.从键盘上输入一个2*3的矩阵,将其转秩后形成3*2的矩阵输出。

#include void main()

{int a[2][3], b[3][2],i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) for(j=0;j<2;j++) b[i][j]=a[j][i]; for(i=0;i<3;i++) {for(j=0;j<2;j++) printf(\ printf(\n”); } }

19、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)#include void main() { int a[10]; int i,j,temp;

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

scanf(\ printf(\for(i=1;i<10;i++) for(j=0;j<9;j++) if(a[j]

}

for(i=0;i<10;i++) printf(\}

20、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。

#include void main()

{ int a[4][3], i , j ,min,m,n; printf(\ for (i=0; i<4; i++) for (j=0; j<3; j++) scanf(“%d”,& a[i][j]); min=a[0][0];

m=0; n=0; for (i=0; i<4; i++) for (j=0; j<3; j++) if (a[i][j]

{min= a[i][j]; m=i; n=j; }

printf(\printf(\ %d \\n, m,n); }

本文来源:https://www.bwwdw.com/article/wrm.html

Top