题目一:
1. 如何判断一个素数?100~200之间的素数怎么判断?
素数判断是除了1和本身,不能被其他数整除,初等数论,一个整数不能整除他的平方数之内的整数就是素数。可以利用循环来完成。感觉程序的关键是什么时候输出结果,即注意 break和continue的使用。
int i,n,m;
for(i=100;i<200;i++)
{
for(n=2;n<i;n++)
{
if(i%n==0)//不是素数
{
printf("不是素数\n");
break; //如果不是素数,则从此处跳出循环,不用继续了
}
else
{
m=n+1;
if((m*m)>i)
{
printf("是素数\n");
printf("%d\n",i);break;
}
else
continue;
}
}
}
二
2. 求两个数的最大公约数,最小公倍数?
最大公约数=
最小公倍数=两整数的乘积÷最大公约数
int a,b;
int m,n;
int i;
printf("输入两个正整数数:\n");
scanf("%d%d",&a,&b);
if(a>b) // 分大小
{
m=b;
n=a;
}
else
{
m=a;
n=b;
}
for(i=m;i>=0;i--)
{
if((n%i==0)&&(m%i==0)) //能够同时被这两个数整除的,而且是从最小的那个数开始逐渐往下减小的,得到的就是最大公约数
{
printf("最大公约数:%d\n",i);
printf("最小公倍数:%d\n",m*n/i);
break;
}
}
三
设计一个日历程序,输入年月日,输出当年第多少天?
日历计算关键点是1.闰年的判断,闰年时2月改为29天;2.月份天数的不用,通过数组来选择不同的天数
int y,m,d,i;
int count=0;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //1,3,5,7,8,10,12 31天
printf("请输入年月日\n");
scanf("%d%d%d",&y,&m,&d);
if((y%4==0)&&(y%100!=0)||(y%400==0)) //判断闰年
month[2]=29;
for(i=(m-1);i>0;i--)
{
count+=month[i];
}
count+=d;
printf("是当年的第%d天",count);
老师的程序:
//输入年月日,计算当天是这年的第几天
#include<stdio.h>
//实现 年 月 日 的封装
struct tian
{
int year;
int month;
int day;
};
//使用子函数功能,计算当天是这年的第几天
int days(int year,int month,int day)
{
int s,i;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
s = 0;
if((year%4==0) && (year%100!=0) ||(year%400==0))
{
a[2]=29;
}
for(i = 1;i < month;i++)
s+=a[i];
s = s + day;
return s;
}
//主函数实现输入年月日
int main()
{
int k;
struct tian a;
printf("输入年月日:");
scanf("%d %d %d",&a.year,&a.month,&a.day);
k = days(a.year,a.month,a.day);
printf("%d 年 %d 月 %d 日 是第%d天\n",a.year,a.month,a.day,k);
return 0;
老师给的程序结构化更好,运行时检查出了几个错误,不清楚为什么给的程序有小错误
四
200~300之间不能被3整除的数,5个一行输出
关键是如何5个一行的输出。
int i,a=0;
for(i=200;i<301;i++)
{
if(i%3!=0)
{
printf("%d\t",i);
a++;
}
if(a%5==0)
{
printf("\n");
a=0;
}
}
写这个程序的时候出了错,因为没有分清楚==与=的区别 (lll¬ω¬).....
五.
找出3x3矩阵中的最大值和最小值,并输出其坐标(i,j)
数组中判断最大值与最小值时,首先应该给出第一个值,其他的都来和它比较
void main()
{
int i,j;
int m=0,n=0;//最大值的坐标
int c=0,d=0;//最小值的坐标
int top,bot;
int a[3][3]={ {13,2,3},
{4,11,6},
{17,8,9}
};
top=a[0][0];
bot=a[0][0];
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if (top<a[i][j])
{
top=a[i][j];
m=i,n=j;
}
if(bot>a[i][j])
{
bot=a[i][j];
c=i,d=j;
}
}
}
printf("最大值%d 坐标:%d,%d\n",top,m,n);
printf("最小值%d 坐标:%d,%d\n",bot,c,d);
}
六.
输入一个字符串,将其中的大小写互换
注意用到字符串的时候需要定义头文件#include<string.h> ,输出时直接用puts(a)
#include<stdio.h>
#include<string.h>
void main()
{
int i;
char a[]="OCSJLaljdiDL";
for(i=0;i<strlen(a);i++)
{
if((a[i]>='A')&&(a[i]<='Z'))
{
a[i]+=0x20;
}
else
if((a[i]>='a')&&(a[i]<='z'))
a[i]-=0x20;
else ;
}
puts(a);
}