IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 安徽师范大学2020年898真题答案解析 -> 正文阅读

[C++知识库]安徽师范大学2020年898真题答案解析

安师大898 C语言真题参考答案

个人整理非官方答案。仅供参考!!!

一、程序填空题

  1. 以下程序计算Fibonacci数列:1, 1, 2, 3, 5, 8, 13……的前20项。请将程序补充完整,使程序得出正确的结果。

    	#include <stdio.h>
    	int main()
    	{
    	    int i;
    	    long f1,f2;//填空
    	    f1=1;f2=1;
    	    for(i=0;i<10;i++){
    	        printf("%ld\n%ld\n",f1,f2);
    	        f1=f1+f2;
    	        f2=f1+f2;//填空
    	    }
    	return 0;
    	}
    
  2. 以下swap函数将一个数组中的元素按逆序重新存放。例如原来的顺序为:8,5,7,4,1,要求改为: 1,4,7,5,8请将程序补充完整,使程序得出正确的结果。

    	#include<stdio.h>
    	#define N 100
    	void swap(int a[],int n)
    	{
    	    int i,s;
    	    for (i=0;i<n/2;i++)
    	    {
    	        s=a[i];
    	        a[i]=a[n-i-1];
    	        a[n-i-1]=s;//填空
    	    }
    	}
    	
    	int main()
    	{ int a[N],k,n;
    	    printf("请输入数组元素的个数(小于100):");
    	    scanf("%d",&n);
    	    for(k=0;k<n;k++) 
    	        scanf("%d",&a[k]);
    	    swap(a,n);//填空
    	    printf("交换后的数组:\n"); 
    	    for(k=0;k<n;k++)
    	        printf("%d ",a[k]);
    	 }
    
  3. 以下程序中.函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCH码大小递增排序,并将排序后下标为奇数的字符取出.存入形参p所指字符数组中.形成一个新串 例如.形参s所指的字符申为:wijkwasgweqaasdgbcwegdefage,执行后p所指字符数组中的字符串应为aacdeefgggiks
    将程序补充完整,使程序得出正确的结果。

    #include <stdio.h> 
    void fun(char *s,char *p)
    {
        int i,j,n,x,t;
        n=0;
        for(i=0;s[i]!='\0';i++) n++;
        for(i=1;i<n-2;i=i+2)
        {
            t=i;//填空
            for(j=i+2;j<n;j=j+2)//填空
            {
                if(s[t]>s[j]) t=j;
                if(t!=i)
                {
                    x=s[i]; s[i]=s[t]; s[t]=x;
                }
            }
        }
        for(i=1,j=0;i<n;i=i+2,j++) p[j]=s[i];
        p[j]='\0';//填空
    }
    
    int main()
    {///baawrskjghzlicda
        char s[100]="wijkwasgweqaasdgbcwegdefage",p[50];
        fun(s,p);
        printf("The result is:%s\n",p);
        return 0;
    }
    
    //wijkwasgweqaasdgbcwegdefage
    
  4. 己定义学生结构体変量.存储了学生的学号,姓名和三门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。请将程序补充完整,使程序的输出结果为:

    NO:101 Name:LiSi

    Scores:2.00 90.00 100.00

      #include<stdio.h>
      #include<string.h>
      struct student{
          int sno;
          char name[10];
          float score[3];	
      };
      void fun(struct student *b)
      {
          b->sno=101;//填空
          strcpy(b->name,"LiSi");//此处将学生姓名修改为-LiSi”
      }
      
      
      int main()
      {
          struct student t={102,"ZhangSan",80,90,100}; 
          int i;
      
          fun(&t);//填空
          printf("No: %d Name: %s\nScores: ",t.sno,t.name);
          
          for(i=0;i<3;i++) 
           printf("%.2f ",t.score[i]); 
          
          printf("\n"); 
      return 0;   
      }
       
      
    
    

