数组函数指针作业答案.docx

上传人:b****2 文档编号:3170778 上传时间:2023-05-05 格式:DOCX 页数:16 大小:17.98KB
下载 相关 举报
数组函数指针作业答案.docx_第1页
第1页 / 共16页
数组函数指针作业答案.docx_第2页
第2页 / 共16页
数组函数指针作业答案.docx_第3页
第3页 / 共16页
数组函数指针作业答案.docx_第4页
第4页 / 共16页
数组函数指针作业答案.docx_第5页
第5页 / 共16页
数组函数指针作业答案.docx_第6页
第6页 / 共16页
数组函数指针作业答案.docx_第7页
第7页 / 共16页
数组函数指针作业答案.docx_第8页
第8页 / 共16页
数组函数指针作业答案.docx_第9页
第9页 / 共16页
数组函数指针作业答案.docx_第10页
第10页 / 共16页
数组函数指针作业答案.docx_第11页
第11页 / 共16页
数组函数指针作业答案.docx_第12页
第12页 / 共16页
数组函数指针作业答案.docx_第13页
第13页 / 共16页
数组函数指针作业答案.docx_第14页
第14页 / 共16页
数组函数指针作业答案.docx_第15页
第15页 / 共16页
数组函数指针作业答案.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数组函数指针作业答案.docx

《数组函数指针作业答案.docx》由会员分享,可在线阅读,更多相关《数组函数指针作业答案.docx(16页珍藏版)》请在冰点文库上搜索。

数组函数指针作业答案.docx

数组函数指针作业答案

“数组”课外作业:

一、输入一组数,输出这组数中的最大值和最小值。

#include

voidmain()

