C语言作业答案doc.docx

上传人:b****9 文档编号:25203206 上传时间:2023-06-06 格式:DOCX 页数:16 大小:20.47KB
下载 相关 举报
C语言作业答案doc.docx_第1页
第1页 / 共16页
C语言作业答案doc.docx_第2页
第2页 / 共16页
C语言作业答案doc.docx_第3页
第3页 / 共16页
C语言作业答案doc.docx_第4页
第4页 / 共16页
C语言作业答案doc.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言作业答案doc.docx

《C语言作业答案doc.docx》由会员分享,可在线阅读,更多相关《C语言作业答案doc.docx(16页珍藏版)》请在冰豆网上搜索。

C语言作业答案doc.docx

C语言作业答案doc

C语言作业答案

P15三.2.3.4、P555

P36三.1.5.7

P74三

P83三.3.4

第三章作业:

P442.3.4

2、有一个已排好序的数组,今有一个数,要求按原来排序的规律将它插入数组(从小到大排列)中。

#defineN10

main()

{inti,j,n;

inta[N]={l,3,5,7,9,11,13,15,17};

scanf(〃%d〃,&n);

i=0;

while(n>a[i]&&i

for(j=N-l;j>i;j—)

a[j]=a[j-l];

a[j]=n;

for(i=0;i

printf(〃%3d〃,a[i]);

3、将数组中的值按逆序重新存放并输出。

main()

{inti,a[10];/*定义循环变量i和一维数组a*/

for(i=0;i〈二9;i++)

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

for(i=9;i〉二0;i--)

printf(zz%d,z,a[i]);/*按照逆序输出*/

printf(〃\n〃);

}

4、定义一个一维整形数组a[20】,由键盘随机输入20个2位数,统计其中60~99各值段元素的个数(10个数为一段)。

main()

{

inta[20],i,nl,n2,n3,n4;

nl=n2=n3=n4=0;

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

{a[i]=rand()%100;printf(〃a[%d]=%d\n〃,i,a[i]);}

for(i=0;i<20;i++)if(a[i]>=60&&a[i]<69)nl++;

elseif(a[i]>=70&&a[i]<79)n2++;

elseif(a[i]>=80&&a[i]<89)n3++;

elseif(a[i]>=90&&a[i]<99)n4++;

printf(,z\n60~69=%d\n70~79=%d\n80~89=%d\n90~99二%d〃,nl,n2,n3,n4);}

第七章作业:

P103三.2.4.6.7.9、

2、统计100以内的所有素数。

要求每行输出5个素数。

voidmain()

{inti,j;

for(i=2;i<=100;i++)

{for(j=2;j〈=sqrt(i);j++)

if(i%j==0)break:

if(j>sqrt(i))printf("%5d",i):

/*是素数*/

}

}

4、编程输出「100之间所有完数。

#include〃niath.h〃

main()

{intsum,i,j;

for(i=2;i<=100;i++)

{sum=0;

for(j=2;j<=sqrt(i);j++)

if(i%j二二0)sum二sum+j+i/j;

if(sum二二iT)printf(〃%d“,i);}

}

6、编写程序实现:

输入两个整数,输出其最大公约数和最小公倍数。

voidmain()

{inta,b,nl,n2,temp;

printf(〃inputtwodatas:

“);

scanf(〃%d%d〃,&a,&b);

if(a

for(nl=b;nl>l;nl--)

if(EL%nl=0&&b%nl=0)break;/*求最大公约数*/

n2二a*b/nl;/*求最小公倍数*/

printf(〃TheGCDis:

%d\nnl);

printf(z,TheLCMis:

%d\n〃,n2);}

7输出「200以内能被7整除但是不能被3整除的数之和。

main()

{intn,sum二0;

for(n=l;n<=100;n++)

{

if((n%7==0)&&(n%3!

=0))

{printf(〃%d〃,n);sum=sum+n;}

}

printf(〃\nsum=%d〃,sum);

}

9、计算1-1/2+1/3-1/4+-.+1/99-1/100,直到最后一项的绝对值小于10-4为止。

#include〃stdio.h〃

main()

{

inti二1,s;

floatsum=0;

whi.le(1.0/i>le~4)

{辻(i%2二二0)s二-1;

elses=l;

suin+二s*(1.0/i);

i++;}

printf(〃sum=%.4f〃,sum);

}

第八章作业P121三.3.4.5

3找出一个二维数组中的鞍点,即该位置上的元素在该行中最大,同时在该列中最小。

也可能不存在鞍点,如果有,打印出其位置和值。

main()

{

inta[3][4],x,y,i,j,k;

intmax,min;

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

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

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

for(i=0;i<3;i++)/*外循环,行*/

{

max=a[i][0];y二0;

for(k=l;k<5;k++)

if(max

{y=k;max=a[i][k];}/*每行找出最大max,和列号y*/min=a[i][y];x=i;

for(k二0;k〈3;k++)

if(min>a[k][y])

{x=k;min=a[k][y];}/*该列找出最小min,和行号x二k*/

if(i=x)/*如果更新后的行号x和开始的行号相同,则是鞍点*/printf(〃a_[%d][%d]=%disandian\n/z,x,y,a[x][y]);

}

getch();

}

4.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,任意输入一个正整数k,输出数组中与k大小相差5以内的所有元素。

main()

{inti,a[5][6],k,j,m=0,b[30]={0};

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

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

a[i][j]=rand()%100;

printf(〃\na:

\n〃);

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

{for(j=0;j<6;j++)

printf(〃%3d〃,a[i][j]);

printf(〃\n〃);

}

printf(〃inputk:

〃);

scanf(〃%d〃,&k);

printf(〃\nb:

\n〃);

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

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

if((k-5)〈二a[i][j]&&a[i][j]〈二(k+5))

{b[m]二a[i][j];m++;}

for(i=0;i

printf(〃%3d〃,b[i]);

getch();

}

5有一篇文章,共有3行文本,每行80个字符。

要求分别统计其中的英文大写字母,小写字母,数字、空格及其他字符的个数。

#defineN80

main()

{chara[3][N+l];

intnumxi&oxie,numdaxie,numshuzi,numkong,numother,i,j;

printf(〃inputa[3][N]:

\n〃);

for(i=0;i<3;i++)gets(a[i]);

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

{numxiaoxie=numdaxie=numshuzi=numkong=numother=0;

for(j=0;a[i][j]!

二'\0';j++)

{辻(a[i][j]>二'a'&&a[i][j]〈二'z')numxiaoxie++;

elseif(a[i][j]>二'A'&&a[i][j]〈二'Z')numdaxie++;

elseif(a[i][j]〉二'O'&&a[i][j]〈二'9')numshuzi++;

elseif(a[i][j]二二'')numkong++;

elsenumother++;

}

printf(〃\nthe%d:

'a'-'z,=%d,‘A'-'Z'=%d,'O'-

9'=%d,kong=%d,other=%d〃,i+1,numxiaoxie,numdaxie,numshuzi,numkong,numother);

}

}

第九章作业P150三.3.9

3判读素数的函数,主函数中输入一个数,输出是否是素数。

#include

#include

isprime(inta)

{inti;

if(a=l)return0;

for(i二2;i〈二sqrt(a);i++)

if(a%i=0)tetum0;

return1;

}

main()

{

intn;

scanf(〃%d〃,&n);

if(isprime(n))printf(〃%disprime",n);

elseprintf(〃%disnotprime",n);

getchO;}

}

9编程实现:

输入一个自然数n,求组成n3的n个连续奇数。

main()

{

intn,s二1,zh,ch,i;

printf(〃n二〃);scanf&n);

for(i二0;i<3;i++)s*二n;

if(n%2==l){zh=s/n;ch二zh-(n/2)*2;}

else{zh=s/n;ch二zhT-(n/2T)*2;}

printf(〃%cT3二〃,n);

for(i=0;i

if(i==n-l)printf(z/%d\nz/,ch+i*2);

elseprintf(〃%d+",ch+i*2);

}

第十章作业P180三.2.5

2、编写程序实现将一个一维数组中的数据向右循环移动,移动次数由键盘输入。

如数组各元素为0,1,2,3,4,5,6,7,8,9,10;移动三次后各元素的值依次为8,9,10,0,1,2,3,4,5,6,7.

intmain()

{inta[ll],n,i,j,*p,t;

inttemp;

printf(〃inputllnum:

\n〃);

for(p=a;p

printf(〃n:

\n〃);

scanf(〃%d〃,&n);

P=a;

for(i=l;i<=n;i++)

{t二*(p+10);

for(j二9;j〉二0;j—)*(p+j+1)二*(p+j);

*p=t;

}

for(p=a;p

printf(zz%d〃,*p);

}

5、写一个函数,实现两个字符串strl和str2的比较。

即实现strcmp的功能。

函数的原型为intmystrcmp(char*strl,char*str2)。

当strl=str2时,返回值为0,否则返回它们二者第一个不同字符的ASCII码差值。

如果strl>str2,则输出值正值;如果strl

#include〃stdio.h〃

intmain()

{intn;

char*sttl,*str2;

printf(〃inputstringl:

\n〃);

gets(strl);

printf(〃inputstring2:

\n〃);

gets(str2);

n二mysttcnip(stri,str2);

printf(〃thetwostringis%d:

\n〃,n);}

intmysti'cnip(char*s,char*t)

{wh订e(*s&&*t&&*s二二*t){s++;t++;}

retum*s—*t;

}

第十二章作业P2131

1编写函数rotate(inta[4][4],intb[4][4]),将数组a中的元素逆时针旋转90o后的元素保存在数组b中。

计算数组b主对角线上全部元素之和作为函数的返回值。

编写主函数main(),从键盘输入16个数据放入一个二维数组中,调用rotate函数,将旋转后的二维数组全部元素及旋转后数组中主对角线上的全部元素之和输出到显示器。

introtate(inta[4][4],intb[4][4])

{inti,j,t=0;

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

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

b[3-j][i]=a[i][j];

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

t=t+b[i][i];

tetumG);

}

main()

{inti,j,sum;

intaa[4][4],bb[4][4];

printf(〃inputaa[4][4]〃);

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

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

scanf(〃%d〃,&aa[i][j]);sum=rotate(aa,bb);

for(i-0;i<4;i++)

{for(j=0;j<4;j++)printf(zz%d",bb[i][j]);printf(〃\n〃);

}

printf(〃sum=%d〃,sum);

}

第^一章作业

P196三.2.3

2定义一个宏,用于求两个参数的余数。

#defineyu(a,b)a%b

voidmain()

{inta,b;

printf(〃enterfirstnumber:

\n〃);scanf(〃%d〃,&a);

printf(〃entersecondnumber:

\n〃);

scanf(〃%d〃,&b);

printf(〃theresuItis:

%d/z,yu(a,b));

3、设计一个程序,交换两个整数的值,用带参数的宏定义实现

#include〃stdio.h〃

#defineswap(a,b)t=a;a=b;b=t;

main()

{

inta二3,b二5;

swap(a,b);

printf(〃&=%d,b二%d\n〃,a,b);

}

第十三章作业

P250三.1.2

1、用结构体数组建立5个人的通讯录,包括姓名、地址和电话号码。

编写一个函数input,用来输入5个人的记录,编写一个函数print(),用来输出5个人的记录。

比那些main()函数,其中调用input(),print实现记录的输入、输出。

#include〈stdlib.h>

#defineSTUDENTstructstudent

STUDENT

{charname[20];

charaddr[20];

charnum[10];

};

main()

{voidinput(STUDENT*,int);/*函数声明*/

voidprint(STUDENT*,int);

STUDENTstud[5];/*定义结构体数组*/

input(stud,5);/*依次调用自定义函数*/

print(stud,5);

getchO;}

voidinput(STUDENTarr[],intn)

/*输入n名联系人的信息*/

{inti,j;

printf(〃\nInputName,address,telephone:

\n〃);for(i=0;i

{

scanf(〃%s〃,arr[i].name);scanf(〃%s〃,arr[i].addr);scanf(〃%s〃,arr[i].num);

}

}

voidprint(STUDENTarr[],intn)

/*输出联系人信息*/

{inti,j;

printf(〃NameAddressTelephone\n〃);

for(i-0;i

printf(〃%8s%8s%8s\rT,arr[i].name,arr[i].addr,arr[i].num);

2定义一个结构体数组,描述10个学生的学号(intnum),姓名(char

name[10])>三门课的成绩及总成绩(floatscore[4],要求从键盘输入学生的前5项数据,计算每个学生的总成绩,输出最高分的学生的数据(包括学号、姓名、3门课成绩及总成绩)。

#include〃stdio.h〃

#defineN5

struetstudent

{

intnum;

charname[10];

intscore[3];

}stu[N];

voidmain()

{inti,j,count二0;

floatave,sum二0;

intmax=0,k=0;

for(i=0;i

{printf(〃inputno.%d\n〃,i+1);scanf(〃%d〃,&stu[i]・num);fflush(stdin);

printf(〃inputname%d\n〃,i+1);gets(stu[i].name);fflush(stdin);

printf(〃input3scoresof%d:

\n〃,i+1);

stu[i].score[3]=0;

for(j二0;j<3;j++){scanf(〃%d〃,&stu[i].score[j]);

stu[i].score[3]+=stu[i].score[j];}if(stu[i].score[3]>max)k二i;

fflush(stdin);

printf(〃themaxis\nno.namescorelscore2score3all\n〃);

printf(〃%-5d〃,stu[k].num);

printf(〃%10s〃,stu[k].name);

for(j二0;j<3;j++)printf(〃%5d〃,stu[k].score[j]);

printf(〃%5d〃,stu[k].score[3]);}

第十四章作业

P269三.1.2

1从键盘输入一个字符串,将该字符串中的小写字母转换成大写字母,输出到文件test,txt中,然后从该文件读出字符串并显示出来。

#include〈stdio.h>

main()

{charstr[100];

inti二0;

FILE*fp;

if((fp=fopen("test,txt",〃w〃))二二NULL)

{printf("Can'topenthefile.\nzz);

exit(0);

}

printf(〃Inputastring:

\n〃);

gets(str);

while(str[i])

{if(str[i]〉二'a'&&str[i]〈二'z')

fputc(str[i],fp);

i++;

}

fclose(fp);

fp二fopen("test,txt",〃r〃);

fgets(str,strlen(str)+l,fp);

printf(〃%s\n〃,str);

fclose(fp);

getch();

}

2函数ReadDat()实现从文件in.dat中读取10个整数存放到数组a中。

请编制函数sortO,函数的功能是:

对10个整型数按从小到大排序,排序后的结果仍存入数组a中,最后调用函数WriteDat()把结果a输出到文件out.dat中。

#include〃stdio.h〃

inta[10];

voidsort()

{inti,j,t;

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

for(j=0;j<9-i;j++)

if(a[j]>a[j+l])

{t二a[j];a[j]二a[j+l];a[j+l]二t;}

}

voidmain()

{readDat();

sort();

writeDat();getch();

}

readDat()

{

FILE*in;

inti;

in=iopenvin.dat,r丿;

for(i-0;i<10;i++)fscanf(in,〃%d〃,&a[i]);fclose(in);

}

writeDat()

{

FILE*out;

inti;

clrscr();

out=fopen(〃out.dat〃,〃w〃);

for(i=0;i<10;i++){printf(,za[%d]=%d\n/z,i,a[i]);fprintf(out,zz%d\n/z,a[i]);

fclose(out);}

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1