华北水利水电大学C语言程序设计实验报告
20##--2015学年 第二学期 级 专业
班级: 学号 : 姓名:
一、实验题目:指针
二、实验目的:(略)
三、实验内容
1. 程序验证(略)
2.程序设计
1)下面程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。请在下面空白处完善这一函数的功能,并且调试运行出结果。
源代码: 运行结果:
#include <stdio.h>
#define N 20
void fun(int *a,int n,int *three,int *five)
{
int i;
*three=33;
*five=30;
}
void main()
{
int a[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;
printf("The original data is:\n");
for(i=0;i<n;i++)
printf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&three,&five);
printf("3的倍数之和:%d\n",three);
printf("5的倍数之和:%d\n",five);
}
2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。
源代码: 运行结果:
#include<stdio.h>
#include<string.h>
void main()
{
int i;
int length;
char str[80];
char s;
printf("请输入一个字符串:\n");
scanf("%s",str); length=strlen(str);
printf("字符串逆序输出为:\n");
for(i=length;i>0;i--)
{
s=str[i-1]; printf("%c",s);
}
printf("\n");
}
void fun(char *s)
{
int i,length;
char temp;
length=strlen(s);
for(i=0;i<length/2;i++)
{
temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
}
}
第二篇:C语言实验报告6
实验报告
实验名称: 数组 成绩:
实验日期: 2011 年 11 月 14 日 实验报告日期: 2011 年 11 月 14 日
实验者:桂婷
一、实验目的
1、熟悉掌握一维数组和二维的定义、赋值和输入输出的方法。
2、 掌握字符数组和字符串函数的使用。
3、 掌握与数组有关的算法(特别是排序算法)
二、实验内容
1、用先择法对10个整数排序。10个整数用scanf函数输入。
2、已有一个已排好序的数组,要求输入一个数后,按原来规律将它插入数组中。
3、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。
三、实验步骤
1、
总结:1、注意排序的方法。如果有N个数,则要进行N-1趟比较,在第一趟比较中要进行N-1次两两比较,在第j趟比较中要进行N-j次两两比较。
2、在比较之后,如果要交换位置的则要交换。
2、
总结:1、如果插入的数比num比a数组最后一个数大,则将插入的数入在a数组末尾。
2、如果插入的数不比num比a数组最后一个数大,则将它依次和a[0]~a[n-1]比较,直到出现a[i]>num为止。
3、在编程时仍要注意if,else的配对,for语句的使用。
3、
总结:1、注意二维数组的定义。
2、要注意逻辑运算符各算术运算符在该程序中的使用。
3、在程序中输出行数时用i+1,而不用i,并不会影响对数组的处理。
四、实验出现的问题、实验结果分析
1、正确定义数组,要有数组名,指定数组包含的个数。如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。
2、数组命名也应遵循相应的规则,记得最好是给数组赋初值,否则都是零,这样会影响结果。并且赋初值时要加{}把它们括起来。
3、数组不能一次性的使用所有的元素或多个元素,它一次只能引用一个。
4、在逐个字符初始化时要多留一个空间来放\0。
5、&a[i]表示取数组a的首地址。
五、实验小结和思考
1、思考第1题是否可以用getchar()一个一个的输入。
2、如果将&a[i]改为&a,可以吗?
3、在复合语句中不用{}将它们作为一个整体,会出现什么情况?