暑假学习--作业总结一

来源:互联网 发布:淘宝权是哪个战队的 编辑:程序博客网 时间:2024/05/22 11:50

题目一:

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);
}






















原创粉丝点击