C语言编程题例题

1.从键盘上输入若干个学生成绩(百分制整数),直到输入-1结束,求平均分并保留一位小数输出。

分析:定义score存储学生成绩,由题意知为整型数,范围0-100。

定义平均分ave,因为需要小数输出,定义为float型。

#include "stdio.h"

main()

{

int score,i=0;

float sum=0,ave;

printf("\nPlease input scores(end of -1):\n");

do

{

scanf("%d",&score);

if(score>=0 && score<=100)

{ sum+=score;

i++;

}

}while(score!=-1);

ave=sum/i;

printf("\nAverage of %d students is %.1f",i,ave);

}

 

2.从键盘上输入若干个学生成绩(百分制,含一位小数),直到输入负数结束。

统计优(90分及以上)、良(80-89)、中(70-79)、及格(60-69)人数。

分析:定义score存储学生成绩,由题意知数组为float型,范围0-100。

定义int型变量:excellent,good,middle,pass存储各级人数。

#include "stdio.h"

main()

{

float score;

int excellent,good,middle,pass;

int i=0;

excellent=good=middle=pass=0;

printf("\nPlease input scores:(负数结束)\n");

do

{

scanf("%f",&score);

if(score>=60 && score<=69) pass++;

else if(score>=70 && score<=79) middle++;

else if(score>=80 && score<=89) good++;

else if(score>=90 && score<=100) excellent++;

}while(score>=0);

printf("\nexcellent=%d,good=%d,middle=%d,pass=%d",excellent,good,middle,pass);

}

3.从键盘上输入若干字符,直到输入'#'结束。统计英文字母、数字、空格、其他字符的个数并输出。

分析:整型变量letter,number,space,other存个数。

#include "stdio.h"

main()

{

char c;

int letter,number,space,other;

letter=number=space=other=0;

printf("\nPlease input some characters:(end of '#')\n");

while((c=getchar())!='#')

{ if(c>='a' && c<='z') letter++;

else if(c>='A' && c<='Z') letter++;

else if(c>='0' && c<='9') number++;

else if(c==' ') space++;

else other++;

}

printf("\nletter=%d,number=%d,space=%d,other=%d\n",letter,number,space,other);

}

 

4.从键盘输入任意自然数N(N>10),要求:1)筛选出3-N之间的素数;2)输出素数,每个数占6宽度,左对齐。

#include "stdio.h"

#include "math.h"

main()

{ int N,i,k,sqr,flag=1;

printf("\nN=");

scanf("%d",&N);

while(N<=10)

{ printf("ERROR,input again:");

scanf("%d",&N);

}

for(k=3;k<=N;k++)

{ sqr=sqrt(N);

for(i=2;i<=sqr;i++)

if(k%i==0)

{ flag=0;

break;

}

if(flag==1)

printf("%-6d",k);

flag=1;

}

}

5.有一个分数系列:2/1,3/2,5/3,8/5,13/8,21/13,...从键盘输入自然数N(N>1),计算该数列的前N项和。

分析:此系列的分子和分母均为斐波那契数列,可设一个整型数组a[M]存该数列:

a[0]=a[1]=1,a[i]=a[i-1]+a[i-2],再设实型数组b[M]存分数:b[i]=a[i+1]/(float)a[i]。

#include "stdio.h"

#define M 100

main()

{ int N,i,a[M];

float b[M],sum=0;

printf("\nN=");

scanf("%d",&N);

a[0]=a[1]=1;

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

{ a[i+1]=a[i]+a[i-1];

b[i]=a[i+1]/(float)a[i];

sum+=b[i];

}

printf("sum=%.2f",sum);

}

 

6.输入3×3的行列式(整数构成),找出其中的最大值以及它所在的行标和列标。

#include "stdio.h"

main()

