实验八 指针程序设计(解答)
实验8_参考答案

实验8指针与引用(2)请将自己报告部分,文字和程序代码,加粗完成下面实验内容和实验要求。
自测题1.编写函数实现字符串函数strcmp()的功能。
要求:使用指针操作完成题目⑴程序代码如下,请补充完整,使程序能运行且运行正确。
#include<iostream>#include<cstring>using namespace std;int My_strcmp(char *str1, char *str2) //声明两个字符指针变量str1和str2{while (*str1==*str2&&*str1!='\0'&&*str2!='\0') // 当对应字符相等且两个字符串未结束时循环,注意*str1和*str2之间是“==”不是“=”,并且两个字符串都要判断是否结束循环{str1++;str2++;// 将str2指针指向下一个字符}return (*str1-*str2); /*返回字符串比较结果,根据主函数中r的分支判断确定应该返回的结果*/不要写成str1-str2,这样变成指针值相减,没有意义,另外写成*str1>*str2?1:-1也是可以的}int main(){char s1[50], s2[50];cout << "please input the first string : ";cin >> s1;cout << "please input the second string : ";cin >> s2;int r;r = My_strcmp(s1, s2); // 函数调用返回值赋值给rif (r>0)cout << s1 << " is larger!" << endl;else if (r<0)cout << s2 << " is larger" << endl;elsecout << s1 << " and " << s2 << " is eqaul" << endl;return 0;}⑵运行结果截图2.编写程序,以(999)99999-999的形式输入电话号码字符串。
北科大C语言程序设计试验报告8指针_练习题代码2次上机课内容-

