第一篇:西南交大C语言实验十
实验十 指针应用 ●实验目的
掌握指针的概念,会定义和使用指针变量; 学会使用数组的指针和指向数组的指针变量; 学会使用字符串的指针和指向字符串的指针变量; 学会使用指向函数的指针变量;
了解指向指针的指针的概念及其使用方法。●实验步骤
进入编程环境;
按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。●实验内容
1.输入N个英文单词,建立字符串数组,按字典顺序输出这些英文单词。1.要求用指针。自己编写的源程序:
#include“stdafx.h” #include
int main(){
char word[50][50];int num = 0;printf(“请输入单词数量:”);scanf(“%d”, &num);printf(“请输入%d个单词:”, num);for(int i = 0;i < num;i++){ } char temp[50];for(int i = 0;i < num;i++){
} for(int i = 0;i < 5;i++){ } printf(“%s ”, word[i]);for(int j = 0;j < i;j++){
} if(strcmp(word[i], word[j])< 0){
}
strcpy(temp, word[j]);strcpy(word[j], word[i]);strcpy(word[i], temp);scanf(“%s”, word[i]);
} printf(“n”);return 0;
2.输入一个字符串,不另开辟字符串存储空间,实现字符串逆序存储并输出。自己编写的源程序:
#include“stdafx.h” #include
int main(){
} char str[50];printf(“请输入原字符串:”);scanf(“%s”, str);for(int i = strlen(str)11-i] = temp;
3.任意输入5个学生姓名的拼音,然后存入一个2维的字符数组中,按照字符表先后顺序输出这5个同学的姓名。自己编写的源程序:
#include“stdafx.h” #include
int main(){
char name[5][50];printf(“请输入5个姓名的拼音:”);for(int i = 0;i < 5;i++){
} } scanf(“%s”, name[i]);char temp[50];for(int i = 0;i < 5;i++){
} for(int i = 0;i < 5;i++){ } printf(“n”);return 0;printf(“%s ”, name[i]);for(int j = 0;j < i;j++){
} if(strcmp(name[i], name[j])< 0){
}
strcpy(temp, name[j]);strcpy(name[j], name[i]);strcpy(name[i], temp);
4.定义一个实型数组存入一组无序的实数,用一个函数实现对数组所有元素的升序排序,函数的参数和返回值皆为指针,在主函数中输出排序后的数组,考虑如果不使用指针如何解决该问题,哪一种方法更方便。自己编写的源程序:
#include“stdafx.h” #include
double* sort(doublenum[]);
int main(){
double num[5] = { 0 };printf(“请输入5个实数:”);for(int i = 0;i < 5;i++){ } sort(num);printf(“原数组升序排列结果为:”);for(int i = 0;i < 5;i++){ scanf(“%lf”, &num[i]);
} } printf(“%lf ”, num[i]);printf(“n”);return 0;double* sort(doublenum[]){
} for(int i = 0;i < 5;i++){
} returnnum;for(int j = 0;j < i;j++){
} if(num[i] } double temp = num[j];num[j] = num[i];num[i] = temp; 实验10 文件程序设计 一、实验目的 1、掌握文件、文件指针的概念。 2、学会使用文件打开、关闭、读、写等文件操作函数。 二、实验内容 1.改错题 (1)下列程序的功能为:在键盘输入4行字符写到D盘data1.dat文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_1.c保存。#include gets(ch); j=0; while(ch[j]!=’ ’) { fputc(fp1,ch[j]); j++; } fputc(fp1,’n’);} fclose(fp1);}(2)下列程序的功能为:随机产生10个整数,写入一个文本文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_2.c保存。#include x[i]=rand();fp2=fopen(“data2.dat”,”wb”);if(fp2==NULL){ printf(“Open error n”);exit(0);} for(int k=0;k<10;k++) fwrite(x[k],sizeof(int),fp2);fclose(fp2);} (3)下列程序的功能为:从数组读入数据,建立ASCII码文件,并按下列格式输出。10 20 30 40 50 60 70 80 90 100(每个数据占5个字符宽度)纠正程序中存在的错误,以实现其功能。程序以文件名sy10_3.c保存。#include FILE *fp3;int b[]={10,20,30,40,50,60,70,80,90,100},i=0,n;if((fp3=fopen(“e:file10_3.txt”,”w”))==NULL){ printf(“%s不能打开n”,”e:file10_3.txt”); exit(1);} while(i<10){ fprintf(fp3,”%d”,b[i]); if(i%3==0)fprintf(fp3,”n”); i++;} fclose(fp3);if((fp3=fopen(“e:file10_3.txt”,”r”))==NULL){ printf(“%s不能打开n”,”e:file10_3.txt”); exit(1);} fscanf(fp3,”%5d”,&n);while(!feof(fp3)){ printf(“%5d”,n); fscanf(fp3,”%d”,&n);} printf(“n”); fclose(fp3);} 2.程序填空题 (1)下列程序的功能是:从字符指针数组读出字符串,建立ASCII文件file10_4.txt。补充完善程序,以实现其功能。程序以文件名sy10_4.c保存。#include FILE *fp;int i=0;char *str[]={“visual C++”, “visual Basic”, “visual java”, “visual foxpro”};if((fp=fopen(“e:file10_4.txt”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_4.txt”); exit(1);} while(i<4){ fprintf(_______________________); _________________________________;} fclose(fp);} (2)下列程序的功能为:从键盘输入字符,直到输入EOF(Ctrl+Z)为止。对于输入的小写字符,先转换为相应的大写字符,其他字符不变,然后逐个输出到文件text.txt中,行结束符回车('n’)也作为一个字符对待,最后统计文件中的字符个数和行数。补充完善程序,以实现其功能。程序以文件名sy10_5.c保存。#include FILE *fp;char c,str[256];int i=0,no=0,line=0;if((fp=fopen(“text.txt”,_________________))==NULL){ printf(“can’t open this file.n”); exit(0);} printf(“please input a string.n”);while((c=getchar())!=EOF){ if(c>=’a’ && c<=’z’)_______________; fputc(_________________,fp);} fclose(fp);if((fp=fopen(“text.txt”,”r”))==NULL){ printf(“can’t open this file.n”); exit(0);} while(!eof(fp)){ c=__________________; no++; if(_________________)line++;} printf(“line=%d character_no=%dn”,line,no);fclose(fp);} (3)下列程序的功能为:从字符指针数组读出字符串,建立和输出二进制文件file10_6.dat。补充完善程序,以实现其功能。程序以文件名sy10_6.c保存。#include exit(1);} while(i<4){ fwrite(_______________,_______________,1,fp6); i++;} fclose(fp6);if((fp6=fopen(“e:file10_6.dat”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_6.dat”); exit(1);} fread((______________,______________,1,fp6);while(!feof(fp6)){ printf(“%sn”,s); fread((_______________,_____________,1,fp6);} fclose(fp6);} 3.编程题 (1)设文件number.dat中放了一组整数,编程计算并输出文件中正整数之和、负整数之和。程序以文件名sy10_7.c保存。 (2)根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。程序以文件名sy10_8.c保存。 (3)有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。程序以文件名sy10_9.c保存。 C语言程序设计实验十——指针 【实验1】 实验题目: 1、下列代码片段哪里有错误? char var1,ptr1; var1 = „x‟; ptr1 = &var1; 2、设有如下定义: Double var1, *ptr1, *ptr2; Float* ptr3; Int var2, *var4; 那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4个属于哪种数据类型? 3、下列代码片段在哪里有错误? Char c = ‟ A ‟; Char * p; p = c;或*p=‟A‟; 4、下列代码片段的输出结果是什么? charvar1 = „ S „; charvar2 = „ X ‟; char*ptr1, *ptr2; ptr1 = &var1; ptr2 = &var2; *ptr2 = *ptr1; printf(“%ct%cn”, *ptr1, var2); 【实验2】 实验题目:输入3个整数,按由小到大的顺序输出。 【实验3】 实验题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 实验要求:写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 【实验4】输入年和天数,输出对应的年、月、日。 例如:输入2000和61,输出2000-3-1。 要求:都用指针实现。 C语言实验 实验一:C语言程序调试基础 一、实验目的 1.掌握C语言源程序的编写方法和调试方法 2.学会使用VC6开发工具及调试过程的查错纠错能力。 二、任务 调试课本例子:例2.19、例3.5、例5.9 三、实验过程及结果 1.鼠标左键双击VC,打开程序;单击打开的New的页面中,单击 键,选择键,选择,在新,最后单击键,就可以建立一个新的页面。 2.在界面中输入例2.19的内容,单击 键进行调试,底下的对话框出现 一句话时,说明我们编写的程序无错,就可以单击键,来运行程序。运行结果及编写程序内容如图: 4.关闭这两个窗口,再单击 实验二:顺序程序设计 一、实验目的: 1.掌握顺序程序的设计方法; 键,选择 ; 2.掌握输入输出控制语句。 二、实验任务与要求 1.第3章课后习题T2 2.第3章课后习题T7 三、实验过程及结果 实验三:分支程序设计 一、目的 1.掌握分支程序控制语句的语法格式及纷争程序设计方法。2.了解分支程序的条件表达式及运算规则; 3.掌握分支程序控制语句的嵌套使用方法。 二、任务 1.第4章课后习题T6 2.第4章课后习题T8 3.第4章课后习题T12 三、实验过程及结果 实验四:循环程序设计 一、目的 1.掌握循环程序的控制语句的语法规则; 2.掌握循环程序的编写方法; 3.掌握循环程序的嵌套与退出控制方法。 二、任务 1.求100~200间的全部素数。2.第5章课后习题T8 3.第5章课后习题T10 三、实验过程及结果 实验五:数组 一、目的 1.掌握数组的定义及使用方法 2.掌握字符数组的相关操作函数。 二、任务 1.用数组求Fibonacci数列的钱40项,每5个一行。2.将一个3行8列的数组A转置为数组B。3.已知字符串str1=”abcde”,str2=”hijklm”,比阿尼写程序分别实现str1与str2的连接、求长度、比较等操作。 三、实验过程及结果 实验六:函数 一、目的 1.掌握函数的定义与调用方法。2.掌握函数参数的专递方式。 3.掌握函数的嵌套调用和递归调用方法。 二、任务 1.编写一函数,用冒泡排序法实现对数组A的排序。2.编写一函数,用选择排序法实现对数组A的排序。3.编写一函数,实现对给定年year是不是闰年。4.编写一函数,实现对给定整数m是不是素数。 5.利用递归算法,编写一函数,求Fibonacci数列的第n项。 三、实验过程及结果 实验七:变量作用域 一、目的 1.了解变量的存储类型及生命周期、作用域的性质。2.准确使用局部变量和全局变量。 二、任务 1.根据变量作用域知识,分析下列程序的运行效果。2.调试程序,分析个变量的作用范围和生命期。 #include Printf(“i=%dn”,i); int i=40; printf(“i=%dn”,i); fun1(); fun1();} 三、实验过程及结果 实验八:结构体 一、目的 1.掌握结构体的定义方法和使用。 二、任务 定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。 三、实验过程及结果 学号:姓名:班级: 计算机图形学 实验报告 2016年6月日 实验名称:三维交互式图形程序设计 一、实验目的: 1)掌握真实感图形生成的基本原理,如消隐、光照、材质等知识; 2)学习使用OpenGL、GLUT等生成基本图形,如球体、正方体、茶壶等; 3)学习使用OpenGL生成各种光源:点光源、平行光、聚光灯等; 4)学习使用OpenGL设置绘制对象的颜色、材质; 5)进一步熟悉OpenGL图形变换技术:几何变换、视图变换、观察变换等: (1)对模型实现各种几何变换(测试代码保留在程序中),包括对 glLoadMatrix、glMultMatrix、glTranslate、glRotate、glScale 等的使用; (2)视口变换,测试不同大小的视口 glViewport ; (3)投影变换,要对对平行投影与透视投影分别测试,使用不同的观察体参数,观察效果 二、实验任务: 1)使用MFC AppWizard 建立一个SDI 程序,根据参考资料2 和3 中的步骤设置OpenGL 图形绘制环境。增加绘制如下表图形(选择其中任意一个,注意模型坐标系的选择和顶点坐标的计算)、球体或茶壶等(使用glut 函数)。环境中创建点光源、平行光、聚光灯(可利用对话框输入参数创建)、设置所绘制对象的材质,呈现出塑料、金属等材质特性。对光源的位置、方向、类型进行控制,改变材质参数,观察效果(测试代码保留在程序中); 三.实验过程: 1.观察参数的设置 glViewport(0.0, 0.0, width, height)//视口大小设置 gluLookAt(0,0,10,0,0,0,0,1,0);//观察点设置,参数分别为观察点位置,向哪点(何处)观察,上方向的定义 2.投影变换 glOrtho(-15.0*aspect, 15.0*aspect,-15.0,15.0,1,100);//平行投影,参数是投影面大小和投影的物体距离范围 gluPerspective(45,aspect, 1, 100.0);//透视投影,参数为视角,长宽比,投影距离范围 3.几何变换 glLoadMatrixf(a);//设置当前矩阵为a glTranslatef(2,0,0);//当前矩阵*偏移矩阵 glRotatef(45, 0.0, 0.0, 0.0);//旋转 glScalef(m_scalX,m_scalY,m_scalZ);//当前矩阵*比例矩阵 4.光源参数的设置 glLightfv(GL_LIGHT0, Type, vlight);//light为float数组 glLightf(GL_LIGHT0, Type, light);//light为float Type=GL_LIGHT0, GL_AMBIENT //环境光 Type=GL_LIGHT0, GL_DIFFUSE //漫反射 Type=GL_LIGHT0, GL_SPECULAR //镜面光 Type=GL_POSITION //光源位置 Type=GL_CONSTANT_ATTENUATION //常数衰减因 Type=GL_LINEAR_ATTENUATION //线性衰减因子 Type=GL_QUADRATIC_ATTENUATION //二次衰减因子 Type=GL_SPOT_DIRECTION //聚光方向矢量 Type=GL_SPOT_EXPONENT //聚光指数 Type=GL_SPOT_CUTOFF //聚光截止角 光源类型控制 平行光源::设置AMBIENT,DIFFUSE,SPECULAR,GL_POSITION4个参数。其中GL_POSITION第4个参数为0,表示距离无限远 点光源:平行光源基础上添加常数衰减,因线性衰减因子,二次衰减因,其中GL_POSITION第4个参数为1 表示光源位置为确切位置,聚光灯光源 :在点光源基础上添加聚光方向矢量,聚光截止角,聚光指数 本实验使用了3个光源,分别作为平行光源,点光源和聚光灯光源,通过不同菜单选择在输入参数的同时启用不同的光源,以达到光源控制的效果 四.实验结果 原图: 材质选择: 光源基本参数设置 设置聚光灯光源(位置,方向,聚光指数,聚光截止角,衰减因子) 聚光衰减属性(聚光灯) 五.实验体会 通过此次实验,基本掌握了真实图形生成的基本原理,对于3D图新的材质变换,光源变换等有了更深层次的理解。初步学习并掌握了几何变换、视图变换、观察变换等。对于对话框、组建的设置更是理解的透彻。深入掌握了课堂上的些许知识。但对于之后的图形学设计,还是有很多的不足之处。所以,需要继续努力,掌握更多的图形设计学习。第二篇:C语言实验十
第三篇:C语言程序设计实验十指针
第四篇:C语言实验
第五篇:计算机图形学 实验六-西南交大