当前位置:文档之家› C语言初学者的几个经典习题

C语言初学者的几个经典习题

1.求两个数的最小公倍数:
#include<stdio.h>
void main()
{
int a,b, num1,num2,temp;
printf("请输入两个数:\n");
scanf("%d%d",&num1,&num2);
if (num1<num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(b!=0)
{temp=a%b;a=b;b=temp;}
printf("最小公倍数为:%d\n",num1*num2/a); }
2.判断某一天是一年的第多少天:
#include<stdio.h>
int sum_day(int year,int month,int day);
void main()
{
int year,month,day;int days;
printf("请输入要查询的年月日\n");
scanf("%d%d%d",&year,&month,&day);
days=sum_day(year,month,day);
printf("该天是%d天\n",days);
}
int tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sum_day(int year,int month,int day)
{
int i,days=0;
if(year%4==0&&year%100!=0||year%400==0) tab[2]=29;
for(i=1;i<month;i++)
days+=tab[i];
days+=day;
return days;
}
3.判断一个数是不是素数:
#include<stdio.h>
int isprime (int a);
void main()
{
int x;
printf("请输入要判断的正整数:\n");
scanf("%d",&x);
if (isprime(x)) printf("%d是素数\n",x);
else printf("%d不是素数\n",x);
}
4.计算矩阵对角线元素之和:
#include<stdio.h>
void main()
{
int i,j,a[5][5],sum=0,n=5;
for(i=0;i<5;i++)
{
printf("行%d:",j);
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
if(i==j) sum+=a[i][j];
if(i+j==4) sum+=a[i][j];
sum-=a[2][2];
}
}
}
5.斐波拉契数列:
(1)#include<stdio.h>
void main()
{
int A[20];
int i ;
A[0]=1;
A[1]=1;
for(i=2;i<20;i++)
A[i]=A[i-1]+A[i-2];
for(i=0;i<20;i++)
{
printf("%d ",A[i]);
if((i+1)%5==0)
printf("\n");
}
(2)#include <stdio.h>
int fibo(int n);
void main()
{
int i;
for(i=1;i<=20;i++)
{ printf("%d ",fibo(i));
if(i%5==0)
printf("\n");
}
}
int fibo(int n)
{
int k;
if(n==1) k=1;
else if(n==2) k=1;
else k=fibo(n-1)+fibo(n-2);
return k;
}
6.查询数字:
#include <stdio.h>
void main ()
{
int a[10],left=0,right=10,mid,i,j;
printf("请按从小到大的顺序输入被查询序列的10个数:\n");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
printf("请输入待查询的整数:\n");
scanf("%d",&j);
while (left<=right)
{
mid=(left+right)/2;
if (a[mid]==j)
{printf("待查询数字在%d位",mid+1);break;}
else if (a[mid]>j)
right=mid-1;
else if (a[mid]<j)
left=mid+1;
}
if(left>right)
printf("待查询数字不在此序列");
7.统计字符串:
#include<stdio.h>
int p(char a[],char b[])
{
int i=0,j=0,k=0;
for(i=0;a[i];i++)
{
j=i;
for(k=0;a[j]==b[k]&&b[k]&&a[j];j++,k++); if(!b[k])
return ++i;
}
return -1;
}
int main(void)
{
char a[100],b[100];
gets(a);
gets(b);
printf("%d\n",p(a,b));
return 0;
}。

相关主题