二、程序分析题

  1. 分析以下程序,回答相关问题。

    # include <stdio.h>
    int main()
    {
        int a,b,num1,num2,temp; 
        scanf("%d%d",&num1,&num2); 
        if(num1<num2) 
        {
            temp=num1 ;
            num1 =num2;
            num2=temp;
        }
        a=num1;b=num2;
        while(b>0)
        {
            temp=a%b; a=b; b=temp;
        }
    printf("%d,%d",a,num1*num2/a);
    }
    
    

    (1)该程序的功能是什么?
    (2)请列举两个有代表性的测试用例,描述该程序的执行过程。

    (1)求最大公约数和最小公倍数在这里插入图片描述 (2)主观题就不赘述了

  2. 分析以下程序,回答相关问题

    	#include <stdio.h>
    	int main()
    	{
    	    int p[7]={3,5,6,7,8,9,11},i=0,k=0;
    	    while(i<7 && p[i]%2==1)//注意条件
    	    {
    	        k=k+p[i];
    	        i++;
    	    }    
    	    printf("k=%d\n",k);
    	     return 0;
    	}
    
    

(1)该程序的运行结果是什么?
(2)请简述该程序的功能。

(1)
在这里插入图片描述

(2)程序是求p数组前n个连续数值为奇数的和

3.分析以下程序,回答相关问题

	#include<stdio.h>
	char fun(char ch)
	{
	    if(ch>='A'&&ch<='Z')
	        ch=ch-'A'+'a';
	        return ch;
	}
	
	int main()
	{
	    char s[]="ABC+abc=defDEF",*p=s;
	    while (*p)
	    {
	        *p=fun(*p);
	        p++;
	    }
	    printf("%s\n",s);
	}

(1) 该程序的运行结果是什么?
(2) 请简述该程序的功能?

(1)
在这里插入图片描述

(2)将数组中大写转小写

4.分析以下程序,回答相关问题

	#include <stdio.h>
	#define P 3+5 
	#define F(x) (P*x*x) 
	int main()
	{ 
	    printf("%d,\n",P); 
	    printf("%d\n",F(3+5));
	    return 0;
	}

(1) 该程序的运行结果是什么?
(2) 请简述该程序的执行过程?

(1)
在这里插入图片描述

(2)

printf("%d,\n",P); = printf("%d,\n",3+5);

printf("%d\n",F(3+5)); = printf("%d\n",3+5**3+5*3+5);

5.分析以下程序,回答相关问题

	#include<stdio.h>
	void fun(int *s,int n1,int n2) {
	    int i,j,t;
	    i=n1;j=n2;
	    while(i<j) {
	        t=*(s+i); i++;
	        *(s+i)=*(s+j);
	        *(s+j)=t;j--;
	     } 
	}
	int main()
	{
	    int a[10]={0,1,2,3,4,5,6,7,8,9},i,*p=a;
	    fun(p,0,9);
	    fun(p,0,3);
	    fun(p,4,9);
	    for(i=0;i<10;i++)
	    printf("%d",*(a+i));
	return 0;
	}

(1) 该程序的运行结果是什么?
(2) 请简述该程序的执行过程?

(1)运行结果:

在这里插入图片描述

(2) 第一次调用fun函数数组变为 0 9 8 7 6 6 7 8 9 0

? 第二次调用fun函数数组变为 0 7 7 0 6 6 7 8 9 0

? 第三次调用fun函数数组变为 0 7 7 0 6 0 9 9 0 6

