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
#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");
#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点之前必须提交怎么办啊怎么办?求高手帮忙,分数大大的有!的主要内容,如果未能解决你的问题,请参考以下文章