精华内容
下载资源
问答
  • C语言程序设计下载

    2018-03-10 21:45:01
    c/c++程序设计,只是一个小cpp,希望有用。元素标签,首先计算表达式的值,若为ture,则"(表达式)? x : y "返回x;否则返回y.
  • 很好,很全面,看了之后很容易过C语言啊,赶快下载吧,不要犹豫了,下吧
  • C语言程序设计项目教程项目二:项目一C语言程序设计项目教程.pdf,C语言言程序序设计项目教教程 项目一共分为两个任务 项目一 欢迎进入C语言世界 任务一 熟悉C开发环境 任务二 创建简...|下载前务必先预览,自己验证...
  • C语言程序设计教程04下载C语言程序设计的概述。与结构
  • C语言程序设计课件,有需要的赶紧下咯,严蔚敏的
  • c语言程序设计

    2013-09-21 13:00:07
    C语言程序设计课后答案 聪明的人不要下载
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises25P788P263P804P784P789 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises25 P788 下载的待...

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

    P788

    在这里插入图片描述

    下载的待修改源文件

    #include <stdio.h>
    
    /* 本部分代码功能建议:函数原型声明 */
    /* User Code Begin(Limit: lines<=3, lineLen<=80, 考生可在本行后添加代码、最多3行、行长<=80字符) */
    
    
    
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    int main(void)
    {
    	int Data[20], n, max;
    	double average;
    
    	printf("Please input the number n = ");
    	scanf("%d", &n);
    	printf("Please input the array elements : ");
    	scanfArr(Data, n);
    
    	max = maxArr(Data, n);
    	average = aver(Data, n);
    	printf("\nmax = %d\naverage = %.2f\n", max, average);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    修改后的源文件

    #include <stdio.h>
    
    /* 本部分代码功能建议:函数原型声明 */
    /* User Code Begin(Limit: lines<=3, lineLen<=80, 考生可在本行后添加代码、最多3行、行长<=80字符) */
    void scanfArr(int *Data, int n);
    int maxArr(int *Data, int n);
    double aver(int *Data, int n);
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    int main(void)
    {
    	int Data[20], n, max;
    	double average;
    
    	printf("Please input the number n = ");
    	scanf("%d", &n);
    	printf("Please input the array elements : ");
    	scanfArr(Data, n);
    
    	max = maxArr(Data, n);
    	average = aver(Data, n);
    	printf("\nmax = %d\naverage = %.2f\n", max, average);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void scanfArr(int *Data, int n)
    {
        int i;
        int *p = Data;
        for (i = 0; i < n; i++)
        {
            scanf("%d", p++);
        }
    }
    int maxArr(int *Data, int n)
    {
        int i;
        int *p = Data;
        int max = *p;
        for ( i = 0; i < n; i++, p++)
        {
            if (max < *p)
            {
                max = *p;
            }
        }
        return max;
    }
    double aver(int *Data, int n)
    {
        double sum = 0;
        int *p = Data;
        int i;
        for ( i = 0; i < n; i++)
        {
            sum += *p++;
        }
        return sum / n;
    }
    
    /* 
        要求用指针完成函数中数组参数的传递、以及各个数组元素的访问,即自定义函数头和函数体中不得出现数组下标形式的表示法。
            1. 这里是一维数组,只有相应的指针变量就可以解决问题
            2. 数组索引,才用下标,不用下标,可以使用指针移动来定位元素
            3. 要特别小心指针移动的次数,一次移动的单元是多大
     */
    

    P263

    在这里插入图片描述

    下载的待修改源文件

    #include <stdio.h>
    
    /* userCode(<60字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int arr1[6], arr2[10], arr3[15], gt60A, gt60B, gt60C, sumA, sumB, sumC;
    	
    	______________________________  /* userCode(<60字符): 调用函数读 6个数到arr1中,并计算和及>60的个数 */
    	______________________________  /* userCode(<60字符): 调用函数读10个数到arr2中,并计算和及>60的个数 */
    	______________________________  /* userCode(<60字符): 调用函数读15个数到arr3中,并计算和及>60的个数 */
    
    	printf("\narr1[0]=%3d, arr1[ 5]=%3d, sum(arr1)=%d, cnt(arr1)=%d", arr1[0], arr1[5], sumA, gt60A);
    	printf("\narr2[0]=%3d, arr2[ 9]=%3d, sum(arr2)=%d, cnt(arr2)=%d", arr2[0], arr2[9], sumB, gt60B);
    	printf("\narr3[0]=%3d, arr3[14]=%3d, sum(arr3)=%d, cnt(arr3)=%d\n", arr3[0], arr3[14], sumC, gt60C);
    	
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    修改后的源文件

    #include <stdio.h>
    
    /* userCode(<60字符): 自定义函数之原型声明 */
    void cal(int arr[], int cnt, int *gt60, int *sum);
    
    int main(void)
    {
    	int arr1[6], arr2[10], arr3[15], gt60A, gt60B, gt60C, sumA, sumB, sumC;
    
        cal(arr1, 6, &gt60A, &sumA);  /* userCode(<60字符): 调用函数读 6个数到arr1中,并计算和及>60的个数 */
        cal(arr2, 10, &gt60B, &sumB); /* userCode(<60字符): 调用函数读10个数到arr2中,并计算和及>60的个数 */
        cal(arr3, 15, &gt60C, &sumC); /* userCode(<60字符): 调用函数读15个数到arr3中,并计算和及>60的个数 */
    
        printf("\narr1[0]=%3d, arr1[ 5]=%3d, sum(arr1)=%d, cnt(arr1)=%d", arr1[0], arr1[5], sumA, gt60A);
    	printf("\narr2[0]=%3d, arr2[ 9]=%3d, sum(arr2)=%d, cnt(arr2)=%d", arr2[0], arr2[9], sumB, gt60B);
    	printf("\narr3[0]=%3d, arr3[14]=%3d, sum(arr3)=%d, cnt(arr3)=%d\n", arr3[0], arr3[14], sumC, gt60C);
    	
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void cal(int arr[], int cnt, int *gt60, int *sum)
    {
        int i;
        int mySum = 0;
        int myGt60 = 0;
        // 输入
        printf("请输入%d个数: ", cnt);
        for ( i = 0; i < cnt; i++)
        {
            scanf("%d", &arr[i]);
        }
    
        // 处理
        for ( i = 0; i < cnt; i++)
        {
            mySum += arr[i];
            if (arr[i] > 60)
            {
                myGt60++;
            }
        }
        *sum = mySum;
        *gt60 = myGt60;
    }
    

    P804

    在这里插入图片描述

    下载的待修改源文件

    #include<stdio.h>
    
    #define NOT_FIND -1
    #define TOTAL_STU 8
    
    /* 函数aver的功能为:求学号为stuNo的学生的6门课课程之平均成绩,并通过函数值返回
    		若未找到学生stuNo,则返回NOT_FIND */	
    float aver(int (*pStu)[7], int stuNo);
    
    int main(void)
    {
    	int student[TOTAL_STU][7]; /* the first column save student's number */
    	float averScore;
    	int i, j, stuNumber;
    
    	printf("Input the %d student's number and score: \n", TOTAL_STU);
    	/* 本部分代码功能建议:从键盘读入的8个学生的6门课成绩存放在二维数组student中 */	
    	/* User Code Begin(Limit: lines<=6, lineLen<=50, 考生可在本行后添加代码、最多6行、行长<=50字符) */
    
    	
    	
    	
    	
    	
    	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    	printf("\nInput a student's number to compute: ");
    	scanf("%d", &stuNumber);
    
    	/* 本部分代码功能建议:调用函数aver()求平均值 */	
    	/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
    
    	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    	if (NOT_FIND == averScore)
    	{
    		printf("\nstudent of No.%d not Find!\n", stuNumber);
    	}
    	else
    	{
    		printf("\nThe No.%d student's average is %.2f\n", stuNumber, averScore);
    	}
    
    	return 0;
    }
    
    /* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数aver,行数不限) */
    
    

    修改后的源文件

    #include<stdio.h>
    
    #define NOT_FIND -1
    #define TOTAL_STU 8
    
    /* 函数aver的功能为:求学号为stuNo的学生的6门课课程之平均成绩,并通过函数值返回
    		若未找到学生stuNo,则返回NOT_FIND */	
    float aver(int (*pStu)[7], int stuNo);
    
    int main(void)
    {
    	int student[TOTAL_STU][7]; /* the first column save student's number */
    	float averScore;
    	int i, j, stuNumber;
    
    	printf("Input the %d student's number and score: \n", TOTAL_STU);
    	/* 本部分代码功能建议:从键盘读入的8个学生的6门课成绩存放在二维数组student中 */	
    	/* User Code Begin(Limit: lines<=6, lineLen<=50, 考生可在本行后添加代码、最多6行、行长<=50字符) */
        for ( i = 0; i < TOTAL_STU; i++)
        {
            printf("%d: ", i + 1);
            for ( j = 0; j < 7; j++)
            {
                scanf("%d", &student[i][j]);
            }
            //printf("\n");
        }	
    	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    
    	printf("\nInput a student's number to compute: ");
    	scanf("%d", &stuNumber);
    
    	/* 本部分代码功能建议:调用函数aver()求平均值 */	
    	/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
        averScore = aver(student, stuNumber);
        /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
    	if (NOT_FIND == averScore)
    	{
    		printf("\nstudent of No.%d not Find!\n", stuNumber);
    	}
    	else
    	{
    		printf("\nThe No.%d student's average is %.2f\n", stuNumber, averScore);
    	}
    
    	return 0;
    }
    
    /* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数aver,行数不限) */
    float aver(int (*pStu)[7], int stuNo)
    {
        int flag = 0;
        float avg;
        float sum = 0;
        int i, j;
        for ( i = 0; i < TOTAL_STU; i++)
        {
            if (pStu[i][0] == stuNo)
            {
                for ( j = 1; j < 7; j++)
                {
                    sum += pStu[i][j];
                }
                flag = 1;
            }        
        }
        if (flag)
        {
            avg = sum / 6;
        }
        else
        {
            avg = NOT_FIND;
        }
        
        return avg;
    }
    

    P784

    在这里插入图片描述

    下载的待修改源文件

    #include<stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int n, i;
    	float score[3][4];
    
    	printf("input student's score:\n");
    	for (i=0; i<=2; i++)
    	{
    		printf("    student %d: ", i);
    		scanf("%f %f %f %f", &score[i][0], &score[i][1], &score[i][2], &score[i][3]);
    	}
    
    	printf("\ninput student No: ");
    	scanf("%d", &n);
    	search(score, n);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    修改后的源文件

    #include<stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    void search(float (*score)[4], int n);
    
    int main(void)
    {
    	int n, i;
    	float score[3][4];
    
    	printf("input student's score:\n");
    	for (i=0; i<=2; i++)
    	{
    		printf("    student %d: ", i);
    		scanf("%f %f %f %f", &score[i][0], &score[i][1], &score[i][2], &score[i][3]);
    	}
    
    	printf("\ninput student No: ");
    	scanf("%d", &n);
    	search(score, n);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void search(float (*score)[4], int n)
    {
        int i;
        printf("\nthe score of No %d are:", n);
        for (i=0; i<4; i++)
    	{
            printf("%6.1f", *(*(score + n) + i));
        }
    }
    

    P789

    在这里插入图片描述

    下载的待修改源文件

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	char str[100];
    
    	printf("Please input the string : ");
    	gets(str);
    
    	deleteother(str);
    	printf("\noutput: %s\n", str);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    修改后的源文件

    #include <stdio.h>
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    void deleteother(char str[]);
    
    int main(void)
    {
    	char str[100];
    
    	printf("Please input the string : ");
    	gets(str);
    
    	deleteother(str);
    	printf("\noutput: %s\n", str);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void deleteother(char *str)
    { 
        char *p1,*p2;   // p2用于遍历,p1用于移动后的位置记录
        p1=p2=str;      // 指向开头
        while ( *p2 )   // 未指到末尾
        { 
            if ( (*p2>='A'&&*p2<='Z')||(*p2>='a'&&*p2<='z') )   // 如果是要保留的字符
            { 
                *p1=*p2; // 移动并覆盖无用字符
                p1++; 
            }
            p2++;       // 指针后移
        }
        *p1='\0';       // 最后的字符串结束符
    }
    
    展开全文
  • MATLAB程序设计;4.1 程序设计概述;4.3.2 函数类型;4.3.3 函数的调用和变量传递;4.3.4 输入输出参数的控制;4.4 常量变量;4.4.1 变量的命名;4.4.2 系统预定义的常量;4.4.3 变量类型;4.4.4 系统预定义的变量;4.5 程序...
  • C语言程序设计教程05下载,请下载完整版
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises23P241P243P244P814P823 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises23 P241 源始下载...

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

    P241

    在这里插入图片描述

    源始下载的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int arrA[5], arrB[8];
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    
    	printf("\narrA = ");
    	______________________________  /* userCode(<30字符): 调用函数输出arrA的所有元素 */
    	printf("\narrB = ");
    	______________________________  /* userCode(<30字符): 调用函数输出arrB的所有元素 */
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    

    修改以后的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    void printfArr(int arr[], int cnt);
    
    int main(void)
    {
    	int arrA[5], arrB[8];
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    
    	printf("\narrA = ");
        printfArr(arrA, 5); /* userCode(<30字符): 调用函数输出arrA的所有元素 */
        printf("\narrB = ");
    	printfArr(arrB, 8);  /* userCode(<30字符): 调用函数输出arrB的所有元素 */
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void printfArr(int arr[], int cnt)
    {
        int i;
        for ( i = 0; i < cnt; i++)
        {
            printf("%d ", arr[i]);
        }
    }
    

    P243

    在这里插入图片描述

    源始下载的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int arrA[5], arrB[8];
    	float avgA, avgB;
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    
    	______________________________  /* userCode(<30字符): 调用函数计算arrA所有元素的平均值 */
    	printf("\nAvg(arrA) = %.1f", avgA);
    	______________________________  /* userCode(<30字符): 调用函数计算arrB所有元素的平均值 */
    	printf("\nAvg(arrB) = %.1f\n", avgB);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    
    
    
    

    修改以后的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    float getAvg(int arr[], int cnt);
    
    int main(void)
    {
    	int arrA[5], arrB[8];
    	float avgA, avgB;
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    
        avgA = getAvg(arrA, 5); /* userCode(<30字符): 调用函数计算arrA所有元素的平均值 */
        printf("\nAvg(arrA) = %.1f", avgA);
    	avgB = getAvg(arrB, 8);  /* userCode(<30字符): 调用函数计算arrB所有元素的平均值 */
    	printf("\nAvg(arrB) = %.1f\n", avgB);
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    float getAvg(int arr[], int cnt)
    {
        float avg;
        float sum = 0;
        int i;
        // 求和
        for ( i = 0; i < cnt; i++)
        {
            sum += (float)arr[i];
        }
        // 求平均
        avg = sum / cnt;
        return avg;
    }
    

    P244

    在这里插入图片描述

    源始下载的代码

    #include <stdio.h>
    
    /* userCode(<70字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int arrA[5], arrB[8], searchVal, positionA, positionB;
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    	printf("请输入一个欲查找的数:");
    	scanf("%d", &searchVal);
    
    	______________________________  /* userCode(<50字符): 调用函数查找searchVal在arrA中的下标 */
    	if (-1 == positionA)
    	{
    		printf("\narrA: not Find!");
    	}
    	else
    	{
    		printf("\narrA: position = %d", positionA);
    	}
    
    	______________________________  /* userCode(<50字符): 调用函数查找searchVal在arrB中的下标 */
    	if (-1 == positionB)
    	{
    		printf("\narrB: not Find!\n");
    	}
    	else
    	{
    		printf("\narrB: position = %d\n", positionB);
    	}
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    
    
    
    

    修改以后的代码

    #include <stdio.h>
    
    /* userCode(<70字符): 自定义函数之原型声明 */
    int indexArr(int arr[], int cnt, int search);
    
    int main(void)
    {
    	int arrA[5], arrB[8], searchVal, positionA, positionB;
    
    	printf("请输入5个数:");
    	scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);
    	printf("请输入8个数:");
    	scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);
    	printf("请输入一个欲查找的数:");
    	scanf("%d", &searchVal);
    
        positionA = indexArr(arrA, 5, searchVal); /* userCode(<50字符): 调用函数查找searchVal在arrA中的下标 */
        if (-1 == positionA)
    	{
    		printf("\narrA: not Find!");
    	}
    	else
    	{
    		printf("\narrA: position = %d", positionA);
    	}
    
    	positionB = indexArr(arrB, 8, searchVal);  /* userCode(<50字符): 调用函数查找searchVal在arrB中的下标 */
    	if (-1 == positionB)
    	{
    		printf("\narrB: not Find!\n");
    	}
    	else
    	{
    		printf("\narrB: position = %d\n", positionB);
    	}
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    int indexArr(int arr[], int cnt, int search)
    {
        int result = -1;
        int i;
        for (i = 0; i < cnt; i++)
        {
            if (search == arr[i])   // (不考虑在数组中存在多个searchVal的情况),只要找一个,就可以结束搜索
            {
                result = i;
                break;
            }
        }
        return result;
    }
    

    P814

    在这里插入图片描述

    源始下载的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int num[3][3], i, j, sum;
    
    	printf("Please input the 3x3 Matrix:\n");
    	for (i=0; i<3; i++)
    	{
    		for (j=0; j<3; j++)
    		{
    			scanf("%d", &num[i][j]);
    		}
    	}
    
    	______________________________  /* userCode(<50字符): 调用函数计算矩阵所有元素之和 */
    	printf("\nsum=%d\n", sum);
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    
    
    
    

    修改以后的代码

    #include <stdio.h>
    
    /* userCode(<50字符): 自定义函数之原型声明 */
    int getSumArr(int num[][3], int cnt);
    
    int main(void)
    {
    	int num[3][3], i, j, sum;
    
    	printf("Please input the 3x3 Matrix:\n");
    	for (i=0; i<3; i++)
    	{
    		for (j=0; j<3; j++)
    		{
    			scanf("%d", &num[i][j]);
    		}
    	}
    
        sum = getSumArr(num, 3); /* userCode(<50字符): 调用函数计算矩阵所有元素之和 */
        printf("\nsum=%d\n", sum);
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    int getSumArr(int num[][3], int cnt)
    {
        int sum = 0;
        int i, j;
        // 完成所有元素累加求和
        for ( i = 0; i < cnt; i++)
        {
            for ( j = 0; j < cnt; j++)
            {
                sum += num[i][j];
            }        
        }
        
        return sum;
    }
    

    P823

    在这里插入图片描述

    源始下载的代码

    #include <stdio.h>
    
    #define MAX 20
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    ______________________________
    
    int main(void)
    {
    	int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
    
    	printf("Please input m: ");
    	scanf("%d", &m);
    
    	printf("Please input arrayA:\n");
    	for (i=0; i<m; i++)
    	{
    		for (j=0; j<m; j++)
    		{
    			scanf("%d", &arrayA[i][j]);
    		}
    	}
    
    	______________________________  /* userCode(<60字符): 调用函数实现数组内容变换 */
    	printf("\nafter rotate:\n");
    	for (i=0; i<m; i++)
    	{
    		for (j=0; j<m; j++)
    		{
    			printf("%6d", arrayB[i][j]);
    		}
    		putchar('\n');
    	}
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    
    
    
    
    

    修改以后的代码

    #include <stdio.h>
    
    #define MAX 20
    
    /* userCode(<80字符): 自定义函数之原型声明 */
    void rotate(int arrA[][MAX], int arrB[][MAX], int m);
    
    int main(void)
    {
    	int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
    
    	printf("Please input m: ");
    	scanf("%d", &m);
    
    	printf("Please input arrayA:\n");
    	for (i=0; i<m; i++)
    	{
    		for (j=0; j<m; j++)
    		{
    			scanf("%d", &arrayA[i][j]);
    		}
    	}
    
        rotate(arrayA, arrayB, m); /* userCode(<60字符): 调用函数实现数组内容变换 */
        printf("\nafter rotate:\n");
    	for (i=0; i<m; i++)
    	{
    		for (j=0; j<m; j++)
    		{
    			printf("%6d", arrayB[i][j]);
    		}
    		putchar('\n');
    	}
    
    	return 0;
    }
    
    /* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
    void rotate(int arrA[][MAX], int arrB[][MAX], int m)
    {
        int i, j;
        // 先处理其它列的元素,不论怎么处理,矩阵A没有变化,只是在完成对矩阵B元素赋值
        for ( i = 0; i < m; i++)
        {
            for ( j = 0; j < m; j++)
            {
                arrB[i][j] = arrA[i][j];
            }
        }
        // 首列
        for ( i = 0; i < m; i++)
        {
            arrB[i][0] = arrA[m-1][i];
        }    
        // 最后一列
        for ( i = 0; i < m; i++)
        {
            arrB[i][m-1] = arrA[0][i];
        }    
    }
    
    展开全文
  • C语言程序设计教程01下载,讲述C语言的发展历史与特点。
  • c语言程序设计课件下载ppt,我们经常话太多时间去下载PDF格式的文件,不如下点PPT格式的,美观有使用,占用空间不大.
  • 很全的C语言程序设计课后习题答案 希望大家喜欢
  • TC 安装下载 学习C语言必备软件 include 库文件 C语言程序设计
  • 你还在苦苦寻找经典c语言程序设计100例吗?你还在为经典c语言程序设计100例而烦恼么?在这里,...该文档为经典c语言程序设计100例,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • C语言程序设计教程02下载,讲述数据描述,预备知识,各种进制之间的装换
  • C语言程序设计语言

    2013-10-21 21:49:25
    C语言程序设计语言 电子版 喜希望对大家有用 欢迎大家下载
  • C语言程序设计案例教程 C语言 程序 设计 案例 教程
  • c语言程序设计课件

    2012-09-10 00:34:37
    c语言程序设计课件,适合初学者,下载啊看看
  • C语言程序设计 李丽娟》pdf 附下载链接-附件资源
  • C语言程序设计教学方法-程序设计论文-设计论文 文章均为WORD文档下载后可直接编辑使用亦可打印 [摘要]C语言程序设计是非计算机专业学生学习的第一门高级程序设计语言在教授这门课程的时候会发现教学中存在各种各样...
  • 2007考研北航数据结构与C语言程序设计991 下载 没有答案
  • C语言程序设计视频

    千次阅读 热门讨论 2018-10-14 11:04:11
    C语言程序设计的明码:【苏小红】 09461268081145416196 下载链接的解压码见评论区。

    步骤一:点击链接
    C语言程序设计视频

    步骤二:下载完视频后的解压密码:
    解压密码

    C语言程序设计的明码:【苏小红】
    09461268081145416196

    展开全文
  • C语言程序设计软件

    2018-01-04 21:43:46
    C语言2010版软件,使用全通通用考试,希望大家下载 C语言2010版软件,使用全通通用考试,希望大家下载 C语言2010版软件,使用全通通用考试,希望大家下载
  • 谭浩强C语言程序设计

    2010-10-10 20:25:30
    里面有谭浩强讲解的C语言程序设计13章的东西 还有我自己下载的一些资料
  • 文章目录20201学期《C语言程序设计B》平时自主学习D13428.C对于跳转后的数组可见性的分析程序的出错点小题答题情况D13454.C程序内容逻辑出错位置:分析:题目参考解答D13455.C程序内容跟踪过程要点题目参考解答D...

    20201学期《C语言程序设计B》平时自主学习

    D13428.C

    题干:

    请单击此处下载文件D13428.C,然后对程序进行跟踪调试,要求不增加或删除行,测试时输入的数据为6 1 3 2 9 -222。
    程序的功能是:从键盘上读入一组整数(最多100个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内),然后对这一组数按从小到大的顺序进行排序,最后将排序后的这一组数输出到屏幕上。
    

    下载的文件内容是:

    #include <stdio.h>
    
    #define maxNums 100
    #define endFlag -222
    
    int input(int arr[]);
    void px(int data[], int n);
    void output(int sz[], int n);
    
    int main(void)
    {
    	int num[maxNums], Count;
    	
    	Count = input(num);		//M1
    	px(num, Count);			//M2
    	output(num, Count);		//M3
    
    	return 0;				//M4
    }
    
    //读入数据到arr中,以endFlag表示输入结束且不计endFlag,返回读到数据的个数
    int input(int arr[])
    {
    	int i;
    
    	printf("Please input numbers:");	//I1
    	for (i=0; i<maxNums; i++)			//I2
    	{
    		scanf("%d", &arr[i]);			//I3
    		if (arr[i] = endFlag)			//I4
    		{
    			break;						//I5
    		}
    	}
    
    	return i;							//I6
    }
    
    //对data中的n个数按由小到大进行排序
    void px(int data[], int n)
    {
    	int i, j, mini, tmp;
    
    	for (i=0; i<n-1; i++)				//P1
    	{
    		mini = i;						//P2
    		for (j=i+1; j<n; j++)			//P3
    		{
    			if (data[j] < data[mini])	//P4
    			{
    				mini = j;				//P5
    			}
    		}
    
    		if (mini != i)					//P6
    		{
    			tmp = data[mini];			//P7
    			data[mini] = data[i];		//P8
    			data[i] = tmp;				//P9
    		}
    	}
    }
    
    //输出sz中的n个数
    void output(int sz[], int n)
    {
    	int i;
    
    	for (i=0; i<n; i++)					//O1
    	{
    		if (i % 13  == 0)				//O2
    		{
    			printf("\n");				//O3
    		}
    		printf("%-6d", sz[i]);			//O4
    	}
    	printf("\n");						//O5
    }
    
    

    调试注意事项

    1. 在VC60中,可以打断点调试,也可以直接使用debug工具调试
    2. 调试时,尽可能一 步步调试,查看内存中变量或是数组中的元素的值的变化
    3. 尽量把程序读懂了再调试
    4. 跟踪过程,要细心,点击时,手不能抖,一下子跑好几步,一定是单步跟踪
    5. 碰到程序自定义函数时,一定要跟踪进入
    6. 有进入,就有返回跳出
    7. 有不需要的循环,如不需要关注的循环体,或是空循环等,可以运行到光标处,提高调试效率
    8. 每一行一条语句,可以分为
      1. 执行前
      2. 执行
      3. 执行后
      4. 一定要注意自己的光标所在的位置
    9. 如果出错,或是弹出窗口,要注意光标所在的当前位置
    10. 跟踪过程中,随时注意内存数据的变化,要知道变化的原因【因为赋值语句的执行,或是赋值表达式动作的执行】
    11. 自定义函数进入和跳出,要特别注意作用域发生的变化

    对于跳转后的数组可见性的分析

    主函数main的作用域

    int main(void)
    {
    	int num[maxNums], Count;
    	
    	Count = input(num);		//M1
    	px(num, Count);			//M2
    	output(num, Count);		//M3
    
    	return 0;				//M4
    }
    

    显然,在主函数的作用域里,只能见到num数组和Count变量

    当进入到input函数中时

    功能函数input的作用域

    //读入数据到arr中,以endFlag表示输入结束且不计endFlag,返回读到数据的个数
    int input(int arr[])
    {
    	int i;
    
    	printf("Please input numbers:");	//I1
    	for (i=0; i<maxNums; i++)			//I2
    	{
    		scanf("%d", &arr[i]);			//I3
    		if (arr[i] = endFlag)			//I4
    		{
    			break;						//I5
    		}
    	}
    
    	return i;							//I6
    }
    

    进入到这个作用域之后,可以见到的变量有:

    • 循环变量i
    • 形参数组arr
      • 主函数中的调用语句是:Count = input(num); //M1
      • 进入之后,num是实参,实参的大小是确定的
      • 发生调用跳转后,可以在watch窗口添加对arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]元素的监视,因为这时,已经看不到num[0],num[1],num[2],num[3],num[4],num[5]了一定要小心这一点,但本质上,这两个数组名指针,指向的是同一块内存空间。因为数组名作用函数的参数,是传的地址,即首地址,数组的首地址
      • 还可以看到两个全局变量,即:maxNums和endFlag

    程序的出错点

    if (arr[i] = endFlag)			//I4
    

    分析:

    • 这一步,看似在进行比较判断,实质在做一个赋值动作,即endFlag的值,会写入到arr[i]中,第一次时,i的值就是0,也就是数组的首元素被赋值为0,见最后的图,在执行I4之后,num[0]的值变为-222
    • 平时写程序,要特别注意这样的低级错误,C的语法,要求相等判断要用==,而不是=

    再进入到px函数作用域

    //对data中的n个数按由小到大进行排序
    void px(int data[], int n)
    {
    	int i, j, mini, tmp;
    
    	for (i=0; i<n-1; i++)				//P1
    	{
    		mini = i;						//P2
    		for (j=i+1; j<n; j++)			//P3
    		{
    			if (data[j] < data[mini])	//P4
    			{
    				mini = j;				//P5
    			}
    		}
    
    		if (mini != i)					//P6
    		{
    			tmp = data[mini];			//P7
    			data[mini] = data[i];		//P8
    			data[i] = tmp;				//P9
    		}
    	}
    }
    

    在这个作用域里,内存上可见:

    • i,j,mini,tmp,这些,就是本地变量,也叫局部变量,即这个函数的局部可见可用

    • 两个形参变量:data数组 和 n

    • 而这里,由于data在获取实参数,本质上就是data指针也指向了主函数的num数组,所以,对data的操作,即为对num的操作

    • 这里程序的算法是实现了选择排序

    • 显然,对于测试数据

    测试时输入的数据为6 1 3 2 9 -222

    第一轮,会选出1和6交换

    第二轮,会选出2和6交换

    最终,有序的结果是:

    1 2 3 6 9
    

    这个即为M2执行后的num数组的状态

    如果一步步跟踪程序的执行细节,可以看到选择排序的过程

    • 第1次p9执行后,1和6交换
    • 第2次p9执行后,2和6交换
    • 而回到M2时,数组num已经变得有序了

    小题答题情况

    在这里插入图片描述

    D13454.C

    程序内容

    #include <stdio.h>
    
    int main(void)
    {
    	int iA, iB;
    
    	printf("please input x y: ");	//M1
    	scanf("%d%d", &iA, &iB);		//M2
    
    	if (iA = iB)					//M3
    	{
    		printf("\nyes\n");			//M4
    	}
    	else
    	{
    		printf("\nno\n");			//M5
    	}
    
    	return 0;
    }
    
    
    

    逻辑出错位置:

    if (iA = iB)					//M3
    

    分析:

    • 误将判断搞成了赋值
    • 低级编程引发的血案
    • 再次强调:等于是用双等号,等于是关系运算,等号是赋值运算

    题目参考解答

    在这里插入图片描述

    D13455.C

    程序内容

    #include <stdio.h>
    #include <string.h>
    
    #define N 128
    
    void conj(char *s1, char *s2, char *s3);
    
    int main(void)
    {
    	char s1[N * 2] = "99999", s2[N]="8888888", s3[N * 2]="777777777";
    
    	printf("Please input string1: ");	//M1
    	gets(s1);							//M2
    	printf("Please input string2: ");
    	gets(s2);							//M3
    
    	conj(s1, s2, s3);
    	printf("\ns3 = %s\n", s3);
    
    	return 0;
    }
    
    void conj(char *s1, char *s2, char *s3)
    {
    	int i1, i2, j;
    
    	for (i1=0, i2=0; s1[i1]!='\0' || s2[i2]!='\0'; )
    	{
    		for (j=0; j<1000; j++)
    		{
    			;  //本步骤实际没有意义,别管它!
    		}
    
    		if (s1[i1] != '\0')
    		{
    			s3[i1 + i2] = s1[i1];
    			i1++;					//C1
    		}
    
    		if (s2[i2] != '\0')
    		{
    			s3[i1 + i2] = s2[i2];
    			i2++;					//C2
    		}
    	}
    	s3[i1 + i2] = '\0';				//C3
    }
    
    

    跟踪过程要点

    • 字符串和字符数组的内涵关系
      • 数组用于装字符串
      • 字符串有结束符\0
      • 字符串可以申请很大内存空间,但只使用一部分
      • 完成输入后,之后的内存空间里的数据是不用管的,到\0就结束了字符串
    • 跟踪技巧
      • 碰到循环,先找到光标位置
      • 再要运行到光标处,提高效率

    题目参考解答

    在这里插入图片描述

    D13456.C

    程序内容

    #include <stdio.h>
    #include <string.h>
    
    #define N 128
    
    void rev(char *str);
    void conj(char *s1, char *s2, char *s3);
    char *up(char *str);
    
    
    int main(void)
    {
    	char s3[N*2], s1[N*2], s2[N];
    
    	printf("Please input string1: ");
    	gets(s1);
    	printf("Please input string2: ");
    	gets(s2);
    
    	conj(s1, s2, s3);
    	printf("\ns3 = %s\n", s3);
    
    	return 0;
    }
    
    void conj(char *s1, char *s2, char *s3)
    {
    	int i1, i2, j;
    
    	for (i1=0, i2=0; s1[i1]!='\0' || s2[i2]!='\0'; )
    	{
    		for (j=0; j<1000; j++)
    		{
    			printf("H\n%s\n", up(s2));
    		}
    
    		if (s1[i1] != '\0')
    		{
    			s3[i1 + i2] = s1[i1];
    			i1++;
    		}
    
    		if (s2[i2] != '\0')
    		{
    			s3[i1 + i2] = s2[i2];     //C1
    			i2++;
    		}
    	}
    
    	s3[i1 + i2] = '\0';
    	rev(s3);
    	up(s3);
    }
    
    void rev(char *str)
    {
    	int i, len, mid;
    	FILE * fp;
    
    	len = strlen(str);
    	mid = len / 2 + 10;
    
    	for (i=0; i<mid; i++)
    	{
    		char tmp;
    	
    		tmp = str[i];
    		str[i] = str[len - i -1];
    		str[len - i -1] = tmp;
    	}
    	
    	fp = fopen("temp.txt", "w");
    	if (fp == NULL)
    	{
    		printf("file open error");
    	}
    	else
    	{
    		fprintf(fp, "%s", str);
    		printf("%f", len);
    		fclose(fp);
    	}
    }
    
    char *up(char *str)
    {
    	static int m=1;
    	char *old = str;
    
    	while (*str)
    	{
    		if (*str >= 'a' && *str <= 'z')
    		{
    			*str -= 'a' - 'A' - 1;
    			*str = (*str - 'A' + m) % 26 + 'A';
    		}
    		else if (*str >= 'A' && *str <= 'Z')
    		{
    			*str += 'a' - 'A' + 1;
    			*str = (*str - 'a' + m) % 26 + 'a';
    		}
    		str++;
    	}
    	m++;
    	m  %= 10;
    
    	return old;
    }
    

    本题特点

    程序无编译连接错误,其功能和意义不需要了解,也不需要读懂!!!
    

    跟踪过程要点

    • 自定义的函数,一定要step into
    • 系统的库函数,一定要step over

    题目参考解答

    在这里插入图片描述

    最后的建议

    • 因为是学习,所以还是把每一行代码读懂啊
    • 要学会调试本身,而不是做题
    • 要学会使用断点
    • 要学会高效调试,特别是程序的运行结果与程序员的预期不一致时
    • 把内存里的数据看清楚,想清楚,就是开始进阶到高级编程阶段的时候
    • 理解:图灵机和冯诺依曼的工作原理
      • 存储程序【写内存】
      • 执行程序【读内存】
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,377
精华内容 550
关键字:

c语言程序设计下载

c语言 订阅