C语言题目+答案大全.docx

上传人:b****5 文档编号:12531683 上传时间:2023-04-20 格式:DOCX 页数:13 大小:57.23KB
下载 相关 举报
C语言题目+答案大全.docx_第1页
第1页 / 共13页
C语言题目+答案大全.docx_第2页
第2页 / 共13页
C语言题目+答案大全.docx_第3页
第3页 / 共13页
C语言题目+答案大全.docx_第4页
第4页 / 共13页
C语言题目+答案大全.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言题目+答案大全.docx

《C语言题目+答案大全.docx》由会员分享,可在线阅读,更多相关《C语言题目+答案大全.docx(13页珍藏版)》请在冰豆网上搜索。

C语言题目+答案大全.docx

C语言题目+答案大全

2009

题目如下:

编写成绩排序,按学生(学生的总数可变)的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号(1000+学号);同名次的学号输出在同一行中,一行最多输出5个学号。

# include 

# include 

struct Student

{

int num;

float score;

};

int main(void)

{

int len,no,count,cnt;

struct Student * pArr;

int i, j,k;

struct Student t;

//动态的构造一维数组

printf("请输入学生的个数:

\n");

printf("len = ");

scanf("%d", &len);

pArr = (struct Student *)malloc(len * sizeof(struct Student));

//输入

for (i=0; i

{

printf("请输入序号为%d的学生成绩:

\n", i+1);

    pArr[i].num=i+1;

printf("score = ");

scanf("%f", &pArr[i].score);

}

//按学生成绩排序 冒泡算法

for (i=0; i

{

for (j=0; j

{

if (pArr[j].score < pArr[j+1].score) 

{

t = pArr[j];

pArr[j] = pArr[j+1];

pArr[j+1] = t;

}

}

}

printf("\n\n学生的成绩排序为:

\n");

//输出

    no=1;

    cnt=1;

    for(i=0;i

    {

        if(pArr[i].score > pArr[i+1].score)

        {   

            printf("\n%d %f  %d",no,pArr[i].score,cnt);

            

            for(j=0;j

               printf(" 1000%d  ",pArr[i-j].num);

            if(cnt%5==0)

              printf("\n");

            cnt=1;

            no++; 

        }

        else

        {  

            cnt++;

         }

    

    }

 

    printf("\n");

return 0;

}

2010

题目是根据公式编写计算三角形面积的程序,首先要判断三条边长能否构成三角形,不能构成,需要重新输入,其次将三条边长按着从大到小排序输出,

第三,利用函数计算三角形的面积,最后,所有的输入、输出,都在一个函数中实现。

#include

#include

floatff(floata,floatb,floatc);//对函数ff的声明

floatarea(floata,floatb,floatc);//对函数area的声明

main()

{

floata,b,c;

printf("请输入三个数,用逗号隔开:

\n");

scanf("%f,%f,%f",&a,&b,&c);

while((a+b>c&&a+c>b&&b+c>a)!

=1)//判断是否可以构成三角形

{

printf("不能构成三角形,请重新输入:

\n");

scanf("%f,%f,%f",&a,&b,&c);

}

printf("可以构成三角形,边长从大到小为:

\n");

ff(a,b,c);//调用函数ff,使abc按从大到小排序输出

area(a,b,c);//调用求面积函数

}

//******判断三个数,并从大到小输出***********

floatff(floatx,floaty,floatz)//三个数大小排序函数

{

floatt;

if(x

{

t=x;

x=y;

y=t;

}

if(x

{

t=x;

x=z;

z=t;

}

if(y

{

t=y;

y=z;

z=t;

}

printf("%f,%f,%f\n",x,y,z);

}

//*********求三角形的面积函数***********

floatarea(floata,floatb,floatc)//求面积函数

{

floats,area;

s=1.0/2*(a+b+c);//s=(a+b+c)/2

area=sqrt(s*(s-a)*(s-b)*(s-c));//三角形面积公式:

area=√s(s-a)(s-b)(s-c);

printf("三角形面积=%f\n",area);

}

2011

求一个二元方程的根,输入方程的系数A,B,C;

(1)

采用子函数判定方程根的个数;

(2)

若方程有根时,求出相应的根;

(3)

若方程无根时,则继续改变方程的系数,直到有解输出为止;

#include

#include

voidmain()

{

floata,b,c,x1,x2;

intd;

intsort(floata,floatb,floatc);//子函数的声明

printf("请输入三个实数abc:

\n");

scanf("%f%f%f",&a,&b,&c);

d=sort(a,b,c);

while(d==0)

{

printf("方程无实根,请重新输入a,b,c:

\n");

scanf("%f%f%f",&a,&b,&c);

d=sort(a,b,c);//调用子函数

}

if(d==1)

{

printf("方程有两个相等的根\n");

x1=(-b+sqrt(b*b-4*a*c))/2*a;

printf("x1=x2=%f\n",x1);

}

if(d==2)

{

printf("方程有两个不同的根\n");

x1=(-b+sqrt(b*b-4*a*c))/2*a;

x2=(-b-sqrt(b*b-4*a*c))/2*a;

printf("x1=%fx2=%f\n",x1,x2);

}

}

intsort(floata,floatb,floatc)//子函数的定义

{

intflag;

if(b*b-4*a*c>0)

flag=2;

elseif(b*b-4*a*c==0)

flag=1;

elseflag=0;

return(flag);

}

2012

编写一程序,找出并显示100-200间的所有素数,要求如下:

程序要有主函数和用户自定义函数;

自定义函数用于判断一个数是否是素数,是返回1,不是返回0;

主函数完成自定义函数的调用,素数个数的统计,素数个数和所有素数的输出显示

2014

编写一程序,找出并显示100-200间的所有素数,要求如下:

程序要有主函数和用户自定义函数;自定义函数用于判断一个数是否是素数,是返回1,不是返回0;

主函数完成自定义函数的调用,素数个数的统计,素数个数和所有素数的输出显示。

#include

intmain()

{

inti,k=0;

intfun(intn);//素数函数声明

for(i=100;i<=200;i++)//循环判断

{

if(fun(i))

{

printf("%d\n",i);

k++;

}

}

printf("共有%d个素数\n",k);

}

intfun(intn)//判断n是否是素数函数

{inti;

for(i=2;i

if(n%i==0)return0;

return1;

}

2015

//在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素

的个数。

//例如,可以写为:

voidnzp(inta[])

//或写为voidnzp(inta[],intn)

//其中形参数组a没有给出长度,而由n值动态地表示数组的长度。

n的值由主调函数的实参进行传送。

#include

#defineb10//定义一个数作为数组的下标

main()

{

inti;

floata[b];

printf("请输入10个实型数:

\n");

for(i=0;i

{

scanf("%f",&a[i]);//输入十个数保存到数组中

}

floatcal_mean(floata[],intn);//求十个实型数的平均值

floatcal_variance(floata[],intn);//求实型数的方差

printf("平均值=%.2f\n",cal_mean(a,b));//调用函数直接输出十个实型数的平均值和方差

printf("方差=%.2f\n",cal_variance(a,b));

}

 

floatcal_mean(floata[],intn)//均值函数的定义

{

inti;

floatsum=0,average=0;

for(i=0;i

{

sum=sum+a[i];

}

average=sum/n;

returnaverage;

}

floatcal_variance(floata[],intn)//方差函数的定义

{

floatsum=0,average=0,sum2=0;

floatvariance;

inti;

for(i=0;i

{

sum=sum+a[i];

}

average=sum/n;

for(i=0;i

{

a[i]=a[i]-average;//每个元素与均值之差

sum2=sum2+a[i]*a[i];//方差和的结果保存在sum2变量中

}

variance=sum2/n;//求出方差

returnvariance;//返回方差

}

矩阵

(1).矩阵A的两对角线元素之和;

  

(2).矩阵A的元素中负数的平均值;

  (3).矩阵A的转置;

  (4).从键盘输入另一个4*4的矩阵B,计算矩阵A和B的乘积。

        (30分钟,满分40分)

    以上四个问题要求用函数编写.

#include

voidf1(floata[][4]);//矩阵A的两对角线元素之和

voidf2(floata[][4]);//矩阵A的元素中负数的平均值;

voidf3(floata[][4]);//矩阵A的转置;

voidf4(floata[][4]);//从键盘输入另一个4*4的矩阵B,计算矩阵A和B的乘积。

voidmain()

{

  inti,j;

  floata[4][4];

  printf("请输入二维数组(4行4列):

\n");

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

      for(j=0;j<4;j++)

        scanf("%f",&a[i][j]);

      

  f1(a);

  f2(a);

  f3(a);//矩阵A的转置

  f3(a);//为了得到A矩阵(矩阵A的转置的转置)

  f4(a);

}

voidf1(floata[][4])

{

  inti,j;

  floatsum1=0.0;

  floatsum2=0;

  i=0;

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

      sum1+=a[i][i];

  

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

      sum2+=a[i][3-i];

  

  printf("%f%f\n",sum1,sum2);

}

voidf2(floata[][4])

{

  inti,j,n=0;

  floatsum=0;

  

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

      for(j=0;j<4;j++)

      {

        if(a[i][j]<0)

        {

          n++;

          sum+=a[i][j];

        }

      }

      if(!

n)

        printf("平均值为0!

\n");

      else

        printf("平均值为%f!

\n",sum/n);

      

      

}

voidf3(floata[][4])

{

  inti,j;

  floatt;

  

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

      

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

      {

        t=a[i][j];

        a[i][j]=a[j][i];

        a[j][i]=t;

      }

}

voidf4(floata[][4])

{

  inti,j,l,m;

  floatb[4][4],c[4][4];

  printf("请输入又一个二维数组(4行4列):

\n");

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

      for(j=0;j<4;j++)

        scanf("%f",&b[i][j]);

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

        for(j=0;j<4;j++)

        {

          c[i][j]=0;

          for(l=0;l<4;l++)

              

              c[i][j]+=a[i][l]*b[l][j];//矩阵Am*s*Bs*n=Cm*n

        }

        

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

        {

          for(j=0;j<4;j++)

              printf("%4f",c[i][j]);

          printf("\n");

        }

  

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1