c语言小白做题记录 11.8 厦门大学c语言期中考试·2020(编程题)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值