精华内容
下载资源
问答
  • PAGE 第 PAGE 1 页 共 NUMPAGES 5 页 座位号 C语言程序设计答题纸(A) 2010.6 考试课程 C语言程序设计 考试日期 2010年6月 成 绩 任课教师姓名 上课时间 姓名 学号8位 年级 专业 注意1.请在上课时间栏注明星期几2. 若...
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises24一 程序改错与填空D14D15D18D1021D1023D1025二 程序设计P762P797P800P257P824 20201022-成信大-C语言程序设计-20201学期...

    20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises24

    一 程序改错与填空

    程序改错与填空:给出的程序可能存在语法或算法上的问题或需要补充完整,答题时请务必遵循以下原则:

    • (1)需要修改的地方肯定在/Found/下的第一行上,不能修改其它地方,不能修改或删除/Found/本身;
    • (2)若/Found/下有___________,则应当将___________去掉并填上相应的程序代码;
    • (3)修改时不能增加行或删除行,哪怕是一个空行都不行,否则可能得0分;
    • (4)遵循算法处理较通用(不能别出心裁)、最少修改的原则,例如对程序正确性无影响的修改就不能实施,明显不该加的括号就不能加,尽可能去掉不必要的括号;
    • (5)修改要符合编程规范、保持一行一条语句及{与}单独一行的原则;
    • (6)程序应当在Turbo C V2/V3、MS VC V6或GCC V3中完成编译链接并能正常运行。

    D14

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    /*********Found************/
    void swap(int x, int y);
    
    int main(void)
    {
            int a = 3, b = 4;
    
            /*********Found************/
            swap(a, b);
            printf("a=%d b=%d\n", a, b);
    
    	return 0;
    }
    
    /*********Found************/
    void swap(int x, int y)
    {
            int tmpX;
    
            /*********Found************/
            ___________
            *x = *y;
            /*********Found************/
            *y = x;
    }
    
    

    完成该题后的代码

    #include<stdio.h>
    
    /*********Found************/
    void swap(int *x, int *y);
    
    int main(void)
    {
            int a = 3, b = 4;
    
            /*********Found************/
            swap(&a, &b);
            printf("a=%d b=%d\n", a, b);
    
    	return 0;
    }
    
    /*********Found************/
    void swap(int *x, int *y)
    {
            int tmpX;
    
            /*********Found************/
            tmpX = *x;
            *x = *y;
            /*********Found************/
            *y = tmpX;
    }
    
    

    后记:

    • 这道题考查的知识点:
      • 形参和实参
      • 值传递方式
      • 地址传递方式
      • 函数局部栈内存
      • 地址传递,形参发生改变,实参也会有相应的改变,因数用的是同一段内存空间

    D15

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    void swap(int *x, int *y);
    
    int main(void)
    {
            int a = 3, b = 4;
    
            /*********Found************/
            swap(*a, *b);
            /*********Found************/
            printf("a=%d b=%d\n", &a, &b);
    
    	return 0;
    }
    
    void swap(int *x, int *y)
    {
            int *tmp, tsX;
    
            /*********Found************/
            *tmp = x;
            *x = *y;
            /*********Found************/
            *y = *tmp;
    }
    
    

    完成该题后的代码

    #include<stdio.h>
    
    void swap(int *x, int *y);
    
    int main(void)
    {
            int a = 3, b = 4;
    
            /*********Found************/
            swap(&a, &b);
            /*********Found************/
            printf("a=%d b=%d\n", a, b);
    
    	return 0;
    }
    
    void swap(int *x, int *y)
    {
            int *tmp, tsX;
    
            /*********Found************/
            tsX = *x;
            *x = *y;
            /*********Found************/
            *y = tsX;
    }
    
    

    后记:

    • 同上一题,考查函数的副作用
      • 传入实参地址给形参,那么形参的交换就可以影响到实参
      • swap中有一个多余的指针变量,没有使用,会有警告
      • 交换数据时,需要直接交换指针所指向的变量的值,即指针的解引用
      • 交换最平常的实现方式,就是借助一个“空瓶子”的空间来完成两瓶子水的交换

    D18

    在这里插入图片描述

    题干下载的代码

    #include <stdio.h>
    
    int maxiNum = 0;
    
    void dispMaxNum();
    
    int main(void)
    {
            int i, oneNumber, maxNumber = 0;
    
            printf("Please input 10 int number:");
            {
                    int maxNumber = 0;
                    /*********Found************/
                    ___________
                            for (i = 0; i < 10; i++)
                            {
                                    scanf("%d", &oneNumber);
                                    if (oneNumber > maxNumber)
                                    {
                                            maxNumber = oneNumber;
                                    }
                            }
                    }
                    /*********Found************/
                    ___________
            /*********Found************/
            ___________
            dispMaxNum();
    
    	return 0;
    }
    
    void dispMaxNum()
    {
            /*********Found************/
            printf("maxNumber=%d\n", maxNumber);
    }
    
    

    完成该题后的代码

    #include <stdio.h>
    
    int maxiNum = 0;
    
    void dispMaxNum();
    
    int main(void)
    {
            int i, oneNumber, maxNumber = 0;
    
            printf("Please input 10 int number:");
            {
                    int maxNumber = 0;
                    /*********Found************/
                    {
                            for (i = 0; i < 10; i++)
                            {
                                    scanf("%d", &oneNumber);
                                    if (oneNumber > maxNumber)
                                    {
                                            maxNumber = oneNumber;
                                    }
                            }
                    }
                    /*********Found************/
                    maxiNum = maxNumber;
            /*********Found************/
            }
            dispMaxNum();
    
    	return 0;
    }
    
    void dispMaxNum()
    {
            /*********Found************/
            printf("maxNumber=%d\n", maxiNum);
    }
    
    

    后记:

    • 本题考查的知识点
      • 作用域,一对{ }就会形成一个局部的作用域
      • 在所有作用域之外的变量,即全局变量,全局变量所有模块都可见
    • 不要被题目的变量名弄晕了

    D1021

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    /*****Found*****/
    int f(n);
    
    int main(void)
    {
    	int i;
    
    	for (i=1; i<=5; i++)
    	{
    		printf("%d\n", f(3));
    	}
    
    	return 0;
    }
    
    int f(int n)
    {
    	/*****Found*****/
    	int p = 1;
    
    	p = p * n;
    	return p;
    }
    
    

    完成该题后的代码

    #include<stdio.h>
    
    /*****Found*****/
    int f(int n);
    
    int main(void)
    {
    	int i;
    
    	for (i=1; i<=5; i++)
    	{
    		printf("%d\n", f(3));
    	}
    
    	return 0;
    }
    
    int f(int n)
    {
    	/*****Found*****/
    	static int p = 1;
    
    	p = p * n;
    	return p;
    }
    
    

    后记:

    • 知识点:static变量的记忆性
      • 变量的存储类型:自动变量和静态变量
      • 而自动变量是默认的
        • 不同的语句块,可以定义不同的作用域
        • 在不同的作用域下,变量可以同名,但本质上各有不同的内存空间
        • 局部优先原则
        • 并列局部的前提下,只能通过特殊的方式来传数据
          • 函数握手方式:入参,出参,返回值
          • 全局变量方式
            • 但这么搞,肯定会破坏函数的封装
        • 如果不希望形参在函数体内被改变,那么可以使用const修饰形参,即形参常量化,只读化
      • 静态变量
        • 一个局部变量,程序运行到达该局部时,才会生成相应的栈空间
        • 如果进入该块,退出,又再进入呢?
          • 自动变量会在退出时,释放内存,再进入时,又重新分配内存
          • 重新分到内存后,肯定会被重新初始化,赋初值
          • 静态变量在退出后,不会释放该内存,再次进入时,原来的值仍然存在!!!!
          • 静态变量会与程序【正在运行着的程序】共存亡;而自动变量会与所在的程序块【所在的作用域】共存亡!!!!
            • 函数内定义的静态变量,即局部静态变量
            • 函数外定义的静态变量,即全局静态变量
              • 它可以在任何【整个文件】地方被访问
          • 静态变量会霸占内存,不释放内存,到整个程序结束才归还内存,所以,它里面的值会一直保持,也就是有了记忆性!!!!
            • 上一次操作过的结果,下一次再进入该作用域时,仍然保存在内存中
            • 但静态变量的初始化只能来一次,而且一定是在定义时就要完成初始化

    D1023

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    void outnum(void);
    
    int main(void)
    {
    	int i;
    
    	for (i=0; i<5; i++)
    	{
    		/*********Found************/
    		outnum(i);
    	}
    
    	return 0;
    }
    
    void outnum(void)
    {
    	/*********Found************/
    	int i = 0;
    
    	i++;
    	printf("%d\n", i);
    }
    
    

    完成该题后的代码

    #include<stdio.h>
    
    void outnum(void);
    
    int main(void)
    {
    	int i;
    
    	for (i=0; i<5; i++)
    	{
    		/*********Found************/
    		outnum();
    	}
    
    	return 0;
    }
    
    void outnum(void)
    {
    	/*********Found************/
    	static int i = 0;
    
    	i++;
    	printf("%d\n", i);
    }
    
    

    后记:

    • 经常利用局部静态变量来观察某个局部【模块】被调用的次数
    • 本质上,静态变量和全局变量一样,都是在静态存储区分配内存的
      • 都只分配一次内存
      • 都只做一次初始化
      • 如果不初始化, 都会自动初始化为0
      • 在整个运行期间,会一直霸占内存,直到程序结束

    D1025

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    void Func(void);
    
    int main(void)
    {
    	int i, n;
    
    	printf("\ninput a data:");
    	scanf("%d", &n);
    	for (i=0; i<n; i++)
    	{
    		/*********Found*********/
    		________________________
    	}
    
    	return 0;
    }
    
    void Func(void)
    {
    	/*********Found*********/
    	________________________
    
    	times++;
    	printf("Func() was called %d time(s).\n", times);
    }
    
    

    完成该题后的代码

    #include<stdio.h>
    
    void Func(void);
    
    int main(void)
    {
    	int i, n;
    
    	printf("\ninput a data:");
    	scanf("%d", &n);
    	for (i=0; i<n; i++)
    	{
    		/*********Found*********/
            Func();
        }
    
    	return 0;
    }
    
    void Func(void)
    {
    	/*********Found*********/
        static int times = 0;
    
        times++;
    	printf("Func() was called %d time(s).\n", times);
    }
    
    

    后记:

    • 建议少用静态局部变量
    • 静态变量的作用域和生存期
      • 全局静态变量,从内存上看,在静态存储区
      • 全局静态变量,任何地方可见,作用域即全局
      • 局部静态变量,从内存上看,在静态存储区,如果不是局部静态,就在栈区
        • 一直占着内存,也有好处:避免在调用函数频繁时,压栈出栈也会做频繁的操作,性能会更优一些
        • static限定在本文件所能达的作用域,不用担心与其它文件同名的对象冲突
      • 局部静态变量,只在函数内部可见,作用域当然就是局部

    关于static关键定

    • 自动变量VS静态变量

      • 自动用完即还,简单方便
      • 静态一用就霸占,持久记忆
    • 全局静态VS局部静态

      • 是否需要做作用域限定问题
    • 局部普通变量VS局部静态变量

      • 是否需要变量具有记忆性问题
    • 静态函数VS普通函数

      • 作用域不一样,避免同名冲突问题

    二 程序设计

    P762

    在这里插入图片描述

    题干下载的代码

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int num[10], i, MinVal, MinPos;
    
    	printf("Input 10 integers: ");
    	for (i=0; i<10; i++)
    	{
    		scanf("%d", &num[i]);
    	}
    
    	MinVal = FindMin(num, 10, &MinPos);
    	printf("\nMinVal=%d MinPos=%d\n", MinVal, MinPos);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    完成该题后的代码

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    int FindMin(int num[], int cnt, int *pos);
    
    int main(void)
    {
    	int num[10], i, MinVal, MinPos;
    
    	printf("Input 10 integers: ");
    	for (i=0; i<10; i++)
    	{
    		scanf("%d", &num[i]);
    	}
    
    	MinVal = FindMin(num, 10, &MinPos);
    	printf("\nMinVal=%d MinPos=%d\n", MinVal, MinPos);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    int FindMin(int num[], int cnt, int *pos)
    {
        int minVal;
        int i;
    
        minVal = num[0];
        *pos = 0;
        for ( i = 1; i < cnt; i++)
        {
            if (minVal>num[i])
            {
                minVal = num[i];
                *pos = i;
            }
            
        }
        
        return minVal;
    }
    

    P797

    在这里插入图片描述

    题干下载的代码

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int array[5][9], i, j, max, maxRow, maxCol;
    
    	printf("Input matrix:\n");
    	for (i=0; i<5; i++)
    	{
    		for (j=0; j<9; j++)
    		{
    			scanf("%d", &array[i][j]);
    		}
    	}
    
    	/* userCode(<80字符): 调用函数查找数组中最大元素及其所在位置的行下标、列下标 */
    	______________________________
    	printf("\nThe max is %d, row-sub is %d, col-sub is %d\n", max, maxRow, maxCol);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    完成该题后的代码

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    int getMaxInfo(int a[][9], int m, int n, int *r, int *c);
    
    int main(void)
    {
    	int array[5][9], i, j, max, maxRow, maxCol;
    
    	printf("Input matrix:\n");
    	for (i=0; i<5; i++)
    	{
    		for (j=0; j<9; j++)
    		{
    			scanf("%d", &array[i][j]);
    		}
    	}
    
    	/* userCode(<80字符): 调用函数查找数组中最大元素及其所在位置的行下标、列下标 */
        max = getMaxInfo(array, 5, 9, &maxRow, &maxCol);
        printf("\nThe max is %d, row-sub is %d, col-sub is %d\n", max, maxRow, maxCol);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    int getMaxInfo(int a[][9], int m, int n, int *r, int *c)
    {
        int max = a[0][0];
        int i, j;
    
        *r = 0;
        *c = 0;
        for ( i = 0; i < m; i++)
        {
            for ( j = 0; j < n; j++)
            {
                if (max < a[i][j])
                {
                    max = a[i][j];
                    *r = i;
                    *c = j;
                }
            }
        }
        return max;
    }
    

    P800

    在这里插入图片描述

    题干下载的代码

    #include <stdio.h>
    
    void fun(double *sn, int n);
    
    int main(void)
    {
    	int n;
    	double Sum;
    
    	printf("Please input n: ");
    	scanf("%d", &n);
    
    	______________________________  /* userCode(<30字符): 调用函数计算Sum */
    	printf("\nS=1/1!+1/2!+...+1/%d!=%.16f\n", n, Sum);
    
    	return 0;
    }
    
    
    void fun(double *sn, int n)
    {
    	int i;
    	double Sum=0, jc=1;
    
    	for (i=1; i<=n; i++)
    	{
    		jc *= i;
    		Sum += 1 / jc;
    	}
    
    	______________________________  /* userCode(<30字符): 将计算结果通过指针参数返给主调函数 */
    }
    
    

    完成该题后的代码

    #include <stdio.h>
    
    void fun(double *sn, int n);
    
    int main(void)
    {
    	int n;
    	double Sum;
    
    	printf("Please input n: ");
    	scanf("%d", &n);
    
        fun(&Sum, n); /* userCode(<30字符): 调用函数计算Sum */
        printf("\nS=1/1!+1/2!+...+1/%d!=%.16f\n", n, Sum);
    
    	return 0;
    }
    
    
    void fun(double *sn, int n)
    {
    	int i;
    	double Sum=0, jc=1;
    
    	for (i=1; i<=n; i++)
    	{
    		jc *= i;
    		Sum += 1 / jc;
    	}
    
        *sn = Sum; /* userCode(<30字符): 将计算结果通过指针参数返给主调函数 */
    }
    
    

    P257

    在这里插入图片描述

    题干下载的代码

    #include<stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	float numA, numB;
    
    	printf("please input numA, numB: ");
    	scanf("%f,%f", &numA, &numB);
    
    	______________________________  /* userCode(<40字符): 调用函数实现numA和numB值的交换 */
    	printf("\nnumA=%.3f, numB=%.3f\n", numA, numB);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    完成该题后的代码

    #include<stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    void swap(float *a, float *b);
    
    int main(void)
    {
    	float numA, numB;
    
    	printf("please input numA, numB: ");
    	scanf("%f,%f", &numA, &numB);
    
    	swap(&numA, &numB);  /* userCode(<40字符): 调用函数实现numA和numB值的交换 */
    	printf("\nnumA=%.3f, numB=%.3f\n", numA, numB);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void swap(float *a, float *b)
    {
        float tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    

    P824

    在这里插入图片描述

    题干下载的代码

    #include <stdio.h>
    
    /* 本部分代码功能建议:函数原型声明 */
    /* User Code Begin(Limit: lines<=1, lineLen<=20, 考生可在本行后添加代码、最多1行、行长<=20字符) */
    
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    int main(void)
    {
    	int i, n;
    	double Sum = 0;
    
    	printf("Please input n: ");
    	scanf("%d", &n);
    
    	for (i=1; i<=n; i++)
    	{
    		Sum += 1 / fac();
    	}
    
    	printf("\nS=1/1!+1/2!+...+1/%d!=%.16f\n", n, Sum);
    	return 0;
    }
    
    /* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
    
    

    完成该题后的代码

    #include <stdio.h>
    
    /* 本部分代码功能建议:函数原型声明 */
    /* User Code Begin(Limit: lines<=1, lineLen<=20, 考生可在本行后添加代码、最多1行、行长<=20字符) */
    double fac();
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    int main(void)
    {
    	int i, n;
    	double Sum = 0;
    
    	printf("Please input n: ");
    	scanf("%d", &n);
    
    	for (i=1; i<=n; i++)
    	{
    		Sum += 1 / fac();
    	}
    
    	printf("\nS=1/1!+1/2!+...+1/%d!=%.16f\n", n, Sum);
    	return 0;
    }
    
    /* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
    double fac()
    {
        static int i = 1;           // 增量要有记忆
        static double result = 1;   // 阶乘结果也要有记忆
        result *= i;
        i++;
        return result;
    }
    
    展开全文
  • C语言程序设计答题卡 第 PAGE 1页 共 NUMPAGES 2页 姓名: 姓名: 学号: 系别: 年级专业: ( 密 封 线 内 不 答 题 ) 密封线线 _ _ 东莞理工学院本科试卷期中考卷 20132014 学年第 2 学期 C语言程序设计参考答案 开课...
  • 实用标准文案 C 语言程序设计试题 一单项选择题本题共 25 小题每小题 2 分共 50 分 在每小题列出的四个备选项中只有一个是符合题目要求的 请将其正确答案涂写在答题 卡上错选多选或未选均无分 1. 以下正确的 C 语言...
  • 2008年4月二级C语言程序设计笔试试卷 一 选择题共70分 下列各题ABCD四个选项中只有一个选项是正确的请将正确选项涂写在答题卡相应位置上答在试卷上不得分 1程序流程图中指有箭头的线段表示的是 A图元关系 B数据流 C...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#define N 13main(){int y,m,D,q,t=0,i,day=0,a=0,Day,n,k,O[N]={0,31,29,31,30,31,30,31,31,30,31,30,31},p[N]={0,31,28,31,30,31,30,31,31,30,31,30,31};...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #include

    #define N 13

    main()

    {int y,m,D,q,t=0,i,day=0,a=0,Day,n,k,O[N]={0,31,29,31,30,31,30,31,31,30,31,30,31},p[N]={0,31,28,31,30,31,30,31,31,30,31,30,31};//y是年,m是月,D是日,q计算周几,t,i,k和a计数器,day,Day计算天数,O〔〕,p〔〕分别为闰年的月份天数和非闰年的月份天数,n计算年的间隔。

    printf("请输入年,月,日。并以空格分开,按“enter”键结束输入。\n");

    scanf("%d%d%d",&y,&m,&D);

    for(n=1;n<=y-1;n++)

    {if((n%4==0&&n%100!=0)||(n%400==0))

    t+=1;

    else a+=1;}//计算闰年和非闰年

    printf("到前一年年末的天数=%d天\n",366*t+365*a);

    if ((y%4==0&&n%100!=0)||(y%400==0))

    {for(i=1;i

    day=day+O[i];}

    else {for(k=1;k

    day=day+p[k];}//判断所输年份是否为闰年

    Day=day+D;

    q=(Day+366*t+365*a)%7;

    printf("到前一个月月末的天数=%d天\n",day+366*t+365*a);

    printf("到这一天的天数=%d天\n",Day+366*t+365*a);

    switch(q)

    {case 1: printf("这一天是星期一\n");break;

    case 2: printf("这一天是星期二\n");break;

    case 3: printf("这一天是星期三\n");break;

    case 4: printf("这一天是星期四\n");break;

    case 5: printf("这一天是星期五\n");break;

    case 6: printf("这一天是星期六\n");break;

    case 0: printf("这一天是星期日\n");break;

    }

    }

    展开全文
  • C语言程序设计基本知识点解答(一)第○章 计算机基础知识Q001?计算机的基本原理是什么?(计算机的基本原理)A001? 计算机的基本原理有两个:1.二进制:是指计算机中所有的信息都是以二进制形式的数据来表示、存储、...

    C语言程序设计基本知识点解答(一)第○章 计算机基础知识Q001?计算机的基本原理是什么?(计算机的基本原理)A001? 计算机的基本原理有两个:1.二进制:是指计算机中所有的信息都是以二进制形式的数据来表示、存储、传递和运算的。2.存储程序控制:是指在利用计算机解决问题时,首先需要人找出解决方法,然后将这个方法用某种计算机语言转换成计算机程序(包含了原始数据和处理指令),再送入计算机中存储,最后由人发出命令,计算机开始按照程序中的指令和流程执行这个程序(即对数据进行加工处理)。

    Q002?为什么计算机内部使用二进制?(二进制)A002?使用二进制的主要原因是:1.物理上很容易实现两种相对立的稳定的能量状态(如晶体管的导通与不导通、高电平与低电平、磁性材料中剩磁的顺时针或逆时针方向等)2.二进制数据的运算规则数量少而且简单,操作实现简便

    Q003?计算机硬件的基本结构是什么?(硬件)A003?

    Q004?计算机硬件系统的核心部件有哪些?它们的作用是什么?(硬件)A004?计算机硬件系统的四大核心部件是控制器、运算器、存储器和输入输出设备。其中:控制器是计算机的指挥控制中心。其主要功能是识别翻译指令代码并向计算机各部分发出适当的控制信号,以便执行机器指令。运算器是对数据进行加工、运算的部件。其主要功能是对二进制数据进行算术运算和逻辑运算。存储器是存放数据和程序的部件。其主要功能是按照要求向指定的位置存进或取出信息。输入设备的功能是将数据和程序送入到计算机的存储器中。常见的输入设备有键盘、鼠标等。输出设备的功能是将计算机产生的结果送出计算机外。常见的输出设备有显示器、打印机等。

    Q005?计算机的基本工作过程是怎样的?(硬件)(工作过程)A005?

    Q006?内存储器和外存储器有哪些区别?(存储器)(内存)A006?主要区别如下表所示:内存储器(主存储器)外存储器(辅助存储器)结构属于硬件系统的主机部分,位于主机板的插槽上,与运算器和控制器直接联系进行数据交换属于硬??系统的外设部分,与运算器和控制器必须通过一定的硬件接口相联系进行数据交换物理组成电介质:半导体集成电路计算机断电会使内存数据丢失磁介质:磁盘或磁带磁介质损伤或消磁会使数据丢失作用存放计算机系统运行期间正在执行的各种程序和数据存放系统程序、各种应用程序和数据文件等当前不参与运行的大量信息

    Q007?什么叫存储单元的“位”和“字节”?(内存)(字节)(位)A007?“位”(bit):是最小的电子线路单元,只能保存一位二进制数即一个0或一个1。因此一个“位”单元可以保存的最大的十进制数是1。“字节”(byte):是由若干个“位”组成的逻辑单元。微机中,1字节=8位。字节是最基本的数据存储单元,即数据在内存中的存储是以“字节”为基本单位的。任何数据总是占据整数个“字节”单元 。

    Q008?什么叫存储单元的地址和内容?(内存)A008?存储器从第一个字节开始到最后一个字节为止,每一个字节单元在了逻辑上依次有一个“编号” ,这个编号就叫内存单元的地址。而有这个地址所指向的内存单元中存放的数据就叫该内存单元的内容。

    Q009?计算机是如何在内存单元中找到需要的数据的?(内存)A009?计算机总是首先找到所需数据所在字节单元的地址(编号),再到该地址所指向的内存单元去读取内存单元的内容(数据的值)。

    Q010?什么是“机器语言”?(语言)A010?计算机能直接执行的用于表示机器指令的二进制数字代码称为“机器语言”,也就是机器指令集合。典型的机器语言程序如下:1010 11110011 01110111 0110…… 等等几百个指令很显然,这样的语言写的程序不易记忆和理解,使用、修改和维护都很费时费力,而且不易推广。

    Q011?什么是“汇编语言”?(语言)A011?使用一些符号来代表指令、寄存器、存储单元等机器指令中的要素,然后用这些符号来写程序。使用这些助记符代码的语言,叫做“汇编语言”。典型的汇编语言源程序如下:MOV A, 47翻译之后就是1010 1111ADD A, B0011 0111HALT0111 0110…… 等等几百个指令优点:比机器语言易理解、记忆和使用,速度与机器语言相仿。大量用于实时控制。不能独立于机器。汇编语言源程序必须经过“汇编程序”的汇编后才能执行。

    Q012?什么是“高级语言”?(语言)A012?使用与人类的自然语言和数学语言相近的符号和运算符构成的语言,叫做“高级语言”。典型的C语言源程序如下:void main(){int a=1, b=

    展开全文
  • 说明: 请考生将答案写在武汉大学答题纸上并标明题号否则不得分试卷中C语言程序的开发环境是VC 6 一选择题共20小题每小题2分共40分 1. 以下正确的C语言自定义标识符是_ A) _1a B) 2a_ C) do D) a.12 2. 温度华氏和...
  • c语言答题程序设计

    2019-11-25 15:40:14
    初学C语言两个月,在大学中的第一个项目设计: 测验小程序 团队: 计科第二组:我行,我C! 团队宣言:我能行,我来carry 单位 怀化学院 计算机课学与技术学院 计科1901班 成员 袁年财...

    项目设计:

    单位:
    怀化学院计算机科学与工程学院
    计算机科学与技术专业

    课程 c语言高级程序项目设计
    班级,组号 1901班,第二组
    团队名称 我行,我C!
    组员 袁年财(组长),王乐,杨令
    课题 多功能测验程序

    一、课程设计题目基本要求介绍

    功能模块一:登录
    1)连接服务器,限制账号要以10位学号+姓名的方式登录,否则就重新登录
    2)登录成功后将基本信息发送给服务器
    3)登录成功后将窗口标题修改为账号名

    功能模块二:预备工作
    1)修改窗口名之后,输出测验相关的提示信息、限时信息等
    2)生成以用户名命名的TXT文件
    3)输出测验的相关提示信息(如限时与限 题)
    4)答题前倒计时5秒(若为单机版联系版,可由用户自行设定)

    功能模块三:答题与记录
    1)从题库中抽取随机不重复的题(按一定的难易比例抽取)
    2)输出相应的题号与题目
    3)提示用户输入答案
    4)处理用户的答案去掉开头的误输空格与回车,还有中间的空格
    5)判断用户答案正误,输出比较结果,正确则用绿色表示,错误则用红色表示(便于用户识别)
    6)同时输出所耗时间,所耗总时间,以答题数,正确题数
    7)并将以上答题的过程信息记录至TXT文档之中
    8)超时或者答完所有题之后,输出总成绩与评价,但不关闭程序,由用户自行输入一定指令后退出程序

    功能模块四:上传成绩
    1)若考生成绩达到某个级别,将生成【学生基本_EXAM.TXT】在服务器之下,记录保存。
    ——————————————————————————————————————

    二、流程图这是基本的流程图设计,主要方便于编程时的主次顺序

    ——————————————————————————————————————

    三、项目进展

    已实现功能:

    1、连接服务器
    ①实现思想:利用Socket
    ②核心代码:如下

    #include <winsock2.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #pragma comment(lib , "ws2_32.lib")
    
    #define BUFSIZE 4096 /*缓冲区大小*/
    #define PORT 0
    #define IP 1
    
    int main( )
    {
        WSADATA wsd;
        SOCKET sClient;
        char Buffer[BUFSIZE];
        int ret;
        struct sockaddr_in server;
        unsigned short port;
        struct hostent *host = NULL;
        char getparameter[2][30];
     
        printf("请输入服务器端口号:");
        gets(getparameter[PORT]);
        printf("请输入服务器IP地址:");
        gets(getparameter[IP]);
     
        /*加载Winsock DLL*/
        if (WSAStartup(MAKEWORD(2 , 2) , &wsd) != 0) {
            printf("Winsock    初始化失败!\n");
            return 1;
        }
        
        /*创建Socket*/
        sClient = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
        if (sClient == INVALID_SOCKET) {
            printf("socket() 失败: %d\n" , WSAGetLastError());
            return 1;
        }
        
        /*指定服务器地址*/
        server.sin_family = AF_INET;
        port = atoi(getparameter[PORT]);
        server.sin_port = htons(port);
        server.sin_addr.s_addr = inet_addr(getparameter[IP]);
        if (server.sin_addr.s_addr == INADDR_NONE) {
            host = gethostbyname(getparameter[IP]);    //输入的地址可能是域名等
            if (host == NULL) {
                printf("无法解析服务端地址: %s\n" , getparameter[IP]);
                return 1;
            }
            CopyMemory(&server.sin_addr ,
                        host->h_addr_list[0] ,
                        host->h_length);
        }
        /*与服务器建立连接*/
        if (connect(sClient , (struct sockaddr*)&server ,
                        sizeof(server)) == SOCKET_ERROR) {
            printf("connect() 失败: %d\n" , WSAGetLastError());
            return 1;
        }
        //用完了,关闭socket句柄(文件描述符)
        closesocket(sClient);
        WSACleanup();    //清理
        return 0;
    }
    

    ③效果图:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    2、发送信息至服务器
    ①实现思想:从标准输入读取要发送的数据

    ②核心代码:如下

     //向服务器发送消息
              ret = send(sClient , array , strlen(array) , 0);//其中array为你想要发送到服务器的信息所存放的数组
              if (ret == 0) 
             {
                break;
             }
               else if (ret == SOCKET_ERROR) 
              {
                printf("send() 失败: %d\n" , WSAGetLastError());
                break;
              }`
       
      
    

    ③效果图:在这里插入图片描述

    3、限制账号要以10位学号+姓名的方式登录,否则重新登录
    ①实现思想:判断前十位是否为数字即可
    ②核心代码:如下

    void restrictedformat(char *array)//限制学号格式
    { 
     int g,count3=0;
     for(g=0;g<10;g++)
     {
      if(array[g]>='0' && array[g]<='9')
      {
       count3=count3+1;
      }
      else
      {
       print("格式错误\n");
      }
      if(count3==10)
      {
       print("格式正确n");
      }
     }
    }
    

    ③效果图:
    若题目答对则可以继续答题

    4、将窗口标题修改为账号名
    ①实现思想:调用库函数SetConsoleTitle
    ②核心代码:如下

    void modifytitle(char *account)//改窗口
    {
     SetConsoleTitle(account);
    }`
    

    ③效果图:
    在这里插入图片描述

    5、生成TXT文件,并向其中输入答题过程信息
    ①实现思想:实现对文件的创建、打开和关闭并向其中输入信息
    ②核心代码:如下

    FILE * file
     if( (file = fopen(mymessage,"w")) == NULL )
     {
      printf("打开文件失败\n");
      exit(0);
     }`
     
     fprintf(file,"%s本次的成绩单:\n↓ ↓ ↓\n",mymessage); //此语句用来向文件中输入内容
    	
     	
     	

    ③效果图:
    在这里插入图片描述

    6、每次答完题后都将内容输入至文件中
    ①实现思想:在每答完一道题之后清空缓冲区,以保证答题过程信息及时的记录其中
    ②核心代码:如下

    fflush(file);//随着循环自动刷新文件内存缓冲区,可在答完每一道题之后向文件输入答题过程信息    
         //参考链接:https://blog.csdn.net/zgdzjzz/article/details/98882466

    ③效果图:
    在这里插入图片描述

    7、可限制时间答题
    ①实现思想:利用时间函数
    ②核心代码:如下

    //使用时需要有  #include<time.h>
    clock_t start_t,finish_t;//定义有关时间的变量
    start_t = clock();//过程时间开始计时点
    .
    .//此处为需要计时的程序
    .
    finish_t = clock();//过程时间结束计时点
    total_t = (double)(finish_t - start_t) / CLOCKS_PER_SEC;//算出时间,并将时间转换为秒
    

    ③效果图:

    在这里插入图片描述

    8、从题库中随机抽题
    ①实现思想:产生随机数
    ②核心代码:如下

    /*使用时需要有以下两个头文件
    #include <stdlib.h>
    #include <time.h>*/
       	 int a;    
    	srand((unsigned)time(NULL));    
    	a = rand();    
    	printf("%d\n", a);    
    

    ③效果图:

    以下只是产生随机数的例子并不是上面的程序执行的结果,用于抽题时,则表现为每出一道的题都为随机抽取
    在这里插入图片描述

    9、去除用户开头误输的空格、回车和答案中的空格
    ①实现思想:运用getschar
    ②核心代码:如下

    void myrellyanswer(char *array)//输入答案的处理用户答案的函数
    {
      char d;
      int i=0;
     
      do
      {
       d=getchar();
      }
      while(d=='\n'||d==' ');
      array[i]=d;
      i++;
       while(1)
       {
    	d=getchar();
    	if(d==' ')
    	{
    	continue;
    	}
    	else if(d=='\n')
    	{
    	break;
    	}
    	else 
    	{
    	array[i]=d;
    	i++;
    	}
       }
     array[i]='\0';
     }

    ③效果图:

    在这里插入图片描述

    10、用不同的颜色输出相关信息
    ①实现思想:调用库函数
    ②核心代码:如下

    void color(int x) //自定义函根据参数改变颜色 
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);//只有一个参数,输入颜色代号即可改变为相应的颜色
    }

    ③效果图:如图可见到多种颜色,便于识别的同时不至于显得单调
    在这里插入图片描述

    11、设置相应的评分标准
    ①实现思想:利用分支语句
    ②核心代码:如下

    switch(x)
     {
     case 2 :show_mymessage(14,file," 你的成绩为C\n 还不错> v <!!!\n\n");
      break;
     case 3 :show_mymessage(11,file," 你的成绩为B\n 真优秀^ _ ^!!!\n\n");
      break;
     case 5 :show_mymessage(3,file," 你的成绩为A\n 造化钟神秀^ v ^!!!\n\n");
      break;
     default :show_mymessage(13,file," 不合格> _ <!!!\n\n"); 
     } 

    ③效果图:
    在这里插入图片描述

    12、将改颜色的函数、输出的函数和输入信息至文档的函数封装为一个函数
    ①实现思想:参照链接:此处为示例封装函数的地址
    ②核心代码:如下

    void show_mymessage(int x,FILE *file,const char *cmd, ...)//输出有色内容的同时输入至文件中
    {
     va_list args;
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
     va_start(args,cmd);
     vprintf(cmd,args);
     vfprintf(file,cmd,args);
     va_end(args);
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
    }
    

    ③效果图:
    在这里插入图片描述
    在这里插入图片描述
    —————————————————————————————————————

    四、项目未完成的功能

    正在实现功能

    1.按百分比输出难题和简单的题
    还未实现,仍然需要时间去摸索更为的简便方法

    今后打算实现的功能:

    1.若考生成绩达到某个级别,将发送到服务器的答题过程信息保存在服务器下
    还需要系统的学习关于网络编程的相关知识,并灵活运用

    ——————————————————————————————————————

    五、项目版本更新日志

    版本号 更新描述 负责人 日期 占总工作量的百分比
    V2.0.1 实现了联机版:可以自定义连接服务器,并向服务器发送一定的信息 袁年财 11/24/ 02:10 5%
    V1.5.5 答完题后显示评分细则 王乐 11/23/ 22:30 3.4%
    V1.5.4 在用户答完题后,按任意键不会退出,在输入一定内容后才可退出 王乐,袁年财 11/23/ 23:30 4.2%
    V1.5.3 精确判断学号格式只能是 1(8或9)00130XXX 的形式使程序仅限于计院的18和19级学生使用 袁年财 11/23/ 19:30 4.2%
    V1.5.2 优化了文件输入功能,可在答完每一道题后,将答题过程信息输入至文件夹文件夹,以防在失误关闭程序后答题过程信息丢失 袁年财 11/23/ 18:30 4.2%
    V1.5.1 优化了界面,在完成准备流程后的答题前清空屏幕 杨令 11/22/ 12:20 4.2%
    V1.5.0 优化了题库,利用分割数组的方法将答案与原题绑在一起,便于添加题目,同时又可防止比较答案时题目与答案错位 袁年财 11/22/ 1:10 4.2%
    V1.4.6 在题库中新增了大量难题和易题 杨令 11/21/18:10 4.2%
    V1.4.5 完善了防误输功能,可以防止因用户在答题时在开头误输回车而导致答题错误 袁年财 11/21/18:10 4.2%
    V1.4.4 在用户输入学号+姓名之后,判定学号格式是否为10位数字的格式 袁年财 11/21/ 9:30 4.2%
    V1.4.3 新增了评级判定功能 王乐 11/20/20:50 4.2%
    V1.4.2 增加了防误输功能,防止因用户在答案中误输空格而导致答题错误 袁年财 11/19/18:10 2.6%
    V1.4.1 新增了记录用户答题过程信息,并记录在相应路径的以用户名为名的TXT文件中 王乐 11/18/21:12 4.2%
    V1.3.2 新增了输入用户信息之后,将窗口改为用户名 袁年财 11/18/21:12 4.2%
    V1.3.1 完善了计时功能,每答出一道题后输出所用总时间的同时,输出回答该题所用时间 袁年财 11/17/20:40 4.2%
    V1.3.0 新增更改字体颜色函数,使程序在视觉上不会过于单调 袁年财 11/17/18:30 4.2%
    V1.2.1 新增了开始答题前倒计时5秒功能 袁年财 11/17/16:10 4.2%
    V1.2.0 新增计时功能:每答出一道题输出总时间。新增了每次回答题目后都输出已答对提数 王乐,袁年财 11/17/13:30 4.2%
    V1.1.1 完善随机出题功能:不再重复出相同的题 袁年财 11/16/21:09 4.2%
    V1.1.0 新增随机出题功能(可能重复),显示完成题目后的总成绩 袁年财 11/16/13:36 5%
    V1.0.0 完成简单答题程序总架构 袁年财 11/16/13:00 5%
    总计 共发布21个版本 \ 耗时8 共完成90%

    —————————————————————————————————————

    六、课程设计报告

    链接:此链接为此次项目的课程设计报告PPT

    —————————————————————————————————————

    七、每位成员的过程体会

    1:袁年财:
    自我感悟: 在这次的项目中,我确实是收益颇丰啊!我在不断的调用、定义中加深了对函数的理解,同时也更为体会到了指针的魅力。
    在敲几百行代码的过程中我意识到了结构化程序的重要性,以及宏定义的方便性。在开始任务之前老师让我们写出了任务需求表和流程图以及函数详细设计表,开始时我还觉得没有什么太大的必要性,而在开始任务的过程中,我便越发觉得老师的明智,当你在敲代码时经常会需要问接下来需要做什么,而在写出了任务需求表及其流程图之后,你会觉得任务极其的明确,丝毫不会觉得自己像一个无头苍蝇。总的来说在这次项目中是受益良多,回味无穷!
    自我检讨: 在这次的项目中,我有个极大的缺点就是包揽了太多的任务,导致自己经常熬夜敲代码,丝毫没有团队意识,没有学会和队友们分担作业,这是我在担任组长这个位置的极大失责。

    2:王乐:
    我的体会是:刚开始时是最难的,没有思绪和目标,然后在写需求分析的时候有了一点想法,后面我在敲文件的输入输出时,总是有错误,然后回过头把书看一遍,总之:书读百遍其义自见,然后我想说的是,我们第二组最优秀!

    3:杨令:
    过程体会:编写这个程序时,我只做了很少一部分。但还是感觉挺难搞的。在编写过程中也参与得少,但是我感觉我们的程序还棒的。希望下次能多参与这些偏程。给自己加个油。

    —————————————————————————————————————

    八、最后

    这篇博文,只是供大家大致的参考,其中贴上的代码,是其中重要函数的代码,如果有博友对这个多功能答题程序想要更为详细的了解,或者提出宝贵的意见的话,欢迎大家评论在下方!

    展开全文
  • c语言程序设计》第17章在线测试.docx 《C语言程序设计》第17章在线测试剩余时间:53:36答题须知:1、本卷满分20分。2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。3、在交卷之前,...
  • (C语言程序设计10年A卷试题及答案杭州电子科技大学学生考试卷( A )卷考试课程程序设计基础考试日期年月 日成 绩课程号教师号任课教师姓名考生姓名学号(8位)年级专业注意:所有答案均写在答题纸上,写在试卷上无效;...
  • 文章目录20201学期《C语言程序设计B》平时自主学习D13428.C对于跳转后的数组可见性的分析程序的出错点小题答题情况D13454.C程序内容逻辑出错位置:分析:题目参考解答D13455.C程序内容跟踪过程要点题目参考解答D...
  • 级计算机专业本科生C语言程序设计期末考试汇编中南大学考试试卷—2014学年第 1 学期期末考试试题 时间95分钟计算机与程序设计语言基础 课程40学时 2.5学分 考试形式:闭卷专业年级:计算机科学与技术2013级 总分 100...
  • 南京航空航天大学金城学院 C语言程序设计课程设计 试验汇报 题目 _ 小学生测验 班级 学号 姓名 成绩 指导老师 完成日期 年 月 日 目录 一程序关键功效 二系统总框架图 三各模块功效 四功效模块图 五程序结构步骤图 ...
  • C语言程序设计5.doc

    2020-08-08 13:06:00
    PAGE 1 共8页第PAGE 1页 期末考试试卷 A卷 系别 专业 课程名称C语言程序设计 学号 姓名 分数 注意将答案写在最后一页答题纸上 选择题每题2分共40分 1若xij和k都是int型变量则计算下面表达式后x的值为 x=(i=4,j=6,k=...
  • C语言程序设计(参考试卷+答案) (2)题号一二三四五六总分得分考试形式:闭卷 开卷 笔试 机试 答卷要求:试卷答案需填写至答题卡内一、单项选择题(每小题 2 分,共 30 分)12345678910DCABDBBBDA1112131415BBBCD1、关于...
  • 西南大学网络与继续教育学院课程考试答题卷学号: 姓名: 层次: 高起专 201 5 年 12 月 A 卷总分 评卷人类别: 网教专业: 计算机应用技术课程名称【编号】 :C 语言程序设计【0039】题号 一 二 三 四 五#include ...
  • c语言ppt课件下载注意:1.命题时请适当留答题位置。请用深蓝色墨水书写,字、图清晰,书写不出边框。 2.答题演草时不许使用附加纸,试卷背面可用于演草。试卷不得拆开。题号 得分一填空(12 分,每空 1 分): 1. C ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 228
精华内容 91
关键字:

c语言程序设计答题

c语言 订阅