{ int a[3][3],i,j,max,l,c;

printf("\na[3][3]=\n");

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

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

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

max=a[0][0];l=0;c=0;

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

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

if(max

{ max=a[i][j];

l=i;

c=j;

}

printf("MAX: a[%d][%d]=%d",l,c,max);

}

 

7.输入3×3的行列式(整数构成),找出其中的最小值以及它所在的行标和列标。

#include "stdio.h"

main()

{ int a[3][3],i,j,min,l,c;

printf("\na[3][3]=\n");

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

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

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

min=a[0][0];l=0;c=0;

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

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

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

{ min=a[i][j];

l=i;

c=j;

}

printf("MIN: a[%d][%d]=%d",l,c,min);

}

 

8.从键盘输入本班同学的程序设计课程分数保存在数组中(人数不超过45人,分数为整数),找出最高分及其所在的下标,并输出。

#include "stdio.h"

#define N 45

main()

{ int s[N],k,i;

printf("\nInput scores:");

k=0;

for(i=0;i

{ scanf("%d",&s[i]);

if(s[k]

k=i;

}

printf("The highest score is s[%d]=%d",k,s[k]);

}

 

9.从键盘输入5组(每组3个)浮点数作为三条边的长度,若它们能够构成三角形,则计算出三角形的面积,否则给出"不能构成三角形"的提示。

分析:三边构成三角形的条件是:两边之和大于第三边,并且两边之差小于第三边。

#include "stdio.h"

#include "math.h"

main()

{ float a[5][3],s,area[5];

int i,j;

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

{ printf("\nNo.%d:",i);

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

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

if((a[i][0]+a[i][1]>a[i][2]) && (a[i][0]+a[i][2]>a[i][1])

&& (a[i][1]+a[i][2]>a[i][0]) && abs(a[i][0]-a[i][1])

&& abs(a[i][0]-a[i][2])

{ s=(a[i][0]+a[i][1]+a[i][2])/2;

area[i]=sqrt(s*(s-a[i][0])*(s-a[i][1])*(s-a[i][2]));

printf("AREA[%d]=%f",i,area[i]);

}

else printf("Can't been a triangle!");

}

}

 

10.从键盘输入本班同学的程序设计课程分数保存在数组中(人数不超过45人,分数为整数),

将百分制成绩转换成等级'A'-'E'('A'90及以上,'B'80分数段,'C'70分数段,'D'60分数段,

'E'不及格),并输出成绩及其对应的等级数据。

#include "stdio.h"

#define N 45

main()

{ int s[N],i;

char grade[N];

printf("\nScores:");

for(i=0;i

{ scanf("%d",&s[i]);

if(s[i]>=90 && s[i]<=100) grade[i]='A';

else if(s[i]>=80 && s[i]<=89) grade[i]='B';

else if(s[i]>=70 && s[i]<=79) grade[i]='C';

else if(s[i]>=60 && s[i]<=69) grade[i]='D';

else if(s[i]>=0 && s[i]<=59) grade[i]='E';

else grade[i]='w'; /*wrong score*/

}

for(i=0;i

{ if(i%5==0) printf("\n");

printf("%4d:%c",s[i],grade[i]);

}

}

 

11.计算1-1/2+1/3-1/4+...+1/99-1/100的前N项的值,N从键盘输入,N大于1,小于100。

分析:第i项为:1/i,加减号交替出现,可以用flag存+1和-1来决定加减。

注意i需要转换为float型计算,否则结果不正确?

N为题目给定的数,所以一般不自行改名。?

这里没有讨论N的取值范围,可自行添加。

#include "stdio.h"

main()

{ int N,i,flag=1;

float sum=0;

printf("\nN=");

scanf("%d",&N);

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

{ sum+=flag/(float)i;

flag=-flag;

}

printf("Sum=%.2f",sum);

}

 

12./*从键盘输入一个字符串存入数组s[80],统计该字符串的长度并将其中所有小写字母

改为大写字母,然后再将结果输出。

#include "stdio.h"

main()

{ char s[80];

int len,i;

printf("\nInput a string:");

gets(s);

len=0;

i=0;

while(s[i]!='\0')

{ if(s[i]>='a' && s[i]<='z')

s[i]-=32;

len++;

i++;

}

printf("String:%s,length:%d",s,len);

}

转载于:https://www.cnblogs.com/anstoner/p/6580513.html

你可能感兴趣的:(C语言编程题例题)