C语言程序设计实验电子稿 下载本文

② 调用函数fun计算:m=1+2+3+4+…+9+10,并输出结果。请验证下面的程序是否符合题目要求。

#include”stdio.h” int fun(int n) {

int m, i;

for (i=1; i<=n; i++) {

m+=i; }

return m; }

void main() {

printf(\}

在上面程序的基础上,修改程序. 计算m=1-2+3-4+?+9-10。 (2)程序改错题

下列程序的功能是利用自定义函数计算一无符号的整数各位数字的乘积。

#include

unsigned f(unsigned num) {

unsigned k=0; do {

k*=num/10; num/=10; }while(k); return k; }

void main() {

int x;

printf(“input x=:\\n”); scanf(“%d”, x); printf(“%d”, f(x)); }

2.一般编程题

编程题1 编写一函数,把输入的4个数字字符转换成一个int数据存放,如输入4123这字符转换为4123这个整数,并通过主函数验证结果。

编程题2 编写程序求:1*1*1+2*2*2+3*3*3+4*4*4+5*5*5

提示:主函数用来现实结果,f1( )函数用来求一个数的立方,f2( )函数用来求和。

#include int f1(int n) { …… }

int f2(int m) { …… }

void main() {

…… }

编程题3 定义两个带参数的宏,将两个参数的值相加和相减,并写出程序,输入两个数作为使用宏时的实参。输出相加和相减后的和与差。 编程题4

编程输出2到10000之间的所有完数。所谓完数是指因子之和与它本身相等的数。如6=1+2+3,6是一个完数。

要求:定义函数 factor(m) 判断m是否为完数;由主函数调用它,来对所有2到10000之间的所有数进行判断。 #include #include int factor(int m) {

int i,s=0; …… }

void main() {

int i,m,sum; …… }

3.较难编程题

编程题1 用函数调用实现求两个数的最大公因子和最小公倍数 编程题2 用递归方法求1+2+3+...+n并将其中素数去除后之和。 #include #include

int isprime (int number) { …… }

long fact(int n)

{

…… }

void main() {

int m,sum; …… }

6.4 实验六 数组 一、 实验目的与要求

1. 掌握一维数组的定义、赋值和输入输出的方法。 2. 理解一维数组的存储方法及下标的表示方法。 3. 掌握与数组有关的算法(特别是排序算法)。

4. 掌握二维数组的定义、赋值和输入输出的方法。 5. 理解二维数组的存储方法及下标的表示方法。 6. 实验4学时。

二、实验内容 1.程序验证题与改错题

这里有改动 (1)程序验证题

① 给定一个整型数组a,要求求出其中小于0的元素的个数。请验证下面的程序是否符合题目要求。 #define N 10 void main() {

int a[N]={11,2,4,-1,5,-3,-66,0,10,-5};

int i; /*变量i用于for循环*/

int count=0; /*变量count用于技术,初始化为0*/ for (i=0;i

if(a[i]<0)

count++; /*如果元素a[i]<0,count计数+1*/ printf(\ }

② 给定一个整型二维数组a(3,3),要求求出对角线元素的和。请验证下面的程序是否符合题目要求。

#include #define N 3 void main() {

int a[N][N]={{1,2,3},{4,5,6},{7,8,9}};

int i,j; /*变量i,j用于for循环*/

int sum=0; /*变量sum用于求和,初始化为0*/ for (i=0;i

for(j=0;j

if (i==j)sum+=a[i][j]; /*如果是对角线元素,sum+a[i][j]*/

printf(\ return 0;

}

注1:在程序验证题①的基础上,修改程序,求出数组a中大于a[0]的元素之和。 注2:对上述程序②进行优化,消除内循环,实现同样的效果。在② 的基础上,修改程序,求出数组a中反对角线元素之和。提示:内循环用逆序;i+j==N-1。 (2)程序改错题

2.一般编程题

编程题1:从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置,并输出。

程序提示:定义10个元素的数组,用for循环语句逐一输入数据;定义最大值变量和最小值变量,用for循环语句遍历所有数组元素,逐一比较查找最大值和最小值。 编程题2:给定一个字符数组a,要求将数组的内容倒置。如:

执行前数组的内容为{'1','2','3','4','5','6','7','8'} 执行后数组的内容为{'8','7','6','5','4','3','2','1'}

提示:用i表示数组的第一个元素的下标;用j表示数组最后一个元素的下标。 交换a[i]和a[j],当i<=j时交换完毕。 交换一个元素后,i+1,j-1。 编程题3:

给定一个二维数组a,要求将数组的内容逆置。如: 执行前数组的内容为{{1,2,3},{4,5,6},{7,8,9}}, 执行后数组的内容为{{1,4,7},{2,5,8},{3,6,9}}

提示:用i表示数组的行下标;用j表示数组的列下标。以对角线元素为界,交换a[i][j]和a[j][i]。 编程题4:

一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。 Math C 5

张 80 7王 61 65 李 59 63 赵 85 87 周 76 77