C语言题目:素日期的判定……我不会啊,今天23点之前必须提交怎么办啊怎么办?求高手帮忙,分数大大的有!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言题目:素日期的判定……我不会啊,今天23点之前必须提交怎么办啊怎么办?求高手帮忙,分数大大的有!相关的知识,希望对你有一定的参考价值。

素日期的定义如下:比如1993年5月1日,变成一个8位整数19930501(注意这里有时需补0),如果这个整数是素数,则定义该日期是素日期,据说生日是素日期的人,人气好!

input

3个数表示一个日期比如 1992 2 1 表示1992年2月1日

Output

判定19920201是不是素数,如果是输出"y"

不是输出"n"

Sample input

1992 2 1

sample output

n

参考技术A #include<stdio.h>
#include<math.h>
void isPrime(int m) //判断是不是素数

int i;
int a=sqrt(m);
for(i=2;i<=a;i++)

if(m%i==0)//不是素数

printf("sample output:\n");
printf("n\n",m);
break;

else

printf("sample output:\n");
printf("y\n");
break;




void main()

int year,month,day,sum;
printf("sample input:\n");
scanf("%d %d %d",&year,&month,&day);
sum=year*1000+month*100+day;
isPrime(sum);

追问

那个可以被7整除……

追答

你还是别用我的了,我的好像有错误,我试了几个数也都对,我还没看出来哪有毛病呢,我刚才想取消了
我知道我哪错了,我那里不应该用BREAK
#include
#include
int isPrime(int m) //判断是不是素数

int i;
int a=sqrt(m);
for(i=2;i<a;i++)

if(m%i==0)//不是素数


return 0;

else


return 1;




void main()

int year,month,day,sum;
printf("sample input:\n");
scanf("%d %d %d",&year,&month,&day);
sum=year*1000+month*100+day;
if(isPrime(sum))

printf("sample output:\n");
printf("n\n");

else


printf("sample output:\n");
printf("y\n");


本回答被提问者采纳
参考技术B 还没23:00,希望可以帮到你,临时写的,因为时间关系,注解可以再问我。

#include<stdio.h>
#include<string.h>
#include<math.h>

int main()

char year[5], mon[3], day[3];
char string[9]=0;
char zero[]="0";
int test=0;
scanf("%s%s%s", year, mon, day);
int n_mon=atoi(mon);
int n_day=atoi(day);

strcpy(string, year);
if(n_mon <= 9)
strcat(string, zero);

strcat(string, mon);
if(n_day <= 9)
strcat(string, zero);

strcat(string, day);

int n_string=atoi(string);

for(int i=2; i<=n_string-1; i++)
if(n_string%i==0)
test=1;
break;


if(test==1)
printf("n\n");

if(test==0)
printf("y\n");

return 0;
参考技术C #include <stdio.h>
#include <math.h>

int isprime(int n)

int i;
for (i = 2; i < (int)sqrt(n); i++)

if (n % i == 0)
return 0;

return 1;


void main()

int year, month, day, number;
scanf("%d %d %d", &year, &month, &day);
number = year * 10000 + month * 100 + day;
if (isprime(number))
printf("y\n");
else
printf("n\n");
追问

这个好像非正常结束……

追答

什么叫好像,你用什么编译器,我用vc6.0没问题呀,你的问题在哪儿?

参考技术D #include "stdafx.h"

#include<stdio.h>

#include<math.h>

void prime(int num )



int i=2,x=sqrt(num);

do if(num%i==0) break; while(i++<=x);

if(i<=x) printf("n\n");

else printf("y\n");



void main()



int date,year,month,day;

printf("Please enter the date:");

scanf("%d%d%d",&year,&month,&day);

date=year*10000+month*100+day;

prime(date);

第5个回答  2011-04-02 #include<stdio.h>
#include<math.h>
main()

int year,month,day,num,i,k;
printf("please input a date:\n");
scanf("%d %d %d",&year,&month,&day);
num=10000*year+100*month+day;
for(i=2;i<=sqrt(num);i++)

if(num%i!=0)
k=1;
else
k=0;
break;


if(k)
printf("Y");
else
printf("N");

培训第五天

今天一种的新生就要军训了,但是我不用去啊红红火火恍恍惚惚哈哈哈哈,我们迈着轻快的步伐,一脸得意地从他们身边路过,沿着熟悉的路,走进那个熟悉的机房

今天依然在学习巨难的多重循环,除了运算步骤没有更多的理解了TAT

