0
点赞
收藏
分享

微信扫一扫

20道经典C语言题目和答案


20道经典C语言题目和答案_i++

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。

#include<stdio.h>

void main()

{

int hcf(int,int); /*函数声明*/

int lcd(int,int,int); /*函数声明*/

int u,v,h,l;

printf("Please input two numbers:\n");

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("H.C.F=%d\n",h);

l=lcd(u,v,h);

printf("L.C.D=%d\n",l);

}

int hcf(int u,int v)

{

int t,r;

if(v>u)

{t=u;u=v;v=t;}

while((r=u%v)!=0)

{u=v;v=r;}

return(v);

}

int lcd(int u,int v,int h)

{

return(u*v/h);

}

2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。

#include<stdio.h>

int letter,digit,space,others;

void main()

{

void count(char[]);

char text[80];

printf("Please input string:\n");

gets(text);

printf("string:\n");

puts(text);

letter=0;

digit=0;

space=0;

others=0;

count(text);

printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);

}

void count(char str[])

{

int i;

for(i=0;str[i]!='\0';i++)

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

letter++;

else if(str[i]>='0'&&str[i]<='9')

digit++;

else if(str[i]==32)

space++;

else

others++;

}

3.输入一个正整数求出它是几位数;输出原数和位数。

#include<stdio.h>

int digit;

void main()

{

void count(char[]);

char text[80];

printf("Please input numbers:\n");

gets(text);

printf("Numbers:\n");

puts(text);

digit=0;

count(text);

printf("digit:%d\n",digit);

}

void count(char str[])

{

int i;

for(i=0;str[i]!='\0';i++)

if(str[i]>='0'&&str[i]<='9')

digit++;

}

4.输入一个正整数,输出原数并逆序打印出各位数字。

#include<stdio.h>

void invertLongInt(long);

void main()

{

unsigned long iNumber;

printf("Please input a number:\n");

scanf("%ld",&iNumber);

printf("The input number is:%ld\n",iNumber);

printf("The inverse number is:");

invertLongInt(iNumber);

}

void invertLongInt(long x)

{

if(x>=0&&x<=9)

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

else

{

printf("%d",x%10);

invertLongInt(x/10);

}

}

5.从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。

6.从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。将结果输出。

7.求1!+2!+3!+……+20!,将结果输出。

#include<stdio.h>

void main()

{

float s=0,t=1;

int n;

for(n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}

printf("1!+2!+3!+……+20!=%e\n",s);

}

8.打印以下图案: *

***

*****

*******

#include<stdio.h>

void main()

{

int i,j;

printf("The picture is:\n");

static char picture[4][7]={{' ',' ',' ','*'},

{' ',' ','*','*','*'},{' ',' *','*','*','*','*'},{'*','*','*','*','*','*','*'}};

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

{

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

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

printf("\n");

}

}

9.打印以下图案:

*

**

***

****

#include<stdio.h>

void main()

{

int i,j;

printf("The picture is:\n");

char picture[4][4]={{'*'},

{'*','*'},{' *','*','*'},{'*','*','*','*'}};

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

{

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

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

printf("\n");

}

}

10.求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。

#include<stdio.h>

void main()

{

float sum=1.0,t,s=1;

int i;

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

{

t=s/i;

sum=sum+t;

s=-s;

}

printf("1-1/2+1/3-1/4+……+1/99-1/100=%5.4f\n",sum);

}

11.打印出100~999之间的所有水仙花数。

#include<stdio.h>

void main()

{

int i,j,k,n;

printf("100~999之间的所有水仙花数 are:\n");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d ",n);

}

printf("\n");

}

12.求Sn=a+aa+aaa+…+aa…a之值,n,a由键盘输入。

#include<stdio.h>

void main()

{

int a,n,i=1,sn=0,tn=0;

printf("a,n=:");

scanf("%d,%d",&a,&n);

while(i<=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++i;

}

printf("a+aa+aaa+…+aa…a=%d\n",sn);

}

13.打印以下图案:

*******

*******

*******

*******

#include<stdio.h>

void main()

{

char a[7]={'*','*','*','*','*','*','*'};

int i,j,k;

char space=' ';

printf("The picture is:");

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

{

printf("\n");

printf(" ");

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

printf("%c",space);

for(k=0;k<7;k++)

printf("%c",a[k]);

}

printf("\n");

}

14.打印以下图案:

1

121

12321

1234321

15. 打印以下图案:

1234321

12321

121

1

16.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。

#include<stdio.h>

#define N 4

struct student

{

char num[3];

char name[4];

float score[2];

float avr;

}

stu[N];

void main()

{

int i,j;

float sum,average;

for(i=0;i<N;i++) /*输入数据*/

{

printf("input scores of student%d:\n",i+1);

printf("name:");

scanf("%s",stu[i].name);

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

{

printf("score %d:",j+1);

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

}

}

average=0; /*计算*/

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

{

sum=0;

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

sum+=stu[i].score[j];

stu[i].avr=sum/2;

average+=stu[i].avr;

}

average/=N;

printf(" Name score1 score2 average\n");

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

{

printf("%5s%10s",stu[i].num,stu[i].name);

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

printf("%9.2f",stu[i].score[j]);

printf(" %8.2f\n",stu[i].avr);

}

printf("average=%5.2f\n",average);

}

17. 打印以下图案:

*****

*****

*****

*****

*****

#include<stdio.h>

void main()

{

char a[5]={'*','*','*','*','*'};

int i,j,k;

char space=' ';

printf("The picture is:");

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

{

printf("\n");

printf(" ");

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

printf("%c",space);

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

printf("%c",a[k]);

}

printf("\n");

}

18.给出年、月、日,计算该日是该年的第几天。

#include<stdio.h>

void main()

{

int sum_day(int,int);

int leap(int year);

int year,month,day,days;

printf("input date(year,month,day):");

scanf("%d,%d,%d",&year,&month,&day);

printf("%d/%d/%d",year,month,day);

days=sum_day(month,day);

if(leap(year)&&month>=3)

days=days+1;

printf("is the %dth day in this year.\n",days);

}

int sum_day(int month,int day)

{

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int i;

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

day+=day_tab[i];

return(day);

}

int leap(int year)

{

int leap;

leap=year%4==0&&year%100!=0||year%400==0;

return(leap);

}

19.求一个3*3的整型矩阵对角线元素之和。将原矩阵和求出的和输出。

#include<stdio.h>

void main()

{

float a[3][3],sum=0;

int i,j;

printf("请输入元素:\n");

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

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

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

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

sum=sum+a[i][i];

printf("对角线之和是:%6.2f\n",sum);

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

{

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

printf("%5.2f",a[i][j]);

printf("\n");

}

}

20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。

#include<stdio.h>

void main()

{

int a[4][3],s[4],i,j,k;

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

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

scanf("%d",*(a+i)+j);


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

{

k=0;

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

k+=a[i][j];

printf("第%d行的平均值是%d",i+1,k);

printf("\n");

}

}

举报

相关推荐

0 条评论