专业课真题复习(2019)

简介: 专业课真题复习(2019)

1.题目描述:

编写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。

#include<stdio.h>
int isprime(int n)
{
  int i;
  for(i=2;i<=n/2;i++)
  {
    if(n%i==0)
    {
      return 0;
    }
  }
  return 1;
}
int main(void)
{
  int number;
  printf("请输入一个整数:\n");
  scanf("%d",&number);
  if(isprime(number))
  {
    printf("该数是一个素数,"); 
  }else{
    printf("该数不是一个素数");
  }
  return 0;
}

2.题目描述:

编写函数dayInMonth(int y,int m)方法。函数的功能是计算y年m月份包含的天数。

#include<stdio.h>
int dayInMonth(int y,int m)
{
  int monthtab[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  if((y%4==0)||(y%100!=0&&y%4==0))
  {
    if(m==2)
    {
      return 29;
    }
  }
  return monthtab[m-1];
 } 
 int main(void)
 {
  int year,month;
  printf("请分别输入年月:\n");
  scanf("%d%d",&year,&month);
  printf("包含的天数为%d",dayInMonth(year,month));
  return 0;
 }

3.题目描述:

13个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到3者推出圈子。找出最后留在圈子中的人原来的序号。要求用链表处理。

#include<stdio.h>
struct people
{
  int no;
  int next;
}peoples[13];
int main()
{
  int i,j,count;
  int number=13;
  for(i=0;i<13;i++)
  {
    peoples[i].no=i+1;
    peoples[i].next=i+1;
    if(i==12)
    {
      peoples[i].next=0;
    }
   } 
   i=0;
   count=0;
   while(number>1)
   {
    printf("number=%d\n",number);
    if(peoples[i].no!=0)
    {
      count++;
      if(count==3)
      {
        peoples[i].no=0;
        number--;
        count=0;
       }
     }
     i=peoples[i].next;
   }
   for(i=0;i<13;i++)
   {
    printf("%d",peoples[i].no);
    if(peoples[i].no!=0)
    {
      printf("最后剩下的人的序号为%d",peoples[i].no);
     }
   }
   return 0;
}

注意:1.书上给的是用静态链表做的,其他地方都是动态链表。

2. 指导最后一个的时候让他再指向头指针。


4.题目描述:

假设文件data.txt中一次读入各行文本,并把各行的文本的字符次序颠倒一下,即在原来k位置上的字符将出现在n-k+1的位置上,其中n是该行文本的长度(不包含最后的回车换行符或文件结束符),最后依次把各行颠倒了字符次序的文本保存到文件result.txt中。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char *str)
{
  int end=strlen(str)-1;
  int start=0;
  char temp;
  while(start<=end)
  {
    temp=str[end];
    str[end]=str[start];
    str[start]=temp;
    start++;
    end--;
  }
}
int main(void)
{
  FILE *fd;
  FILE *fr;
  char arr[1000];
  int n;
  int len=0;
  if((fd=fopen("data.txt","r"))==NULL)
  {
    printf("can not open this file.");
    exit(0);
  }
  if((fr=fopen("result.txt","w"))==NULL)
  {
    printf("can not open this file.");
    exit(0);
  }
  while(!feof(fd))
  {
    fgets(arr,1000,fd);
    n=strlen(arr);
    if(arr[n-1]=='\n')
    {
      n-=1;
    }
  int end=n-1;
  int start=0;
  char temp;
  while(start<=end)
  {
    temp=arr[end];
    arr[end]=arr[start];
    arr[start]=temp;
    start++;
    end--;
  }
    fprintf(fr,"%s",arr);
  }
  fclose(fd);
  fclose(fr);
  return 0;
}

注意:

1.题目中的条件是若干行,所以不能直接给出行数,但是fscanf()函数把空格也当成了文件结束的标志,教材中给出了这个思考问题。

2.要用feof()函数判断是不是文件末尾,每次都读出1000个字符,当遇到回车的时候,长度要-1.

strlen包括换行符,不包括结束符。

相关文章
|
存储 安全 专有云
阿里云专有云版本升级
阿里云专有云版本升级
611 8
|
负载均衡 5G UED
蜂窝网络中的切换(Handover)及其类型详解
蜂窝网络中的切换(Handover)及其类型详解
2512 12
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
随着企业数字化转型的不断深入,传统的IT运维模式已经难以满足快速迭代和持续交付的需求。本文将探讨如何通过结合DevOps文化与容器化技术,构建一个既高效又稳定的云基础设施。文章首先概述了DevOps的核心理念及其在现代运维中的重要性,然后详细介绍了容器化技术,特别是Docker和Kubernetes在实现微服务架构中的应用。最后,文中通过案例分析展示了这一融合实践如何在真实环境中提升运维效率和系统稳定性。
233 7
|
存储 C语言
顺序栈和链栈的定义和使用C语言实现(附有完整代码)
顺序栈和链栈的定义和使用C语言实现(附有完整代码)
982 0
|
数据可视化 IDE 数据挖掘
不用加减乘除做加法(简单难度)
不用加减乘除做加法(简单难度)
263 0
不用加减乘除做加法(简单难度)
汇编实验三
实验3 数据传送指令练习 一、实验目的: 1.熟悉IBM PC机的数据传送指令的使用。 2. 掌握堆栈的作用。 3.掌握堆栈指示器SP和堆栈操作指令PUSH、POP。 二、实验内容: 1.将数据段中偏移地址为0000H的连续三个字节内容传送至该段偏移地址为0003H的连续三个字节单元中。要求使用直接寻址、寄存器间接寻址方式。
462 0
汇编实验三
|
弹性计算 运维 Kubernetes
停课不停学,阿里云“神龙+容器”帮助在线教育企业构建高质量课堂
各大学校与教育机构响应号召,使得近期在线教育需求激增。在线教育学生的学习时间较为集中,高峰时段呈现出大流量、高并发的特点,对在线教育机构的业务弹性和稳定性提出极大挑战。
3685 0
停课不停学,阿里云“神龙+容器”帮助在线教育企业构建高质量课堂
|
存储 缓存 NoSQL
面试时经常会被问到的Redis问题,持久化,存储结构,架构模式
介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。
1795 0
|
算法 数据安全/隐私保护
网络直播系统的架构,基础版直播间搭建
本文将从三个版块讲述一个简单的网络直播系统的架构是怎么样的

热门文章

最新文章