{floata[20],max,min;

inti,n;

printf("输入数据个数(不超过20):

");

scanf("%d",&n);

printf("输入数字:

");

for(i=0;i

scanf("%f",&a[i]);

max=min=a[0];

for(i=0;i

{

if(a[i]>max)max=a[i];

if(a[i]

}

printf("最大值为:

%.2f\n最小值为:

%.2f\n",max,min);

}

二、输入一组学生的语文成绩和数学成绩,求每个学生的平均成绩。

要求按下面运行结果所示的格式输出数据。

运行结果:

输入学生人数(不超过40):

4↙

输入第1个学生的语文成绩和数学成绩:

8683↙

输入第2个学生的语文成绩和数学成绩:

7581↙

输入第3个学生的语文成绩和数学成绩:

9087↙

输入第4个学生的语文成绩和数学成绩:

6574↙

编号语文成绩数学成绩总成绩平均成绩

1868316984.5

2758115678.0

3908717788.5

4657413969.5

//方法一:

#include

voidmain()

{

intscore[40][3],i,j,num;

floatav[40];

printf("输入学生人数(不超过40人):

");

scanf("%d",&num);

for(i=0;i

{

printf("输入第%d个学生的语文成绩和数学成绩:

",i+1);

for(j=0;j<2;j++)

scanf("%d",&score[i][j]);

}

for(i=0;i

{

score[i][2]=0;//score[i][2]存放总成绩

for(j=0;j<2;j++)

score[i][2]=score[i][2]+score[i][j];//求总成绩

av[i]=score[i][2]/2.0;//求平均成绩

}

printf("%8s%10s%10s%10s%10s\n","编号","语文成绩","数学成绩","总成绩","平均成绩");

for(i=0;i

{

printf("%8d",i+1);//输出编号

for(j=0;j<3;j++)

printf("%10d",score[i][j]);//输出语文、数学和总成绩

printf("%10.1f\n",av[i]);//输出平均成绩

}

}

//方法二:

#include

voidmain()

{

intscore[40][4],i,j,num;

printf("输入学生人数(不超过40人):

");

scanf("%d",&num);

for(i=0;i

{

printf("输入第%d个学生的语文成绩和数学成绩:

",i+1);

for(j=0;j<2;j++)

scanf("%d",&score[i][j]);

}

for(i=0;i

{

score[i][2]=0;//score[i][2]存放总成绩

for(j=0;j<2;j++)

score[i][2]=score[i][2]+score[i][j];//求总成绩

score[i][3]=score[i][2]/2;

}

printf("%8s%10s%10s%10s%10s\n","编号","语文成绩","数学成绩","总成绩","平均成绩");

for(i=0;i

{

printf("%8d",i+1);//输出编号

for(j=0;j<4;j++)

printf("%10d",score[i][j]);//输出语文、数学、总成绩和平均成绩

printf("\n");

}

}

三、下面程序的功能是,输入一组学生的姓名和成绩,根据成绩排名次,要求按后面运行结果所示的格式输出数据。

(可用二维数组完成)

运行结果:

输入学生人数:

5↙

输入第1位学生的姓名和成绩:

张小二65↙

输入第2位学生的姓名和成绩:

王丁丁86↙

输入第3位学生的姓名和成绩:

赵四98↙

输入第4位学生的姓名和成绩:

李李100↙

输入第5位学生的姓名和成绩:

陈冬冬70↙

排了名次的成绩单如下:

名次姓名成绩

1李李100

2赵四98

3王丁丁86

4陈冬冬70

5张小二65

#include

#include

voidmain()

{charname[40][10],str[10];

intscore[40],num,i,j,t;

printf("输入学生人数:

");

scanf("%d",&num);

for(i=0;i

{

printf("输入第%d学生的姓名和成绩:

",i+1);

scanf("%s%d",name[i],&score[i]);

}

for(i=0;i

for(j=i+1;j

if(score[j]>score[i])

{

t=score[i];

score[i]=score[j];

score[j]=t;

strcpy(str,name[i]);

strcpy(name[i],name[j]);

strcpy(name[j],str);

}

printf("排了名次的成绩如下:

\n");

printf("%8s%12s%8s\n","名次","姓名","成绩");

for(i=0;i

printf("%8d%12s%8d\n",i+1,name[i],score[i]);

}

“数组、函数”课外作业:

要求用函数完成。

一、定义一个数组,对其进行排序,然后输入一个数,并将这个数按数组排序的位置插入到数组中。

如:

数组中有:

3,6,9,10,15,18;输入的数为11,则:

应输出3,6,9,10,11,15,18。

#include

voidmain()

{voidsort(inta[]);

voidinsert(inta[],intx);

inta[11]={12,11,36,2,4,58,65,25,45,14},i,x;

sort(a);

printf("排序后的数组是:

\n");

for(i=0;i<10;i++)

{printf("%3d",a[i]);}

printf("\n");

printf("插入一个数:

");

scanf("%d",&x);

insert(a,x);

printf("\n");

printf("插入后的数组是:

\n");

for(i=0;i<11;i++)

{printf("%3d",a[i]);}

printf("\n");

}

voidsort(inta[])//排序

{inti,j,temp;

for(i=0;i<10;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

{temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

voidinsert(inta[],intx)//插入数值

{inti=0,j;

while(x>a[i])i++;

{for(j=10;j>i;j--)//那么其他的数相继住后移

{a[j]=a[j-1];}

a[j]=x;//并把x加到空出来的位置

}

}

二、(函数,数组)输入一个3*3的矩阵,求对角线元素之和,并输出。

例:

123

456

789

对角线元素和为:

1+5+9=15,3+5+7=15。

#include

#defineN3

voidmain()

{voidinput(inta[N][N]);

intsum1(inta[N][N]);

intsum2(inta[N][N]);

inta[N][N];

input(a);

printf("\n第一个对角线的和为:

%d\n",sum1(a));

printf("\n第二个对角线的和为:

%d\n",sum2(a));

}

voidinput(inta[N][N])

{

inti,j;

for(i=0;i

{

printf("输入第%d行的值:

\n",i+1);

for(j=0;j

scanf("%d",&a[i][j]);

}

}

intsum1(inta[N][N])

{

inti,j,x=0;

for(i=0;i

for(j=0;j

if(i==j)//当i=0j=0,i=1j=1,i=2j=2时相加

x=x+a[i][j];

returnx;

}

intsum2(inta[N][N])

{

inti,j,x=0;

i=0;j=N-1;

while(i

{x=x+a[i][j];

i++;

j--;

}

returnx;

}

三、下面程序的功能是,输入一个ASCII码值,输出从该ASCII码开始的连续10个字符。

在横线处填写正确的语句或表达式,使程序完整.上机调试程序,使程序的运行结果与给出的结果一致。

#include

voidmain()

{

voidput(intn);

intascii;/*变量ascii存放输入的ASCII码值*/

printf("输入ASCii码值:

");

scanf("%d",&ascii);

put(ascii);

}

voidput(intn)

{

inti,a;

for(i=1;i<=10;i++)

{

a=n+i-1;

putchar(a);

}

}

运行结果一:

输入ASCii码值:

97↙

abcdefghij

运行结果二:

输入ASCii码值:

33↙

”#$%&’()*

四、下面各题,如有错误请写明错在哪,改正后再写出程序的运行结果。

如果是正确的,直接写出程序的运行结果。

(1)

#include

voidmain()

{voidf();

inta;

a=10;

f();

printf(“a=%d\n”,a);

}

voidf()

{

inta;

a=20;

printf(“a=%d\n”,a);

}

a=20

a=10

(2)intx,y;//全局变量的例子

#include

voidmain()

{ints();

intn;

x=1;

y=2;

n=x+y;

printf(“x=%d,y=%d,n=%d\n”,x,y,n);

n=s();

printf(“x=%d,y=%d,n=%d\n”,x,y,n);

}

ints(){

intz;

x=3;

y=4;

z=x+y;

return(z);

}

x=1,y=2,n=3

x=3,y=4,n=7

(3)inta=10;//全局变量与局部变量同名的例子

#include

voidmain()

{voidf();

a++;

f();

printf(“a=%d\n”,a);

}

voidf()

{

inta;

a=20;

}

a=11

“指针”课外作业:

一、分析下列程序,如有错误或警告,请修改,并写出程序结果。

(1)

#include

voidmain()

{

int*p,a;

scanf(“%d”,&a);

p=&a;

printf(“%d”,*p);

}

(输入什么数就得到什么数,不能输入字符)。

(2)

#include

voidf(int*t)

{*t=10;}

voidmain()

{

int*p,a;

a=2;

p=&a;

f(p);

printf("a=%d\n",a);

}

a=10

(3)

#include

voidmain()

{

int*p;

intn[10],i;

for(i=0;i<10;i++)

n[i]=i;

p=n;

printf(“n[0]=%d\n”,*p);

printf(“n[6]=%d\n”,*(p+6));

}

n[0]=0

n[6]=6

(4)

#include

#include//少了这个文件包含,因为strcat等函数是包含在string.h中的

voidmain()

{

char*str1,*str2,*str3;

chara[10],b[10],c[10];

//要定义数组,分别给str1str2str3指针来指向,长度10可自己定

printf("str1=");

gets(str1);

printf("str2=");

gets(str2);

strcat(str1,str2);

printf("str1=%s\n",str1);

strcpy(str3,str1);

printf("str3=%s\n",str3);

}

另外还有str1str2str3没有初始化

运行结果一:

str1=123

str2=444

str1=123444

str3=123444

(5)

#include

voidmain(){

staticinta[]={1,2,3,4,5};

int*p=a;

printf(“%d”,*++p);//2

printf(“%d”,*p++);//2

printf(“%d”,(*p)++);//3

printf(“%d\n”,++*p);//5

}

二、完善程序

1、下面程序的功能是,输入一个阿拉伯数字序列,输出其对应的汉字大写形式.在程序的横线处填写正确的语句或表达式,使程序完整.上机调试程序,使程序的运行结果与给出的结果一致.

#include

#include

voidmain()

{

char*n,n1[10];

char*s[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

inti,x,len;

printf("输入一串阿拉伯数字:

\n");

n=n1;

gets(n);

len=strlen(n);

for(i=0;i

{

x=*(n+i)-48;/*48为字符"0"的ASCII码*/

printf("%s",s[x]);

//printf("%s",*(s+x));或者用这个语句

}

printf("\n");

}

运行结果:

输入一串阿拉伯数字:

135302↙

壹叁伍叁零贰

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2