1.(12 分)回文素数(质数)指的是:素数 n 从左向右和从右向左读其数值相 同。求出所有的三位回文素数,以每行 4 个数的形式显示在屏幕上,并统计 它们的数量 count。
#include <stdio.h>
int sushu(int x)
{
int s=0;int i;
for(i=1;i<=x;i++)
{
if (x%i==0)
s++;
}
if (s==2)
return 1;
else
return 0;
}
int main()
{
int i,n=0;
for(i=100;i<=999;i++)
{
if(i%10==i/100&&sushu(i)==1)
{
printf("%d ",i);
n++;
if(n%4==0)
{
printf("\n");
}
}
}
printf("\ncount=%d",n);
return 0;
}
2.(14 分)校门口有 100 个车位(编号为 1,2,...,100)停满了共享单车, 为了移走部分单车以方便通行,学校派了 N 个志愿者去移车,每个志愿者的任 务单有两个数字 L 和 R(1<=L<=R<=100),表示他负责将编号处于区间[L, R] 之间的单车全部移走,由于工作上的疏忽,志愿者领到的区间可能有重叠。编写程序。计算当所有志愿者都完工的时候,车位上还剩下几辆车。
输入样例:2 1 60 4 90
输出样例:10
注:2名志愿者分别移走1~60,4~90 号车,还剩下91~100号车,余10辆
#include <stdio.h>
int main()
{
int che[101];
int i,j;//用于控制循环次数
for (i=1;i<=100;i++) che[i]=1;//对1-100中每一项进行赋值
int n,a,b,m=0;//n用来储存数据的组数 a和b用来储存移车的范围 m用来统计剩余的车辆数
scanf("%d",&n);
for(j=1;j<=n;j++)//注意:内外循环不能用同一个字符 否则会造成覆盖 导致不能正常循环
{
scanf("%d %d",&a,&b);
for (i=a;i<=b;i++) che[i]=0;
}
for(i=1;i<=100;i++)
{
if (che[i]==1)
m++;
}
printf("%d",m);
return 0;
}
3.(14分)国际标准书号ISBN共17位,由13位数字和4位连字符(“-”)组成。 最后1位数字表示校验位,校验规则为:对从左至右前12位数字,分别计算奇位 数之和s1与偶位数之和s2;将s2乘以3,与s1相加,结果的个位数记为sum,即 sum=(s2 * 3 + s1) mod 10;则校验位c为:c=10-sum。
例如,C 语言课本的 ISBN 号为:978-7-302-48144-7。 其奇位数之和 s1=9+8+3+2+8+4=34,偶位数之和 s2=7+7+0+4+1+4=23 sum=(23*3+34) mod 10=3,校验位 c=10-sum=7 编写程序,读入一个标准格式的 ISBN 号,判断其校验位是否正确,正确输出1,错误输出 0。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[13]={0};//专用储存数字的
char b[17];
gets(b);
int i;
int j=1;
for (i=0;i<17;i++)
{
if (b[i]<='9'&&b[i]>='0')
{
a[j++]=(b[i]-48);
}
}
int jiaoyanwei=b[16]-48;
978-7-302-48144-7
int s1=0;int s2=0;
for (i=1;i<=12;i++)
{
if (i%2==1)
{
s1+=a[i];
}
else
{
s2+=a[i];
}
}
int sum=(s2*3+s1)%10;
int c=10-sum;
if(c==jiaoyanwei)
printf("1");
else
printf("0");
return 0;
}