三、程序设计题

  1. 请编写程序,计算1-1/2-1/3-…-1/50会的和。

    #include<stdio.h>
    int main()
    {
        double temp,m=1.0;
        int i;
        for ( i = 2; i <=50; i++)
        {
            temp=1.0/i;
            m-=temp;
        }
        printf("%lf",m);
        
    }
    

    在这里插入图片描述

  2. 输入n和m,并给n、m矩阵赋值,输出矩阵中最大元素值及其所在的行号和列号。

    #include<stdio.h>
    #define M 100
    int main()
    {
        int n,m,i,j,H,L;
        int a[M][M],max=0;
        printf("请输入矩阵的行数与列数(<100)\n");
        scanf("%d%d",&n,&m);
        printf("请输入矩阵中的每一个数 按行输入:\n");
        for ( i = 0; i < n; i++)
        {
                for(j=0;j<m;j++)
                {
                    scanf("%d",&a[i][j]);
                    if(a[i][j]>max)
                    {
                        H=i;L=j;max=a[i][j];
                    }
                }
        }
        printf("矩阵中最大的元素值为:%d\n行号为:%d\n列号为:%d\n",max,H+1,L+1);//注意显示行号应从1开始
        
    }
    

    在这里插入图片描述

  3. 输入一个四位整数,将其加密后输出。加密方法:对该整数的每一位上数字,将其加5然后除以10取余数,作为该位上的新数字,最后将该整数的个位数字与千位数字交换,十位数字与百位数字交换,得到新整数。

    #include<stdio.h>
    int main()
    {
        int temp;
        int i1,i2,i3,i4;
        printf("请输入一个四位整数:\n");
        scanf("%d",&temp);
        i1=temp/1000%10;
        i2=temp/100%10;
        i3=temp/10%10;
        i4=temp%10;
    
        i1=(i1+5)%10;//个位
        i2=(i2+5)%10;//十位
        i3=(i3+5)%10;//百位
        i4=(i4+5)%10;//千位
    
        temp=i4*1000+i3*100+i2*10+i1;
        printf("新整数为:%d\n",temp);
    }
    

    在这里插入图片描述

  4. 写一个判断素数的函数,并通过调用该函数输出100-200内的所有素数。

    #include<stdio.h>
    int fun(int n)
    {
        int i;
        for(i=2;i<n;i++)
            if(n%i==0) //关键点
                return 0;
        return 1;
    }
    
    int main()
    {
        int i;
        printf("100~200内的所有素数为:\n");
        for(i=100;i<=200;i++)
        {
            if(fun(i)==1)
                printf("%d ",i);
        }
        return 0;
    }
    

    在这里插入图片描述

  5. 编写函数,求一个整型数组中出现x值的次数并返回。

    #include<stdio.h>
    #define M 100
    int fun(int a[],int len,int x)//查找x出现的此次并返回
    {
        int i,count=0;
        for(i=0;i<len;i++)
        {
            if(a[i]==x) count++;
        }
        return count;
    }
    
    int main()
    {
        int a[M];
        int len,x,count,i;
        printf("请输入数组中有几个数:");
        scanf("%d",&len);
        printf("请输入数组中这%d个数:\n",len);
        for ( i = 0; i < len; i++)
        {
            scanf("%d",&a[i]);
        }
        printf("请再输入需要查找的数:");
        scanf("%d",&x);
        count=fun(a,len,x);
        printf("在数组中%d出现的次数为:%d\n",x,count);
        return 0;
    }
    

    在这里插入图片描述

  6. 输入m (2<=m<=8)和一个整数n,将整数n转换成m进制数并输出。

    //将十进制数转换为其他进制数
    #include<stdio.h>
    void system(int n,int m)
    {
        if(n>0)
        {
            system(n/m,m);
            if(m!=8)
            printf("%d",n%m);
            else //若要转为8进制直接与格式输出
            printf("%o",n%m);
        }
    }
    
    int main()
    {
        int n,m;
        printf("请输入要转换的数值n与转换的进制数m(2<=m<=8):\n");
        scanf("%d%d",&n,&m);
        printf("%d转换为%d进制为:",n,m);
        system(n,m);
    }
    

    在这里插入图片描述

  7. 输入一个字符串(长度不超过1000),保留字符串中最前端"#“号和最后端”#“号,其余“#”号删除。如输入:“####Ab#c12##W2###”,则输出:财”###Abc12W2###"。要求:只允许定义一个数组。

    //删除字符串中间 # 号 保留两边的
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int low=0,high=0;
        int i,n,k=0;
        char a[1000];
        printf("请输入需要处理的字符串:\n");
        scanf("%s",a);
        n=strlen(a);
    
        for(i=0;a[i]=='#';i++) low++;//计算前面有多少个'#'号
    
        for(i=n-1;a[i]=='#';i--) high++;
    
        for(i=low;i<n;i++)
        {
            if(i<n-high)
            {
                if(a[i]!='#')
                    a[i-k]=a[i];
                else//k控制前移位数
                    k++;
            }
            else
                a[i-k]=a[i];
        }
        a[n-k]='\0';
        printf("处理后的字符串为:\n%s\n",a);
    }
    //####Ab#c12##W2###
    

    在这里插入图片描述

若有错误麻烦在评论区留言呀!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章           查看所有文章
加:2021-11-05 13:47:43  更:2021-11-05 13:47:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:07:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码