第2题
下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。
例如:
若输入 2 8 5 7 8 4 5 3 2 8
则应输出:
The max: 8
Total: 3 //最大数出现次数
The positions: 1 4 9
请补充下列空缺:
include<stdio.h>
include<conio.h>
define M 10
int fun(int *a, int *n, int pos[])
{int i, k,max=-32767;
(1)
for(i=0; i<M; i++)
if( (2) ) max=a[i];
for(i=0; i<M; i++)
if( (3) )pos[k++]=i;
*n=k;
return max;
}
main()
{int a[M], pos[M], i=0, j, n;
clrscr();
printf("Enter 10 number :");
for(i=0; i<M; i++)scanf("%d", (4));
j=fun( (5) );
printf("The max: %d\n", j);
printf("Total: %d",n);
printf("The position:");
for(i=0; i<n; i++ ) printf("%4d", pos[i]);
printf("\n");
}
第3题
实验十一 C程序的指针(二) 一、实验目的 1. 掌握指针和指针变量的概念。 2. 掌握简单指针变量的定义和基本使用方法。 3. 熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。 4. 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。 5. 了解指针与字符串的关系,能熟练使用指针处理字符串。 二、实验内容及实验步骤 1. 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值. 要求用函数指针调用这两个函数,结果在主函数中输出. main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(int a,int b,int c) { c=a+b; } swap(int a;int b) { int t; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址. 2. 测试、运行自己编写的程序。 (1)写一个函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为 int strcmp(char * p1,char * p2); 设p1指向字符串s2,要求当s1=s2时,函数返回值为0;如果s1<>s2,则返回它们二者第一个不相同的ASCII码值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。 两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。 (2)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。 (3)有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 三、实验报告要求 写明: 1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。 5.>
第4题
3.算法填空题 数组q[MAX]存储一个循环队,尾指针last用来指向当前队列中的尾元素,count用来记录队列中当前元素个数。 下面的程序用于模拟队操作全过程。 提示:当count=0时,表示队空;当count=MAX时,表示队满。 当队不空时,(last-count+1+MAX)%MAX即是队头位置。 #include <stdio.h> #define MAX 400 //x 进队函数 int addq(int q[], int &last, int &count, int x) { if (count == MAX) (1) ; last = (last + 1) % MAX; (2) ; (3) ; return 1; } //x 出队函数 int delq(int q[], int last, int &count, int &x) { int f; if (count == 0) return 0; f = (4) ; x = q[f]; count--; return 1; } //输出队列中所有元素的函数 void print(int q[], int last, int count) { int i, j; if ( (5) ) { printf(" 当前队中没有元素! \n"); return; } printf(" 当前队中的元素为:\n"); i = (6) ; for (j = 1; (7) ; j++) { printf("%4d", q[i]); i = (i + 1) % MAX; } printf(" \n"); } //主函数 int main() { int q[MAX], (8) , count = 0, c, k, x; while (1) { printf(" 请输入操作码,1:进队;2.出队;3.显示队内容;0:结束 c= "); scanf(" %d", &c); if (c == 0) break; if (c == 1) { printf(" 请输人进队元素x:"); scanf("%d",&x); k = (9) ; if (k==0)printf("队已满,进队失败! \n" ); else printf("%d 已进队!\n" ,x); } else if(c == 2) { k = (10) ; if(k == 0)printf( "队空,无元素出队! \n"); else printf("元素%d已从队中退出! \n" ,x); } else if(c == 3) print(q, last, count); else continue; } printf("程序结束\n" ); }
第5题
第6题
第9题
include<stdio.h>
main( )
{int a[10],*p,*S;
for(p=a;p-a<10;p++)scanf(”%d”,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;
printf(”max=%d\n”,________);
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!