#数据类型与基本语句
1.求100以内的素数,全部打印出来
#include<stdio.h>
int main()
{
printf("100以内的素数有:\n");
int i,j;
int count=0;
for(i = 2;i <= 100;i++)
{
for(j = 2;j <= i;j++)
{
if(i%j==0)
{
break;
}
}
if(j>=i)
{
count++;
printf("%d\n",i);
}
}
printf("100以内素数一共有%d\n",count);
return 0;
}
2.编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
#include <stdio.h>
#include <math.h>
//编写一个程序,求出满足下列条件的四位数:
//该数是个完全平方数,且第一、三位数字之和为10,
//第二、四位数字之积为12
int main()
{
int i;
int a,b,c,d,e;
for(i=32;i<100;i++)
{
a=i*i;
b=a%10;
c=a/10%10;
d=a/10/10%10;
e=a/10/10/10;
if((c + e == 10)&&(b * d == 12))
{
printf("%d\n",a);
}
}
return 0;
}
3.通过编程实现,统计1~n有多少个9?(提示:n通过参数传入)
#include<stdio.h>
int main()
{
int n;
int i,j;
int t,m;
int count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=i;
while(t!=0)
{
if(t%10==9)
{
count++;
}
m= t/10;
t=m;
}
}
printf("output:%d\n",count);
return 0;
}
4.一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include<stdio.h>
int main()
{
int i,j,sum=1;
for(i = 3;i <= 1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(i==sum)
{
printf("%d\n",i);
}
sum=1;
}
return 0;
}
5.求两个数的最大公约数,最小公倍数?
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int t = 0;
printf("请输入两个:");
scanf("%d%d", &a, &b);
int m = a;
int n = b;
while(a%b!=0)
{
t=a%b;
a=b;
b=t;
}
printf("最大公约数是",b);
printf("最小公倍数是",m*n/b);
return 0;
}
6.设计一个计算器程序.
#include<stdio.h>
int main()
{
int a,b;
char ch;
scanf("%d%c%d",&a,&ch,&b);
switch(ch)
{
case '-':printf("%d",a-b);
break;
case '+':printf("%d",a+b);
break;
case '*':printf("%d",a*b);
break;
default : printf("实现不了") ;
break;
}
return 0;
}
7. 设计一个日历程序,输入年月日,输出当年第多少天
#include<stdio.h>
int main()
{
int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31};
int y, m, d, days;
int leap, i;
scanf("%d %d %d", &y, &m, &d);
leap = (y % 4 == 0 && y % 100 || y % 400 == 0) ? 1 : 0;
if(m>2)
{
if(leap==0)
{
for(i = 0, days = 0; i < m; i++)
{
days += mon[i];
}
printf("days=%d\n",days+d);
}
if(m > 2&&leap == 1)
{
for(i = 0, days = 0; i < m; i++)
{
days += mon[i];
}
printf("days=%d\n",days+d+1);
}
}
if(m<=2)
{
for(i = 0, days = 0; i < m; i++)
{
days += mon[i];
}
printf("days=%d\n",days+d);
}
return 0;
}
8.200~300之间不能被3整除的数,5个一行输出.
#include<stdio.h>
int main()
{
int i;
int count=0;
for(i=200;i<=300;i++)
{
if(i%3!=0)
{
count++;
if(count!=5)
{
printf(" %d",i);
}
else if(count==5)
{
count=0;
printf(" %d\n",i);
}
}
}
return 0;
}