c语言输入成绩直到输入q结束,c语言典型例题及代码(1)

这个寒假复习回顾了学习c语言以来做过的典型例题,现把它总结如下。

求各位大神指点评论啊!

例(1)首先需要了解编译系统,所以对编译系统常用变量分配的字节数进行了测试。

#include

int main()

{

printf("%d\n",sizeof(int));

printf("%d\n",sizeof(float));

printf("%d\n",sizeof(double));

printf("%d\n",sizeof(char));

printf("%d\n",sizeof(long));

printf("%d\n",sizeof(short));

getch();

return 0;

}

例(2).分别用while语句、do-while语句编写程序,计算e≈1+1/1!+1/2!+...+1/n! (1)用单重循环编写程序(2)使误差小于给定的ε,设ε=10-5 (3)除了输出e以外,同时还要输出总的项数n

#include

int main()

{

doublen=0.0,m=1.0,i=1.0,sum=1.0,e = 2.71828 ;

do

{

m=m*i;

sum=sum+1/m ;

i++;

}while(e-sum>1e-5);

printf("%lf",i);

getch();

return 0;

}

#include

int main()

{

doublen=0.0,m=1.0,i=1.0,sum=1.0,e = 2.71828 ;

while(e-sum>1e-5)

{

m=m*i;

sum=sum+1/m ;

i++;

}while(e-sum>1e-5);

printf("%lf",i);

getch();

return 0;

例(3).奇偶对调,对N以内的整数进行奇偶对调,并输出结果

#include

int main()

{

int n,i;

printf("请输入一个数:\n");

scanf("%d",&n);

int a[n];

int b[n],x=0,y=1;

for(i=0;i

{

a[i]=i+1;

}

printf("原数组为:\n");

for(i=0;i

printf("%d ",a[i]);

printf("\n");

for(i=0;i

{

if(a[i]%2==0)

{

b[x]=a[i];

x++;

}

else

{

b[n-y]=a[i] ;

y++;

}

}

printf("\n");

printf("奇偶排序后的数组为:\n");

for(i=0;i

printf("%d ",b[i]);

printf("\n");

getch();

return 0;

}

例(4).如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数及这些完数的和。(1)要求使用for循环(2)输出形式为:完数1+完数2...=和值

#include

int main()

{

int i,j,sum,s=0,q=0;

for(i=1;i<=1000;i++)

{

sum=0;

for(j=1;j

{

if(i%j==0)

{

sum=sum+j;

}

}

if(sum==i)

{

q++;

printf("%d+",i);

s=s+i;

}

}

printf("\b=%d",s);

getch();

return 0;

}

例(5). 判断用户输入的正整数n是否为素数,直到用户输入1为止。(1)用while循环读入正整数n(2)对于每个正整数n,采用for循环判断是否为素数。(3)打印输出判断结果

#include

int action(int m)

{

int k;

for(k=2;k<=m;k++)

{

if(m%k==0)

break;

}

if(k==m)

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

}

int main()

{

int m,k;

while(2)

{

if(m==1)

break;

else

{

scanf("%d",&m);

action(m);

}

}

getch();

return 0;

}

例(6).编写一个程序,循环从键盘接收一批学生的某门课的成绩,并依次保存在数组score的相应元素中,直到输入的成绩为999时结束。(1)对成绩按从高到低排序,并按排序后的顺序输出所有学生的成绩,(2)再输入一个学生的成绩,并插入排序后的成绩表中并保持有序,最后再输出所有学生的成绩(3)再输入一个成绩,并从数组中删除与该数相同的所有同学成绩,最后输出最终的成绩表

主要算法和程序清单

#include

void action1()

{

int m,n=0,i;

int a[100];

printf("请输入学生成绩,最后输入999时程序开始工作\n");

while(1)

{

scanf("%d",&m);

if(m==999) break;

else

{

a[n]=m;

n++;

}

}

action2(a,n);

}

int action2(int a[],int n)

{

int i,j,t;

for(i=0;i

{

for(j=i+1;j

{

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

printf("按从小到大的顺序排列为:\n");

for(i=0;i

printf("%d ",a[i]);

printf("\n");

action3(a,n);

}

int action3(int a[],int n)

{int i,j,t,m;

printf("请输入你要插入的数\n");

scanf("%d",&m);

a[n]=m;

for(i=0;i

{

for(j=i+1;j

{

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

printf("按从小到大的顺序排列为:\n");

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

printf("%d ",a[i]);

printf("\n");

action4(a,n+1);

}

int action4(int a[],int n)

{

int i,m;

printf("请输入你想删除的学生成绩\n");

scanf("%d",&m);

for(i=0;i

{

if(a[i]!=m)

printf("%d ",a[i]);

}

}

int main()

{

action1();

getch();

return 0;

}

例(7).在主函数中输入一个十进制数,调用转换函数把这个十进制数转换成二、八、十六进制数。

#include

int action1(int m)

{

printf("%x\n",m);

}

int action2(int m)

{

printf("%o\n",m);

}

int action3(int m)

{

inta[30],n=0,i;

while(m)

{

a[n]=m%2;

m=m/2;

n++;

}

for(i=n-1;i>=0;i--)

printf("%d ",a[i]);

}

int main()

{

inta=10;

action1(a);

action2(a);

action3(a);

return 0;

}

例(8).定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。1)声明函数judge;2)实现函数judge,根据输入的三个边长判断是否可以构成一个三角形;3)在main中调用judge;4)在main中根据judge的返回值判断是否是三角形,如果构成三角形则判断是否为直角三角形,并给出结论。

#include

double action2(double a,double b,double c)

{

if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)

printf("and this is a直角三角形\n");

else

printf("but thisis not a直角三角形\n");

}

double action1(double a,double b,double c)

{

if(a<=0||b<=0||c<=0)

printf("you are wrong\n");

else if(a-bc)

{

printf("this is a三角形");

action2(a,b,c);

}

else

printf("this is nota三角形");

}

int main()

{

double a,b,c;

printf("please input threenumbers\n");

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

action1(a,b,c);

return 0;

}

例(9).找出一个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。如果没有这样的元素,请打印出相应的信息。(1) 画出此题的流程图。(2) 编写程序求矩阵中所有的鞍点并上机调试。(3) 输入的数据和输出的结果要详细记录。

流程图

主要算法和程序清单

#include

int action1(int i,int j)//找行中最大

{int m,max,t;

int b[3][4]={{1,2,13,4},{7,8,10,6},{3,5,9,7}};

max=b[i][0];

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

{

if(max

{

t=max;

max=b[i][m];

b[i][m]=max;

}

}

return max;

}

int action2(int i,int j)//找列中最大

{int n,min,t;

int b[3][4]={{1,2,13,4},{7,8,10,6},{3,5,9,7}};

min=b[0][j];

for(n=0;n<3;n++)

{

if(min>b[n][j])

{

t=min;

min=b[n][j];

b[n][j]=min;

}

}

return min;

}

int main()

{

int i,j,max,min;

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

{

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

{

max=("%d",action1(i,j));

min=("%d",action2(i,j));

if(max==min)

printf("%d",max);

}

}

getch();

return 0;

}

例(10).统计一个班的学生成绩。要求程序具有如下功能:(1)每个学生的学号和四门功课的成绩从键盘读入。(2)计算每个学生的总分和平均分。(3)按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。提示:调试程序时,可先输入少量学生的成绩作为实验数据。如可输入3名学生4门课成绩:学号 成绩9701 67,72,65,80 9702 75,82,94,

#include

int main()

{

int num,i,e[3],m,j;

double a,b,c,f,average,d[3],t;

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

{

printf("请输入该生学号:\n");

scanf("%d",&num);

printf("请输入该生课程a的成绩:\n");

scanf("%lf",&a);

printf("请输入该生课程b的成绩:\n");

scanf("%lf",&b);

printf("请输入该生课程c的成绩:\n");

scanf("%lf",&c);

printf("请输入该生课程f的成绩:\n");

scanf("%lf",&f);

d[i]=(a+b+c+f)/4.0;

e[i]=num;

printf("d[%d]=%lfnum=%d\n",i,d[i],e[i]);

}

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

{

for(j=i+1;j<4;j++)

{

if(d[i]>d[j])

{

t=d[i],m=e[i];

d[i]=d[j],e[i]=e[j];

d[j]=t,e[j]=m;

}

}

}

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

printf("num=%d average=%lf\n",e[i],d[i]);

getch();

return 0;

}

你可能感兴趣的:(c语言输入成绩直到输入q结束)