.
说明:
完成。
本次上机内容分两次上机1.
”,按照本说明完成以下实验内容;班级_姓名__Lab8.doc2.将本文档改名为“学号周周日前通过课程中心提交本文档。
3.在16P148)
(实验指导实验内容和实验要求练习题一1.运
练习题二2.ARR_SIZE
改为STU纠错:int FindMax( int score[][STU], int n, int m, int *pRow, int *pCol ) 运行结果截图:
.. .
..
.
3.练习题三运行结果截图:
思考题及问题:①答案:.. .
②答案:
练习题四4.运行结果截图:
..
.
练习题五5.运行结果截图:
..
.
练习题六6.运行结果截图:.. .
思考题及问题:
②答案:..
.
源程序文本(修改部分红色字体标注)
自测练习自测练习一1.源程序文本:
运行结果截图:
自测练习二2.源程序文本:
运行结果截图:..
.
自测练习三3.源程序文本:
自测练习四4.源程序文本:
自测练习五5.修改后的源程序文本(修改部分红色字体标注):
运行结果截图:..
.
自测练习六(选做)6.
..。
C语言实验学生版(最新版)

实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验内容:1、计算两个数x和y的和。
(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)5、输入并运行以下程序,分析运行结果。
(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)3、判断箱子是正方体还是长方体。
(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。
C语言实验八指针程序设计答案

实验八指针的应用一、实验目的1.掌握指针变量的定义和引用。
2.掌握指针与变量的程序设计方法3.掌握指针与数组的程序设计方法4.掌握指针与字符串的程序设计方法5.掌握指针与函数的程序设计方法二、实验内容1.[目的]访问变量的地址。
[题目内容]已知,char a;int x;float p,q; 而且a=’A’;x=125;p=10.25;q=18.75;编写程序显示变量a,x,p,q的值及其地址。
[输入]无[输出]变量a,x,p,q的值及其地址[提示]使用运算符&,地址输出采用%u格式(因为内存地址是无符号的整数)。
#include <stdio.h>void main(){char a;int x;float p,q;a='A';x=125;p=10.25;q=18.75;printf("%c is stored at addr %u.\n",a,&a);printf("%d is stored at addr %u.\n",x,&x);printf("%f is stored at addr %u.\n",p,&p);printf("%f is stored at addr %u.\n",q,&q);}A is stored at addr 1245052.125 is stored at addr 1245048.10.250000 is stored at addr 1245044.18.750000 is stored at addr 1245040.Press any key to continue2.[目的]通过指针访问变量。
[题目内容]已知,int x,y;int *ptr; 而且x=10;ptr=&x;y=*ptr;,运行下列程序,使用运算符*来访问指针所指的值。
c语言程序设计实验指导答案

太原理工大学现代科技学院C语言程序设计课程实验报告专业班级学号姓名指导教师焦雄5.#include <stdio.h> void main(){int a=10,n=5;a+=a;printf("%d\n",a);a=10,a-=2;printf("%d\n",a);a=10,a*=2+3;printf("%d\n",a);a=10,a/=a+a;printf("%d\n",a);a=10,a%=(n%=2);printf("%d\n",a);a=10,a+=a-=a*=a;printf("%d\n",a); }遇到的问题和解决方法心得体会实验三简单程序、分支程序和循环程序设计实验名称实验目的和要求1.理解C语言程序的基本结构和实现基本结构的语句;2.熟练应用赋值、输入和输出语句;3.理解并掌握关系运算符、逻辑运算符及其表达式的使用;4.熟练掌握if语句、switch语句、while语句、do—while语句和for语句的用法;实验内容1.输入并运行第3章例3-3、例3-6中的程序,通过输出结果理解对应的格式说明。
2.输入并运行第3章例3-8、例3-10中的程序,注意输入数据的格式。
3.已知圆柱半径r=1.5,圆柱高h=3,编程求圆周长,圆面积和圆柱体积。
4.输入一百分制成绩,输出成绩等级A、B、C、D、E。
90分以上为A,80~89为B,70~79分为C,60~69分为D,60分以下为E。
要求程序能处理错误的输入数据。
5.利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值,直到最后一项的绝对值小于10-6为止。
(fabs(t)表示t的绝对值,1e-6=1*10-6)。
6.求100-200间所有素数。
7.输出三角形的九九乘法口诀表。
8.打印水仙花数。
水仙花数是指一个3位数,其各位数字立方和等于该数本身。
C程序设计实验题目(下)[宝典]
![C程序设计实验题目(下)[宝典]](https://img.taocdn.com/s3/m/1df137f4112de2bd960590c69ec3d5bbfd0ada8d.png)
实验七函数程序设计(二)练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。
运行结果:1534练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。
子函数要求:形式为:vo id delete_string(cha r str[],char ch);运行结果示例:练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。
例:子函数要求:形式为:vo id fun(int tt[M][N],int pp[N]);(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。
)*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。
其中,包含3个子函数,各函数要求如下:●子函数1:功能为读入一包含n个元素的数组;形式为:voi d i np ut(int a[],i nt n);●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;●形式为:voi d ins ert(int a[],i nt n,int x);●子函数3:功能为输出一包含n个元素的数组;形式为:voi d o ut p ut(int a[],i nt n);实验八指针程序设计(一)练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。
程序要求:练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。
函数要求:实参为指针变量,形参为数组名,且形式为:vo id insert(int x[ ], int m);其中:形参m为要插入的数据;函数无返回值。
《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲课程名称:C语言程序设计课程类别:专业选修课适用专业:食品科学与工程考核方式:考试总学时、学分: 48学时 2.5 学分其中实验学时: 16学时一、课程教学目的高级语言程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。
本课程旨在培养学生学会分析问题的方法和基本问题的解决能力, 初步了解程序设计的技巧和方法、掌握 C 语言的基本内容及程序设计的基本方法与编程技巧,并能够运用Microsoft Visual C++ 6.0集成开发工具编写一些小程序,为以后继续学习打下基础。
二、课程教学要求本课程主要通过适当的示例, 系统、详细地讲解程序设计的基础知识、 C 程序设计语言的基本语法、编程方法和常用算法。
通过教学的各个环节使学生达到各章中所提的基本要求。
讲授时应以培养学生的程序设计实际软件开发能力和实践应用能力为侧重点。
三、先修课程无四、课程教学重、难点重点:C语言中的逻辑值及表示方式,使用while语句、do-while语句和for语句构成的三种循环结构,常用库函数的调用方法,数组应用的基本算法;难点:指针变量的定义及基本操作;函数之间地址的传递。
五、课程教学方法与教学手段以黑板讲授和多媒体教学手段相结合的课堂教学。
通过典型的示例讲解、必要的现场实际操作演示、适量的课堂练习、课后的上机编程调试以及及时地辅导答疑,在教学过程中增强师生之间的互动性,充分发挥学生在学习过程中的自主性、能动性和创造性。
六、课程教学内容第一章程序设计基本概念(1学时)1. 教学内容程序设计的基本含义,算法的基本特点,算法的重要性,结构化程序设计的三种基本结构,使用流程图表示三种基本结构。
2. 重、难点提示重点是结构化程序设计等基本概念;难点是算法的概念。
第二章 C程序设计的初步知识(2学时)1. 教学内容简单C语言程序的构成和格式、标识符、常量和变量、整型数据、实型数据、算术表达式、赋值表达式、自加、自减运算符、强制类型转换和逗号表达式。
C程序设计教程与实验第8章习题参考答案

第8章习题二、填空题1. 22. 6 7 200C3.p[5]4. 定义p1为指向整型数据的指针变量定义p2为指针数组,其数组元素均为指针定义p3为指向一维数组的指针,其数组元素均为整型数5. 5,36. 207. r+b[k] *x8. SecondLiFirstWang9. 2510. 12 12三程序分析题1.72. 1 5 33 9 73. 2 44. abcDDfefDbD5. 53四、编程题1.输入2个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同#include <stdio.h>#include<string.h>int cmpstr(char *s1, char *s2){char *p, *q;p=s1;q=s2;while(*p!='\0' && *q!='\0'){if(*p==*q){p++;q++;}elsebreak;}return *p-*q;}void main(){char str1[81], str2[81];int c;printf("请输入第1个字符串:");gets(str1);printf("请输入第2个字符串:");gets(str2);c=cmpstr(str1,str2);if(c>0)printf("字符串%s 大于字符串%s\n",str1,str2);else if(c<0)printf("字符串%s 小于字符串%s\n",str1,str2);elseprintf("字符串%s 等于字符串%s\n", str1, str2);}2.定义一个函数float reverse(int p[], int n),该函数有两个参数,第一个参数p为形参数组名,第二个参数n为该数组中的元素个数,要求使用reverse()函数将该数组中的所有元素逆序排列,并返回该数组中所有元素的平均值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《指针程序设计》实验解答
1、改错题
(1)
include<stdio.h>
int digits(char *s)
{
int c=0;
while(*s) //s改为*s
{
if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9'
c++;
s++;
}
return c;
}
void main()
{
char s[80];
printf("请输入一行字符\n");
gets(s);
printf("字符长度是:%d\n",digits(s));
}
(2)
#include<stdio.h>
swap(int *p1,int *p2)
{
int p; //int *p改为int p
p=*p1; //*p=*p1改为p=*p1
*p1=*p2;
*p2= p; //*p2=*p 改为*p2=*p
}
void main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("a=%d\tb=%d\n",a,b);
swap(&a,&b);
printf("a=%d\tb=%d\n",a,b);
}
(3)
#include <stdio.h>
void move(int *pointer) ; //添加
void main(void)
{
int a[3][3],*p,i;
printf("输入数组元素:\n");
for(i=0;i<3;i++)
scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1],
a[i][2])
p=&a[0][0]; // p=a[0][0];
move(p);
printf("转置后的数组为:\n");
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0], a[i][1], a[i][2]);
}
void move(int *pointer)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j); //t=(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t;
}
}
2、程序填空
(1)
#include<stdio.h>
int findmax(int *s,int t )
{
int i,k=0;
for(i=0;i< t ;i++) //1
if( s[i]>s[k]) k=i; // 2
return k ; //3
}
void main()
{
int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;
int j;
for(j=0;j<10;j++)
printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);
k=findmax(a,10);
add=&a[k];
printf("\n%d %d %xh\n",a[k],k+1,add );
}
(2)
#include <stdio.h>
void main()
{
int a[5]={1,3,5,7,9};
int *num[5],i,*p;
int *f(int *x[],int);
for (i=0;i<5;i++)
num[i]= &a[i] ; //1
p=f(num,2);
for ( ; p<=num[4]; p++)
printf(" %d\t", *p ); //2
}
int *f(int *x[],int i)
{
int k=0;
for (; k<i; k++) ;
return x[k] ; //3
}
3、编程题
(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。
#include<stdio.h>
void sort(int *p,int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(*(p+j)>*(p+j+1)) //由小到大排序
{ t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;}
}
void main()
{int a[10],i;
printf("输入%d个正数:",10);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10); //调用排序函数
printf("排序后:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
(2)编写一个程序实现如下功能:利用指针作函数参数,设计一函数对字母进行简单加密,把当前的字母变成后面第3个字母,如最后三个字母x、y、z变成字母a、b、c。
再设计一函数把加密字符还原(程序以文件名sy7_8.c存盘)。
#include<stdio.h>
void jiami(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a' && *p<='z'|| *p>='A'&& *p<='Z')
{*p=*p+3;
if(*p>'Z'&&*p<'a' ||*p>'z') *p=*p-26;}
++p;
}
}
void jiemi(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a'&& *p<='z'||*p>='A'&& *p<='Z')
{ *p=*p-3;
if(*p<'A'||*p<'a'&&*p>'Z') *p=*p+26;}
++p;
}
}
void main()
{
char line[80];
printf("请输入一行字符:\n");
gets(line);
jiami(line);
puts(line);
jiemi(line);
puts(line);
}
(3)编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。
例如123放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数(程序以文件名sy7_9.c存盘)。
#include <stdio.h>
#include <string.h>
void main()
{
char ch[1000],*p=ch;
int a[50],*q=a,num=0,i;
gets(ch);
for( ; *p!='\0'; p++)
if(*p>='0' && *p<='9')
{
*q=(*p)-'0';
p++;
while(*p>='0' && *p<='9')
*q=(*q)*10+(*(p++)-'0');
num+=1;
q+=1;
}
for(i=0,q=a; i<num; i++,q++)
printf("%d ",*q);
printf("\n一共输入了%d个数字。
\n",num); }。