113道C语言题目超经典的.docx
《113道C语言题目超经典的.docx》由会员分享,可在线阅读,更多相关《113道C语言题目超经典的.docx(48页珍藏版)》请在冰豆网上搜索。
113道C语言题目超经典的
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#include
voidmain()
{
inthcf(int,int); /*函数声明*/
intlcd(int,int,int); /*函数声明*/
intu,v,h,l;
printf("Pleaseinputtwonumbers:
\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);
}
inthcf(intu,intv)
{
intt,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!
=0)
{u=v;v=r;}
return(v);
}
intlcd(intu,intv,inth)
{
return(u*v/h);
}
2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include
intletter,digit,space,others;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputstring:
\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);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
elseif(str[i]>='0'&&str[i]<='9')
digit++;
elseif(str[i]==32)
space++;
else
others++;
}
3.输入一个正整数求出它是几位数;输出原数和位数。
#include
intdigit;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputnumbers:
\n");
gets(text);
printf("Numbers:
\n");
puts(text);
digit=0;
count(text);
printf("digit:
%d\n",digit);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')
digit++;
}
4.输入一个正整数,输出原数并逆序打印出各位数字。
#include
voidinvertLongInt(long);
voidmain()
{
unsignedlongiNumber;
printf("Pleaseinputanumber:
\n");
scanf("%ld",&iNumber);
printf("Theinputnumberis:
%ld\n",iNumber);
printf("Theinversenumberis:
");
invertLongInt(iNumber);
}
voidinvertLongInt(longx)
{
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
voidmain()
{
floats=0,t=1;
intn;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!
+2!
+3!
+……+20!
=%e\n",s);
}
8.打印以下图案:
*
***
*****
*******
#include
voidmain()
{
inti,j;
printf("Thepictureis:
\n");
staticcharpicture[4][7]={{'','','','*'},
{'','','*','*','*'},{'','*','*','*','*','*'},{'*','*','*','*','*','*','*'}};
for(i=0;i<=3;i++)
{
for(j=0;j<=6;j++)
printf("%c",picture[i][j]);
printf("\n");
}
}
9.打印以下图案:
*
**
***
****
#include
voidmain()
{
inti,j;
printf("Thepictureis:
\n");
charpicture[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
voidmain()
{
floatsum=1.0,t,s=1;
inti;
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
voidmain()
{
inti,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
voidmain()
{
inta,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
voidmain()
{
chara[7]={'*','*','*','*','*','*','*'};
inti,j,k;
charspace='';
printf("Thepictureis:
");
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
#defineN4
structstudent
{
charnum[3];
charname[4];
floatscore[2];
floatavr;
}
stu[N];
voidmain()
{
inti,j;
floatsum,average;
for(i=0;i {
printf("inputscoresofstudent%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 {
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 {
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
voidmain()
{
chara[5]={'*','*','*','*','*'};
inti,j,k;
charspace='';
printf("Thepictureis:
");
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
voidmain()
{
intsum_day(int,int);
intleap(intyear);
intyear,month,day,days;
printf("inputdate(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("isthe%dthdayinthisyear.\n",days);
}
intsum_day(intmonth,intday)
{
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(i=1;i day+=day_tab[i];
return(day);
}
intleap(intyear)
{
intleap;
leap=year%4==0&&year%100!
=0||year%400==0;
return(leap);
}
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
#include
voidmain()
{
floata[3][3],sum=0;
inti,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
voidmain()
{
inta[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");
}
}
21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
#include
voidmain()
{
inta[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");
}
}
22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。
#include
voidmain()
{
inta[3][5],s[3],i,j,k;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf("%d",*(a+i)+j);
for(i=0;i<3;i++)
{*(s+i)=*(*(a+j));
for(j=1;j<5;j++)
if(*(s+i)<*(*(a+i)+j))
*(s+i)=*(*(a+i)+j);
}
for(i=0;i<3;i++)
{
printf("Line=%dMax=%d",j,s[j]);
printf("\n");
}
}
23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。
#include
voidmain()
{
inta[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++)
{*(s+i)=*(*(a+i));
for(j=1;j<3;j++)
if(*(s+i)<*(*(a+i)+j))
*(s+i)=*(*(a+i)+j);
}
for(i=0;i<4;i++)
{
printf("Row=%dMax=%d",i,s[i]);
printf("\n");
}
}
24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。
#include
#defineN10
#defineM10
voidmain()
{
inta[M][N],i,j,k[M],max,m,n;
scanf("%d%d",&m,&n);
for(i=0;i for(j=0;j scanf("%d",*(a+i)+j);
for(i=0;i {
for(j=0;j {
if(a[i][j]<=a[i][j+1])
max=a[i][j+1];
else
max=a[i][j];
}
k[i]=max;
}
for(i=0;i {
if(k[i]<=k[i+1])
max=k[i+1];
else
max=k[i];
}
printf("%d",max);
}
25.判断一个N*N的矩阵是否为对称矩阵,将原矩阵输出,判断结果输出。
#include
#defineN10
voidmain()
{
inta[N][N],i,j,k,n;
scanf("%d",&n);
for(i=0;i for(j=0;j scanf("%d",&a[i][j]);
for(i=0;i {
for(j=i+1;j {
if(a[i][j]==a[j][i])
k=1;
else
k=0;
}
}
if(k=0)
printf("bushi");
else
printf("shi\n");
for(i=0;i for(j=0;j printf("%d",a[i][j]);
}
26.有一篇文章,有三行文字,每行有80个字符。
要求统计出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。
#include
voidmain()
{
inti,j,big=0,sma=0,num=0,spa=0,oth=0;
chartext[3][80];
for(i=0;i<3;i++)
{
printf("请输入行%d:
\n",i+1);
gets(text[i]);
for(j=0;j<80&&text[i][j]!
='\0';j++)
{
if(text[i][j]>='A'&&text[i][j]<='Z')
big++;
elseif(text[i][j]>='a'&&text[i][j]<='z')
sma++;
elseif(text[i][j]>='0'&&text[i][j]<='9')
num++;
elseif(text[i][j]=='')
spa++;
else
oth++;
}
}
printf("大写字母:
%d\n",big);
printf("小写字母:
%d\n",sma);
printf("数字:
%d\n",num);
printf("空格:
%d\n",spa);
printf("其它:
%d\n",oth);
}
27.将20个整数放到一维数组中,输出该数组的最大值和最小值。
#include
voidmain()
{
inti,j,min,max,a[21];
printf("请输入数据:
\n");
for(i=1;i<=20;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<=19;i++)
{
min=i;
for(j=2;j<=19;j++)
if(a[min]>a[j]);
a[min]=a[j];
}
for(i=1;i<=19;i++)
{
max=i;
for(j=2;j<=19;j++)
if(a[max] a[max]=a[j];
}
printf("最大数为:
%d\n",a[max]);
printf("最小数为:
%d\n",a[min]);
}
28.将15个整数放到一维数组中,输出该数组中的最大值它的下标,然后将它和数组中的最前面的元素对换。
#include
voidmain()
{
inti,j,min,max,a[16],m,n;
printf("请输入数据:
\n");
for(i=1;i<=15;i++)
{
p