#include stdio.h
在宁国等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站建设 网站设计制作定制网站,公司网站建设,企业网站建设,高端网站设计,全网整合营销推广,外贸网站制作,宁国网站建设费用合理。
#include stdlib.h
int huiwen(char *str) /* 回文子函数 */
{
int len=strlen(str);
int i=0;
for(i=0; ilen/2; i++) {
if(*(str+i) != *(str+len-1-i)) return 1;
}
return 0;
}
int main()
{
int i=0;
char str[5];
int hw6[10000] = {0};
int cnt=0;
int max=0;
printf("所有回文数:\n");
for(i=9999; i=100; i--) {
memset(str, 0, 5);
sprintf(str, "%d", i);
if(huiwen(str) == 0) {
printf("%d\n", i); /* 这里把所有回文数打印出来 */
if(i % 6 == 0) {
hw6[cnt++] = i; /* 记录下被6整除的回文数 */
if(max == 0)
max = i; /* 最大被6整除的回文数,只会被执行一次 */
}
}
}
printf("能被6整除的回文数:\n");
for(i=0; icnt; i++) {
printf("%d\n", hw6[i]);
}
printf("最大回文数: %d\n",max);
}
#include stdio.h
#includestring.h
#define N 80
int fun(char *str)
{
char a[N],b[N];
int i=0,j=0;
while(*str)
a[i++]=*str++;
a[i]='\0';
while(i0)
b[j++]=a[--i];
b[j]='\0';
return (strcmp(a,b)==0);
}
main()
{
char s[N];
printf("enter a string:");gets(s);
printf("\n\n");puts(s);
if (fun(s)) printf("YES\n");
else
printf("NO\n");
}
程序2
#includestdio.h
#define END 15//求前15位的和
void main()
{
float sum=0,t=2;
int i=0;
while(i++END)
{
sum+=t;
t=1+1/t;
}
printf("%f\n",sum);
}
【题目】:
题目:如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,从给出的数据中统计出既是回文数又是素数的数(109)。
【思路分析】:
首先,你输入的是整数(x),计算机不能像人脑一样直接得到每个数位(数组a[10])。
所以,要先判断数位(n),然后只要数位数组中a[i]=a[n-i]即可。
关于素数,设置一个for循环,只要从1到x都不存在能整除x的数,就是素数了。
【代码如下】:
#include stdio.h
#includewindows.h
int main()
{
int
a[1000];
int
n;//输入整数的个数
printf("请输入整数的个数:\n");
scanf("%d",n);
int
i;
printf("请输入这%d个整数:\n",n);
for(i=0;in;i++)
scanf("%d",a[i]);
int
result_1;//值为1表示是回文数,值为0表示不是。
int
result_2;//值为1表示是质数,值为0表示不是。
int
palindrome(int y);//判断回文数的函数
int
prime(int y);//判断质数的函数
int
y;//y是要代入函数里的参数
int
num=0;//num用来计总共有几个符合条件的数
int
b[1000];//b[1000]是符合要求的数组
for(i=0;in;i++)
{
result_1=0;//先使初值=0。
result_2=0;
y=a[i];
result_1=palindrome(y);
result_2=prime(y);
if((result_1==1)(result_2==1))
{
b[num]=a[i];
num++;
}
}
if(num0)
{
printf("总共有%d个既是回文数又是质数的数:\n",num);
for(i=0;inum;i++)
printf("
%d",b[i]);
printf("\n");
}
else
printf("输入的整数均不符合要求\n");
system("pause");
return 0;
}
int palindrome(int y)
{
int
a[10];//a[10]表示y的各个数位的值
int
i=0;
while(y=1)
{
a[i]=y%10;//y%10就得到y的末位
y=y/10;//让倒数第二位变成了末位
i++;//i最后又自加了一次,所以i就表示y有多少位
}
int
j;
int
z=1;
for(j=0;j=(i-1)/2;j++)
{
if(a[j]!=a[(i-1)-j])
{
z=0;
break;
}
else
continue;
}
return
(z);
}
int prime(int y)
{
int
i,z;
z=1;
for
(i=2;iy;i++)
{
if(y%i==0)
{
z=0;
break;
}
else
continue;
}
return(z);
}
【测试数据】:
n = 168
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163
167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271
277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521
523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647
653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929
937 941 947 953 967 971 977 983 991 997
【测试结果】:
请输入整数的个数:
168
请输入这168个整数:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97 101 103 1
07 109 113 127 131 137 139 149 151 157 163
167 173 179 181 191 193 197 199 211 2
23 227 229 233 239 241 251 257 263 269 271
277 281 283 293 307 311 313 317 331 3
37 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 4
57 461 463 467 479 487 491 499 503 509 521
523 541 547 557 563 569 571 577 587 5
93 599 601 607 613 617 619 631 641 643 647
653 659 661 673 677 683 691 701 709 7
19 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 8
57 859 863 877 881 883 887 907 911 919 929
937 941 947 953 967 971 977 983 991 9
97
总共有20个既是回文数又是质数的数:
2 3
5 7 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929
请按任意键继续. . .
#include
#include
void main()
{
int year,month,day;
int flog;
scanf("%d,%d",year,month);
flog=1;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2: if( (year%4==0 (year%100)!=0)||year%400==0)
printf("this is leap year\n");
else
printf("this is not leap year\n");
break;
default :flog=0;
}
if(flog)
printf("%d",day=28);
else
printf("%d",day=29);
getch();
#includestdio.h
int main(){
int m[16], n, i, t, count=0;
long unsigned a, k;
printf("No. number it's square(palindrome)\n");
for( n=1; n256; n++ ) /*穷举n的取值范围*/
{
k=0; t=1; a=n*n; /*计算n的平方*/
for( i=0; a!=0; i++ ) /*从低到高分解数a的每一位存于数组m[1]~m[16]*/
{
m[i] = a % 10;
a /= 10;
}
for(; i0; i--)
{
k += m[i-1] * t; /*t记录某一位置对应的权值 */
t *= 10;}
if(k == n*n)printf("%2d%10d%10d\n", ++count, n, n*n);
}
return 0;
}
扩展资料:
C语言在编写的时候需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”)。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
百度百科-回文数
while(m)是一个循环语句,字面的意思是判断m的值是真还是假,如果m是非0值就是说m为真,就执行while(m)下面{}中的内容,如果m的值为0就是说m为假,就跳过while(m)下面{}中的内容,执行后面的语句例如题目中的if (sum == val)。
假如val的值为31,执行m = val;m就为31,m为非0值所以执行while(m)后面{}中的语句,大括号中最后句是m /= 10;所以执行1次之后m就变成了3了,再将3带入while(m)中,m还是非0值,所以还要执行一次while(m)后面{}中的语句,之后m变成了0,将0带入while(m)中,此时m为0,所以m为假退出while(m)循环,执行后面的if (sum == val)语句。