《C语言程序设计》第7次上机作业
第七次作业参考答案_668804622
printf("请输入第二个多项式的项数:"); scanf("%d", &m2); printf("请输入第二个多项式(一项一行升幂排列,格式: 系数 指数):\n"); head2 = create(m2); p0 = add(head1,head2); p = p0; while(p != NULL) { n++; p = p->next; } printf("\n相加后的多项式项数为:%d\n", n); printf("\n相加后的多项式为:\n"); print(p0); }
void print(struct student stu[]) { printf("姓名 \n"); for(int i=0; i<N; i++) printf("%-8s%-12s%-10s%-20s%-4d%-10s%-3c%-10s\n", stu[i].name, stu[i].num, stu[i].place, stu[i].id, stu[i].age, stu[i].address, stu[i].sex, stu[i].phone); } 学号 籍贯 身份证号 年龄 地址 性别 电话
void print(struct polynomial *head) { struct polynomial *p; p = head; while(p != NULL) { printf("%d %d\n", p->a, p->x); p = p->next; } }
struct polynomial *add(struct polynomial *head1, struct polynomial *head2) { struct polynomial *p1, *p2, *p3; p1 = head1; while(head2 != NULL) { p3 = head2; head2 = p3->next; while(((p1->x)<(p3->x)) && (p1->next!=NULL)) { p2 = p1; p1 = p1->next; } if(p1->x > p3->x) { if(p1 == head1) { head1 = p3; p3->next = p1; } else { p2->next = p3; p3->next = p1; } } else if(p1->x == p3->x) { p1->a = p1->a + p3->a; if(p1->a == 0) { if(p1 == head1) head1 = p1->next; else { p2->next = p1->next; p1 = p1->next; } } } else { p1->next = p3; p3->next = NULL; //p1移动至末尾 //若相加后该项的系数为0,则将其删去 //如果相等则相加 //如果p1的次数大 //找到插入点 //将后者往前者中插
C语言程序设计上机题目与参考答案
C语言程序设计题目与参考答案(1——9章)1.(课本第84页第7题)设圆半径r=1.5,圆柱的高h=3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序:#include <stdio.h>int main()#define p 3.1416int main(){double r,h,l,s,S,v,V;scanf("%lf %lf",&r,&h);l=2*p*r;s=p*r*r;S=4*p*r*r;v=4/3*p*r*r*r;V=p*r*r*h;printf("l=%7.2f\ns=%7.2f\nS=%7.2f\nv=%7.2f\nV=%7.2f\n",l,s,S,v,V);return 0;}2.把560分钟化成小时和分钟。
#include<stdio.h>main(){int t,h,m;t=560;h=t/60;m=t%60;printf("560分钟等于%d小时%d分钟\n",h,m);}3.第112页第6题)有一个函数y=x(x<1),y=2x-1(1<=x<10),y=3x-11(x>=1写程序,输入x的值,输出y相应的值。
#include<stdio.h>int main(){float x,y;scanf("%f",&x);if(x<1) y=x;elseif(x<10) y=2*x-1;else y=3*x-11;printf("%f\n",y);}4.(第113页第11题)输出4个整数,要求按由小到大的顺序输出。
#include<stdio.h>int main(){float a,b,c,d,t;scanf("%f,%f,%f,%f",&a,&b,&c,&d);if(a>b) {t=a;a=b;b=t;}if(a>c) {t=a;a=c;c=t;}if(a>d) {t=a;a=d;d=t;}if(b>c) {t=b;b=c;c=t;}if(b>d) {t=b;b=d;d=t;}if(c>d) {t=c;c=d;d=t;}printf("%f,%f,%f,%f",a,b,c,d);}5.(第113页第12题)有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这四个塔的高度为10米,塔以外无建筑物。
C语言程序设计上机试题(样题).
C语言程序设计上机试题(样题)一、程序填空题给定程序BLANK.C中fun函数的功能是:将n个无序整数从小到大排序。
在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include “stdio.h”fun(int n,int *a){ int i,j,p,t;for(j=0;j<n-1;j++){ p= ;for(i=j+1;i<n;i++)if(a[p]>a[i])p= ;if(p!=j){ t=a[j];a[j]=a[p];a[p]=t;}}}putarr(int n,int *z ){ int i;for(i=1;i<=n;i++,z++){ printf("%4d", *z);if(!(i%10)) printf("\n");} printf("\n");}main(){ int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;clrscr();printf("\n\nBefore sorting %d numbers:\n",n); putarr(n,aa);fun(n,aa);printf("\nAfter sorting %d numbers:\n",n); putarr(n,aa);}二、程序修改题给定程序MODI.C中函数 fun 的功能是:计算正整数num的各位上的数字之积。
例如,若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include “stdio.h”long fun(long num)/************found************/{ long k;do{ k*=num%10;/************found************/num\=10;} while(num);return (k);}main( ){ long n ;clrscr();printf("\Please enter a number:"); scanf("%ld",&n);printf("\n%ld\n",fun(n));}三、程序设计题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
c语言第七次上机作业报告
head=pt=p;
find=1;
}
else
pt=pt->next;
while(pt!=NULL)
{
if(pt->age==iage)
{
p->next=pt->next;
find=1;
}
else
p=pt;
pt=pt->next;
}
if(!find)
printf("not found %d.",iage);
sum+=stu[i].score[k];
stu[i].aver=sum/3;
}
}
void Printf( student stu[])/*输出学生信息*/
{ int i,k;
printf("输出执行结果:\n");
for(i=0;i<2;i++)
{
printf("\t第%d个学生:\t学号:%d \t姓名:%s\t分数:",i+1,stu[i].num ,stu[i].name);
课程名称
计算机程序设计(C)
班级
软件112
实验日期
2012.5.6
姓名
王涛
学号
201107235
实验成绩
实验名称
实验七链表
实
验
目
的
及
要
求
1.掌握结构体类型变量的定义和使用。
2.掌握结构体类型数组的概念和应用。
3.掌握链表的概念,初步学会对链表进行操作。
实
验
环
境
VC++6.0
C程序设计第7次上机内容(2017年)
《C语言程序设计》第7次上机内容(函数)(第14周) 说明:同第1次上机内容的说明一样。
一、编写程序1.编一个程序,输入一个字符串存入字符型数组中,然后复制其前面的5个字符组成新字符串存入另一个字符型数组后输出。
要求用指向两个字符型数组首地址的指针变量来处理其中的字符。
提示:(1)定义1个一维字符型数组s1(长度为21)存放1个字符数不超过20的字符串,再定义1个一维字符型数组s2用于存放复制产生的新字符串(考虑一下该数组的长度至少为多少?);再定义2个指针变量p1和p2分别指向两个字符型数组。
(2)用指针变量输入字符串。
(3)处理时:设计次数为5的循环,循环体中用指针变量p1从字符串中获得一个字符赋予指针变量p2指向的字符型数组元素中。
参考程序如下:for (p1=s1,p2=s2;p1<s1+5;p1++,p2++)*p2=*p1;(4)退出循环后,为p2指向的数组元素赋予字符串结束标记符,再将p2指向s2数组的首元素。
参考程序如下:*p2='\0';p2=s2;(5)最后输出p2指向的新字符串。
程序运行结果如下:2.编一个函数,计算并返回n的阶乘,n作为函数的参数。
在主函数中调用该函数依次计算2!、3!、……10!。
算法分析:(1)求阶乘函数的函数头可定义为:long fac(int n),其中n是形参。
函数体内定义一个存放阶乘结果的变量m(其类型为长整型、初值为1)。
用一个For循环结构(循环初值为1,终值为n,步长为1)计算n的阶乘,最后返回阶乘结果。
(2)主函数中定义一个变量mm用于接受阶乘函数的返回值(其类型请学生考虑如何定义)。
(3)主函数中用一个For循环结构(循环初值为2,终值为10,步长为1)计算2~10的阶乘。
循环体内是通过调用阶乘函数(实参为2~10中的某一个值)并把返回结果赋值给mm 变量,然后把每一次求得的阶乘结果按样张输出。
程序执行结果:3.编写一个函数,该函数功能是计算x n,其中x为双精度数,n为非负整数。
C语言程序设计上机指导书及答案
姓名:______________________学号:______________________专业:______________________日期:______________________指导原则:促进学生针对实际问题,用所学C语言知识编写符合规范的源程序代码,在某一集成开发环境下尽一切调试技能调试程序,并对运行结果进行分析处理,得出正确结论,解决好实际问题。
更快更好地掌握所学知识,技能和软件的一向开发方法目的:1,通过上机实验,加深对教材内容的理解,特别是一些语法规定,熟练掌握各种语法规则。
2,通过上机实验,熟悉某个C语言集成开发环境。
掌握集成开发环境下程序的编辑、编译与连接、运行的完整过程3,通过上机实验,要学会调试程序。
能根据系统给出的“出错信息”,判断错误所在,并修改错误,使程序正确运行。
要求:1,复习与本次实验相关的教学内容2,了解集成开发环境的操作步骤3,准备好实验内容。
对于编程题,一定要自己动手,书写工整,并人工检查无误后才能上机实验,以提高上机效率。
4,要准备好调试和运行程序时所需的数据。
5,对运行中可能出现的问题事先作出估计,并对程序中有疑问的地方作上标记,以便在运行时给予注意。
并在程序调试时,把系统给出的出错原因,解决方法等记载在源程序之后;程序运行结束后,把运行结果也记录下来。
6,每个实验应独立完成,对实际问题所编写的源程序需写出完整实验的报告。
第一次上机作业熟悉C语言集成开发环境实验目的:1,熟悉C语言集成开发环境2,掌握集成开发环境下文件的编写与调用,源程序的编译与调试,程序运行结果的观察与分析。
3,掌握C语言程序的基本结构实验要求:1,程序编写完后,要对输入的每一个符号和词进行检查核对,不能有错。
2,编写源程序时,不要在中文输入法下进行,也不要有首字符大写,否则调试时,会有错误。
实验内容:1,在D盘新建文件夹:D : \C语言程序XXX(所在班级如0709401) XXX(自己学号或姓名如01),作为以后所做程序的存放位置。
C语言程序设计教程第七章课后习题参考答案.doc
}
if(x>0)//不是对称矩阵
return 0;
return 1;
}
P198 6矩阵求和
#in clude<stdio.h>
#define M 3
#define N 3
void input(int a[][N],int m,int n);
void sum(int a[][N],int b[][N],int m, int n);
{
printf( ”%4d”,a[i]);
}
bubble_sort(a,N);
printf(”\n”);
} void bubble_sort(int a[],int n)
int i,j,tmp;
for(i=0;i<n-l;i++)
{
for(j=0;j<n-i-l;j++)
{
if(a[j]>a[j+l])
int main()
{
int a[N],i;
double x=0,y=0/z=0J=0,m=0,n=0;
for(i=0;i<N;i++)
{ a[i]=rand()%6+l;
if(a[i]==l)
x++;
if(a[i]==2)
y++;
if(a[i]==3)
z++;
if(a[i]==4)
I++;
if(a[i]==5)
}
}
198 4数组逆序存放(2)
#include<stdio.h>
void reverse(int a[],int n);
C语言上机试题1-20套
C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){float…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}解答:#include <conio.h> #include <stdio.h> double fun( int n ) { double s=0; int i; for(i=1;i<n+1;i++) s+=1.0/(i*(i+1)); return s; } main() /*主函数 */ { system("cls"); printf("%f\n",fun(10)); }说明:主函数中的clrscr()函数为TC 下使用的清屏函数,在VC 中不能使用,在本题中可以直接删除或改为system("cls")2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?解答:#include <stdio.h>int main(void){int max,num=0;int i,j;for(i=10000;i<20001;i++){for(j=2;j<i;j++)if( i%j==0 )break;if( j==i && i%10==7){num++;max=i;}}printf("num=%d,max=%d\n",num,max);return 0;}3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
C语言作业及上机习题(仅供参考)
第一次课熟悉win-TC编译环境、熟悉C语言程序结构1.使用C 语言编译环境,输入下面的源程序。
将你的程序命名为hello.c,然后编译运行它。
/* program writes the words "Hello, world" to the screen *File : Hello.c* By : NJCIT* Date : 07-03-09*/#include <stdio.h>main(){printf("Hello, world\n");return(0);}2.main() /*求两数之和*/{int a,b,sum; /* 这是变量定义*/a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}问题:1.一个C语言源程序从哪里开始执行?2. C程序的函数由几部分构成?3. ANSI C 中的注释内容是用什么符号界定?第二次课熟悉printf()函数、常见转义字符及各种数据类型的输出格式1.2. main(){int a=5,b=7,c=-1;float x=67.8564,y=-789.124;char c=‘A’;long n=1234567;unsigned u=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f%-10f\n”,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%10.2e\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);}3. 假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?4.加载,编译并运行下面的程序。
【免费下载】c语言程序设计课后习题答案 第7章
/*习题七 2*/ #include<stdio.h> main() {
int x,n,a[10],i,j,max; printf("输入 n:\n"); scanf("%d",&n); printf("输入%d 个整数:\n",n); for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf(" %d ",a[i]); printf("\n"); }
/*练习 7-11*/ #include<stdio.h> main() {
char str[80]; int i,j,count=0; printf("输入一个以回车符结束的字符串:\n"); i=0; while((str[i]=getchar())!='\n')
putchar(str[j]); printf("\n");
}
/*习题七 1*/ #include<stdio.h> main() {
int x,y,n,a[10],i,min,max; printf("输入 n:\n"); scanf("%d",&n); printf("输入%d 个整数:\n",n); for(i=0;i<n;i++)
i++; str[i]='\0'; printf("再输入一个(); for(j=0;j<=i-1;j++)
if(str[80]==str[j]) count++;
c语言程序设计上机答案
c语言程序设计上机答案C语言程序设计是一门实践性很强的课程,上机练习是掌握C语言编程技能的重要环节。
以下是一些常见的C语言上机练习题目及其参考答案,供学习者参考。
1. 打印“Hello, World!”```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 计算两个数的和```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("%d + %d = %d\n", a, b, sum);return 0;}```3. 判断一个数是否为素数```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); ++i) { if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。
\n", num);} else {printf("%d 不是素数。
\n", num); }return 0;}```4. 计算圆的面积```c#include <stdio.h>#include <math.h>double calculateArea(double radius) {return M_PI * radius * radius;}int main() {double radius, area;printf("请输入圆的半径:");scanf("%lf", &radius);area = calculateArea(radius);printf("半径为 %f 的圆的面积是:%f\n", radius, area); return 0;}```5. 字符串反转```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int length = strlen(str);for (int i = 0; i < length / 2; ++i) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串是:%s\n", str);return 0;}```6. 计算阶乘```c#include <stdio.h>unsigned long long factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int num;printf("请输入一个非负整数:");scanf("%d", &num);printf("%d 的阶乘是:%llu\n", num, factorial(num)); return 0;}```7. 排序算法(冒泡排序)```c#include <stdio.h>void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; ++i) {for (int j = 0; j < n - i - 1; ++j) { if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);printf("排序后的数组是:\n");for (int i = 0; i < n; ++i) {printf("%d ", arr[i]);}printf("\n");return 0;}```8. 寻找最大值```c#include <stdio.h>int findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; ++i) {if (arr[i] > max) { max = arr[i]; }}return max;。
第七次上机作业答案,高级语言,c程序
第七次上机作业一、写出以下程序执行了分析过程。
1、#include "stdio.h"main(){int a=50,b=20,c=10;int x=5,y=0;if(a<b)if(b!=10)if(!x)x=1;elseif(y) x=10;x=-9;printf("%d",x);}分析:本题主要测试对if语句和if语句嵌套的理解,C语言规定:else总是与其前面的没有配对的最近的if语句配对。
程序中的else是与if(!x)配对的,不是----------------------------精品word文档值得下载值得拥有--------------------------------------------------------------------------精品word 文档 值得下载 值得拥有----------------------------------------------与if (b !=10),更不是与if ((a<b)配对。
我们可以通过对程序画框架来理解。
框架如下:#include "stdio.h"main(){int a=50,b=20,c=10;int x=5,y=0;if(a<b)if(a<b) if(b!=10) if(!x) x=1; elseif(y) x=10;x=-9;第一条i f 语第二条if 语句第三条if 语句printf("%d",x);}从上面可以看出语句x=-9;不属于任一个if语句。
故结果为-9.2、#include "stdio.h"main(){float c=3.0,d=4.0;if(c>d) c=5.0;elseif(c==d) c=6.0;else c=7.0;printf("%.1f",c);}分析:本题的if语句嵌套再else语句中,请注意C语言中if语句的灵活的书写格式。
二级c语言第七套上机练习
1 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的3个元素,按num成员进行升序排序。
#include <stdio.h>typedef struct{ int num;char name[10];}PERSON;/**********found**********/void fun(PERSON ___std[]___){/**********found**********/___PERSON_ temp;if(std[0].num>std[1].num){ temp=std[0]; std[0]=std[1]; std[1]=temp; }if(std[0].num>std[2].num){ temp=std[0]; std[0]=std[2]; std[2]=temp; }if(std[1].num>std[2].num){ temp=std[1]; std[1]=std[2]; std[2]=temp; }}main(){ PERSON std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" };int i;/**********found**********/fun(___std___);printf("\nThe result is :\n");for(i=0; i<3; i++)printf("%d,%s\n",std[i].num,std[i].name);}2 给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式,例如:变量a中的值为3,b中的值为8,程序运行后,a中的值为8,b 中的值为3。
#include <conio.h>#include <stdio.h>#include <windows.h>int fun(int *x,int y){int t;/************found************/t=*x;*x=y; /*原来是t=x; x=y*//************found************/return(t); /*原来是return (y)*/}main(){int a=3,b=8;system("cls");printf("%d %d\n",a,b);b=fun(&a,b);printf("%d %d\n",a,b);}3 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参放在传回,平均分通过函数值传回#include <stdio.h>#define N 12typedef struct{ char num[10];double s;} STREC;double fun(STREC *a,STREC *b,int *n){ int i, j ; double aver=0;*n=0;for(i=0 ; i<N; i++)aver=aver+a[i].s; /*求和*/aver=aver/N; /*计算平均分*/for(i=0;i<N; i++)if(a[i].s>=aver){ b[*n].s=a[i].s; /*将高于等于平均分的学生放在另一个数组b中*/for(j=0 ; j<10; j++)b[*n].num[j]=a[i].num[j];*n=*n+1;/*统计高于等于平均分的学生人数*/}return (aver) /*返回平均分*/}main(){ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};STREC h[N];FILE *out;int i,n;double ave;ave=fun(s,h,&n);printf("The %d student data which is higher than %7.3f:\n",n,ave);for(i=0;i<n;i++)printf("%s %4.1f\n",h[i].num,h[i].s);printf("\n");out=fopen("out12.dat","w");fprintf(out,"%d\n%7.3f\n",n,ave);for (i=0;i<n;i++)fprintf(out,"%s %4.1f\n",h[i].num,h[i].s);fclose(out);}。
c语言学习上机实验题7
实验七指针程序设计(一)一.实验目的1.掌握指针的基本概念与操作方法;2.掌握指针、指针数组访问方式的程序设计。
二.实验环境1.硬件:PII以上计算机;2.软件:Windows、V isual C++ 6.0;3.其它:一张软盘或者U盘等可移动的存储设备。
三.实验内容练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。
程序要求:运行结果示例:练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
运行结果示例:练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。
函数要求:实参为指针变量,形参为数组名,且形式为:vo id insert(int x[ ], int m);其中:形参m为要插入的数据;函数无返回值。
运行结果示例:练习4.用指针变量的处理方法编写一个函数,功能为把读入的一维数组(10个数据)中的所有奇数放在另一个数组中,并输出新数组的内容。
函数要求:实参为指针变量;形参为指针变量,且形式为:int select(int *p, int *q);其中:指针p用来接收原数组(的地址),指针q用来接收新数组(的地址);函数返回新数组元素的个数。
提示:两个数组全部在主函数中定义。
运行结果示例:练习5.用指针变量的处理方法编写一个程序,功能为将一维数组s(数组元素的个数和数值均由用户即时输入的值决定)中的数据进行逆置,并输出结果。
程序要求:使用两个指针,指针p从数组首部向后移动,指针q从数组尾部与之同步向前移动。
运行结果示例:答案1.#include<iostream.h> void main(){int a[10],*p;for(p=a;p<a+10;p++)cin>>*p;for(;p>a;p--)cout<<*(p-1)<<" "; }2.#include<iostream.h>#include<stdlib.h>#include<time.h>void main(){int s[10],*p,i,t;srand(time(NULL));p=s;cout<<"原数组:";for(i=0;i<10;i++){*(p+i)=rand()%100;cout<<*(p+i)<<" "; }cout<<endl<<"调整后:"; for(i=0;i<10;i=i+2){t=*(p+i);*(p+i)=*(p+i+1);*(p+i+1)=t;}for(p=s;p<s+10;p++) cout<<*p<<" ";cout<<endl;}3.#include<iostream.h>void insert(int x[],int m){int i,t;for(i=9;i>=0;i--)if(x[i]>m){t=x[i];x[i]=m;x[i+1]=t;}}void main(){int s[11],*p,m;cout<<"输入10个数组元素:"; for(p=s;p<s+10;p++)cin>>*p;cout<<"要插入数据的值:"; cin>>m;cout<<"插入数据后的结果:"; p=s;insert(p,m);for(p=s;p<=s+10;p++)cout<<*p<<" ";cout<<endl;}4.#include<iostream.h>int select(int *p,int *q){int i,j=0;for(i=0;i<10;i++,p++)if(*p%2==1){*q++=*p;j++;}return j;}void main(){int s[10],x[10],*p,*q,n;cout<<"输入10个数组元素:"<<endl; for(p=s;p<s+10;p++)cin>>*p;p=s;q=x;cout<<"挑选后的新数组元素:"<<endl; n=select(p,q);for(q=x;q<x+n;q++)cout<<*q<<" ";cout<<endl;}5.#include<iostream.h>void main(){int s[10],*p,*q,m,t,i;cout<<"输入数组元素的个数m:"; cin>>m;cout<<"输入数组的"<<m<<"个元素值:"; for(p=s;p<s+m;p++)cin>>*p;for(p=s,i=0;p<=s+(m/2);p++,i++){q=s+(m-1-i);t=*p;*p=*q;*q=t;}cout<<"数组逆置后的结果:";for(p=s;p<s+m;p++)cout<<*p<<" ";cout<<endl;}#define M 4#include<iostream.h>#include<iomanip.h>#include<stdlib.h>#include<time.h>void out(int *p[]);{void add(int *p[]);{int sum;sun=+void main(){int s[M][M],i,*p;p=s[0];srand(time(NULL));cout<<M<<"*"<<M<<"矩阵的内容:"<<endl; for(i=1;i<=M*M;i++){*(p+i)=rand()%100;cout<<setw(4)<<*(p+i);if(i%4==0)cout<<endl;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验7 函数(一)
1.实验目的
(1)熟悉定义函数的方法。
(2)熟悉声明函数的方法。
(3)熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式。
2.实验内容
编程序并上机调试运行。
(1)求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。
用另一函数根据求出的最大公约数求最小公倍数(本题是第7章第1题)。
(2)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息(本题是第7章第3题)。
本程序应当准备以下测试数据:17,34,2,1,0。
分别运行并检查结果是否正确。
要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用的函数作声明。
进行以下工作。
①输入自己编写的程序,编译和运行程序,分析结果。
②将主函数的函数声明删掉,再进行编译,分析编译结果。
③把主函数的位置改为在其他函数之后,在主函数中不含函数声明。
④保留判别素数的函数,修改主函数,要求实现输出100~200之间的素数。
(3)写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出(本题是第7章第7题)。
①输入程序,编译和运行程序,分析结果。
②分析函数声明中参数的写法。
先后用以下两种形式。
(a) 函数声明中参数的写法与定义函数时的形式完全相同,如:
void cpy(char s[],char c[]);
(b) 函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。
如:void cpy(char [],char[]);
分别编译和运行,分析结果。
思考形参数组为什么可以不指定数组大小。
③如果随便指定数组大小行不行,如:
void cpy(char s[40],char [40])
请分别上机试一下。
(4)编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果(本题是第7章第9题)。
(5)用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串”483”。
n 的位数不确定,可以是任意的整数(本题是第7章第17题)。
①输入程序,进行编译和运行,分析结果。
②分析递归调用的形式和特点。