今天还是在刷多重循环相关题目,目前已经濒临不会写代码TAT(我可能要像焦老师说的一样几天写一个代码了2333)

以下是一些很有难度的题目(今天刷的每道题都很有难度)以及自己的理解:

①兔子总数问题:这道题的方法真的是太巧妙了!!!若第一个月的兔子对数为a,第二个月的兔子对数为b,第三个月的兔子对数为c,则有a+b=c;接着,若第二个月的兔子对数为a‘,第三个月的兔子对数为b’,第四个月的兔子对数为c‘,则有a’+b‘=c’。因为a‘=b,b’=c,所以要把b赋值给a,把c赋值给b,即a=b,b=c,每次循环运算时,这个月、上个月、上上个月就会往后推一个月,从而实现循环

这道题要格外注意,从这道题中汲取解决方法和逻辑推理能力

此外,这道题还涉及到斐波那契数列,其用函数表达为f(n)=f(n-1)+f(n-2)

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     long long a=1,b=2,c=0;
 6     int x;
 7     cin>>x;
 8     if(x==1) cout<<a<<endl;
 9     if(x==2) cout<<b<<endl;
10     if(x>=3)
11         for(int i=3;i<=x;i++)
12         {
13             c=a+b;
14             a=b;
15             b=c;
16         }
17         cout<<c<<endl;
18         return 0;
19 }

②再求素数:这道题在写if的条件,思维会被打乱,因此一定要静下心来,一点一点分析条件,很多次都因为“{}”以及for循环中的for循环位置错误导致输出错误的答案,最后类比了求完数的格式才解出来,格式正确还是要建立在充分理解的基础上吧;另外对于flag的用法又有了一些了解,即先假设flag成立(存在?),在之后的运算中给出条件,若满足,则flag成立,反之不成立,最后根据题目需求输出当flag成立或不成立时的答案

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 int main()
 5 {
 6     int x;
 7     cin>>x;
 8     for(int i=2;i<=x;i++)
 9         {
10             bool flag=0;
11             for(int j=2;j<=sqrt(i*1.0);j++)
12             {
13                 if(i==2) flag=0;
14                 if(i%j==0) {flag=1; break;}
15                 if(i%j!=0&&i!=2) flag=0;
16             }
17             if(flag==0) cout<<i<<endl;
18         }
19     return 0;
20 }

③韩信点兵:这道题不是太难,还是输入的格式问题,刚开始else加到哪都不对,后来换了一种表达方式,就解出题了,还是不太理解for循环与if配合使用时的格式

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int x,a,b,c;
 6     cin>>a>>b>>c;
 7     while((x-a)%3!=0||(x-b)%5!=0||(x-c)%7!=0)
 8     {
 9         x++;
10     }
11     if(10<=x&&x<=100) cout<<x<<endl;
12     if(x>100||x<10) cout<<"No answer"<<endl;
13     return 0;
14 }

④质因子分解:回去补充

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,k=0;
 6     cin>>n;
 7     while(n>=2)
 8     {
 9         for(int i=2;i<=n;i++)
10             while(n%i==0)
11             {
12                 if(k==0) {cout<<n<<=<<i;k=1;}
13                 else {cout<<*<<i;}
14                 n=n/i;
15             }
16             break;
17     }
18     return 0;
19 }

今天又犯了一些低级错误,比如:

①“{}”只加了一半,以后要仔细检查,输入时要细心

②没看清题,把“No answer”打成了“No Answer”,输入前一定要仔细看题

③少加“;”,还是要仔细检查,除了for、if、while以外,其他的都要输入“;”

今天做出的题不多,因为题实在是太难了TAT(也可能是我智商不够用吧2333),最主要的收获还是对解题思路以及解题步骤的理解

另外,对于break的用法、“{}”的位置、cout的位置以及循环里的循环的位置还是一脸懵逼,求学长解答(今天的问题比较多,希望学长不要嫌弃我,谢谢谢谢,心疼学长一分钟)

愿你的青春不负梦想

加油!共勉!

 

以上是关于C语言题目:素日期的判定……我不会啊,今天23点之前必须提交怎么办啊怎么办?求高手帮忙,分数大大的有!的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言来计算日期间隔天数?

C语言中 怎样把日期转换成字符串

数论容斥比较快速的做法和二分图判定1

谁知道怎么用C语言编写万年历啊

关于ASP语句判定某数输入值不为空

c语言程序,要求输入一个n数输出第n个丑数。丑数是素因子只有2.3.5.7。非常急,谢谢。