编程习题.docx

上传人:b****1 文档编号:2954329 上传时间:2023-05-05 格式:DOCX 页数:16 大小:20.80KB
下载 相关 举报
编程习题.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

编程习题

11.编程:

从键盘输入N个字符串,按字典顺序排序后输出,并将结果保存入“DATA.DAT”中。

#include

#include

#include

#defineN5

intmain()

{

charstr[N][20],s[20];

inti,j,k;

FILE*fp;

fp=fopen("DATA.dat","w");

if(fp==NULL){printf("文件打开错误");exit(0);}

for(i=0;i

for(i=0;i

{k=i;

for(j=i+1;j

if(strcmp(str[k],str[j])>0)k=j;

strcpy(s,str[k]);

strcpy(str[k],str[i]);

strcpy(str[i],s);

}

for(i=0;i

fclose(fp);

return0;

}

12.编程:

将字符串中的第m个字符开始的全部字符复制到另一个字符串。

要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。

#include

intmain()

{

voidcopy(chars1[],chars2[],intm);

ints[20],t[20],m;

gets(s);

scanf("%d",&m);

copy(s,t,m);

puts(t);

return0;

}

voidcopy(chars1[],chars2[],intm)

{

s1=s1+m-1;

strcpy(s2,s1);

}

13.编程:

输出100~300中的素数及素数的个数

#include

#include

intmain()

{

inti,n,k,count=0;

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

{

k=sqrt(n);

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

if(n%i==0)break;

if(i>k){printf("%d\t",n);count++;}

}

printf("\n");

printf("素数的个数:

%d\n",count);

return0;

}

15.有一数列,包含10个数,已按升序排好。

现要求编一程序,从指定位置开始的n个数按逆序重新排列并输出新的完整数列(例:

原数列:

2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20)要求在主函数中输入10个数及指定位置m的值,并输出新的数列,在被调函数中从指定位置开始的n个数按逆序重新排列。

#include

intmain()

{

voidnixu(inta[],intm,intn);

inta[10],i,m,n;

for(i=0;i<10;i++)scanf("%d",&a[i]);

scanf("%d%d",&m,&n);

nixu(a,m,n);

printf("重排后的数列是:

\n");

for(i=0;i<10;i++)printf("%d\t",a[i]);

return0;

}

voidnixu(inta[],intm,intn)

{

intt,i,j;

for(i=m-1,j=m+n-2;i

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

20.编程:

输入一个无符号整数,输出它的各位数之和并保存到文件“DATA.DAT”中。

#include

#include

intmain()

{

FILE*fp;

unsignedintn,s=0;

fp=fopen("data.dat","w");

if(fp==NULL){printf("不能打开文件\n");exit(0);}

scanf("%u",&n);

while(n!

=0)

{

s+=n%10;

n=n/10;

}

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

fprintf(fp,"s=%d\n",s);

fclose(fp);

return0;

}

23.有一个3*4的矩阵,找出每行中最大的元素并与第一列交换,输出原矩阵及处理后的矩阵并保存到文件“DATA.DAT”中。

#include

intmain()

{

inta[3][4]={{2,5,12,7},{8,10,-1,2},{7,6,5,22}},i,j,max,t;

printf("原来的矩阵:

\n");

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

{

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

printf("%d\t",a[i][j]);

printf("\n");

}

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

{

max=0;

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

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

t=a[i][0];a[i][0]=a[i][max];a[i][max]=t;

}

printf("现在的矩阵:

\n");

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

{

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

printf("%d\t",a[i][j]);

printf("\n");

}

return0;

}

24.函数fun的功能是:

求出

的前n项之和,其结果通过函数值返回main函数。

例如:

在main函数中输入n的值为5,则输出8.391667。

#include

intmain()

{

floatfun(intn);

intn;

floats;

scanf("%d",&n);

s=fun(n);

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

return0;

}

floatfun(intn)

{

inti;

floats=0,j=2,k=1,m;

for(i=1;i<=n;i++){s+=j/k;m=j;j=j+k;k=m;}

returns;

}

27.函数voidfun(chars[],charch)的功能是:

从字符串s中删除字符ch。

要求:

在main函数中输入字符串s及要删除的字符ch的值,调用fun函数,输出删除了字符ch后的字符串。

例如:

从键盘输入cabcdabcdabcxccc和c,输出的结果应该是abdabdabx。

#include

voidfun(chars[],charch)

{

inti,j=0;

for(i=0;s[i]!

='\0';i++)

if(s[i]!

=ch)s[j++]=s[i];

s[j]='\0';

}

intmain()

{

chars[81],ch;

gets(s);

scanf("%c",&ch);

fun(s,ch);

puts(s);

return0;

}

30.函数intispalin(charstr[])的功能是判断字符串str是否为回文,即顺读和逆读都一样的字符串,若是,返回1;否则返回0。

要求:

在main函数中从键盘输入字符串str,调用ispalin函数,输出判断结果。

例如:

输入admda,则输出admda:

yes;输入abcdabc,则输出abcdabc:

No。

#include

intmain()

{

charstr[81],flag;

gets(str);

flag=ispalin(str);

if(flag==1)printf("%s:

yes\n",str);

elseprintf("%s:

no\n",str);

return0;

}

intispalin(charstr[])

{

inti,j;

for(i=0,j=strlen(str)-1;i

if(str[i]!

=str[j])return0;

return1;

}

33.编写函数intprime(intn),功能为判断n是否为素数,若是,返回1;否则返回0。

要求:

在main函数中调用函数prime,将2~100以内的所有素数存放到一维数组a中,输出a中的所有元素。

#include

#include

intmain()

{

intprime(intn);

inta[50],i,m=0;

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

if(prime(i)==1)a[m++]=i;

for(i=0;i

return0;

}

intprime(intn)

{

intflag=1,i;

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

if(n%i==0){flag=0;break;}

returnflag;

}

35.编程:

从键盘输入6名学生5门课程成绩,分别统计出每个学生的平均成绩并保存到文件“DATA.DAT”中。

#include

#include

intmain()

{

floatscore[6][5],average[6],s;

inti,j;

FILE*fp;

fp=fopen("data.dat","w");

if(fp==NULL){printf("打开文件错误\n");exit(0);}

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

{

s=0;

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

{

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

s+=score[i][j];

}

average[i]=s/5;

}

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

{

printf("%f\n",average[i]);

fprintf(fp,"%f\n",average[i]);

}

fclose(fp);

return0;

}

38.编程:

从键盘输入N个字符串,输出其中最长的字符串并保存到文件“DATA.DAT”中。

#include

#include

#include

#defineN5

intmain()

{

charstr[N][20];

intm=0,i;

FILE*fp;

fp=fopen("data.dat","w");

if(fp==NULL){printf("不能打开文件");exit(0);}

for(i=0;i

for(i=0;i

if(strlen(str[i])>strlen(str[m]))m=i;

printf("最长的字符串是:

");

puts(str[m]);

fprintf(fp,"%s",str[m]);

fclose(fp);

}

39.编写一个函数print,功能为打印学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3]。

要求:

在main函数中输入这些记录,调用print函数输出这些记录。

#include

structstudent{

intnum;

charname[10];

floatscore[3];

};

structstudentstu[5];

intmain()

{

voidprint();

inti;

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

scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

print();

return0;

}

voidprint()

{

inti;

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

printf("%d\t%s\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}

42.函数intfun(inta[],intn,intb[])的功能是:

求出数组a中n个元素的平均值,将大于平均值的元素存入b数组中,函数返回b数组中元素个数。

编写main,通过调用fun,输出大于平均值的元素。

#include

intfun(inta[],intn,intb[])

{

intave,i,j=0,s=0;

for(i=0;i

ave=s/n;

for(i=0;i

if(a[i]>ave)b[j++]=a[i];

returnj;

}

intmain()

{

inta[10],b[10],i,m;

for(i=0;i<10;i++)scanf("%d",&a[i]);

m=fun(a,10,b);

for(i=0;i

return0;

}

45.函数voidmove(inta[],intn,intm)的功能是:

将有n个元素的数组a中前面各数顺序向后移m个位置,最后m个数变成最前面m个数。

编写main,调用move函数,输出变换后的结果。

#include

intmain()

{

voidmove(inta[],intn,intm);

inta[10],m,i;

for(i=-0;i<10;i++)scanf("%d",&a[i]);

scanf("%d",&m);

move(a,10,m);

for(i=0;i<10;i++)printf("%d",a[i]);

return0;

}

voidmove(inta[],intn,intm)

{

intt[10],i;

for(i=0;i

for(i=0;i

a[n-1-i]=a[n-m-1-i];

for(i=0;i

}

46.一个10万以内的整数,它加上100后是一个完全平方数,加上268又是一个完全平方数。

编程:

输出满足条件的数。

#include

#include

intmain()

{

intn,p,q;

for(n=1;n<=100000;n++)

{

p=sqrt(n+100);

q=sqrt(n+268);

if(n+100==p*p&&n+268==q*q)printf("%d\t",n);

}

return0;

}

47.编程:

找出1~99之间的全部同构数并保存到文件“DATA.DAT”中。

同构数是这样一组数:

它出现在平方数的右边。

例如:

5是25的右边的数,25是625右边的数,5和25都是同构数。

#include

#include

intmain()

{

intn;

FILE*fp;

fp=fopen("data.dat","w");

if(fp==NULL){printf("不能打开文件\n");exit(0);}

for(n=1;n<=99;n++)

if(n*n%10==n||n*n%100==n){printf("%d\t",n);fprintf(fp,"%d\t",n);}

fclose(fp);

return0;

}

55.编程:

分解质因数,正整数从键盘输入。

例如:

输入90,打印出90=2*3*3*5。

#include

intmain()

{

intn,i;

scanf("%d",&n);

printf("%d=",n);

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

{

while(n%i==0)

{

n=n/i;

if(n==1)printf("%d\n",i);

elseprintf("%d*",i);

}

}

}

72.函数voidmerge(inta[],intb[],inttemp[],intlen_a,intlen_b)的功能是:

将降序的a和升序的b合并成一个新的升序序列temp。

编写main函数,调用merge函数进行合并,输出合并后的结果。

例如:

a中数据为78,42,24,8;b中数据为1,23,28,79,90;

输出结果为:

1823242842787990

#include

intmain()

{

voidmerge(inta[],intb[],intc[],intlen_a,intlen_b);

inta[4]={78,42,24,8},b[5]={1,24,28,79,90},c[9],i;

merge(a,b,c,4,5);

for(i=0;i<9;i++)printf("%d\t",c[i]);

return0;

}

voidmerge(inta[],intb[],intc[],intlen_a,intlen_b)

{

inti,j,k=0;

for(i=len_a-1,j=0;i>=0&&j

if(a[i]

elseif(b[j]

else{c[k++]=a[i--];c[k++]=b[j++];}

if(i<0)while(j

else

if(j==len_b)while(i>=0)c[k++]=a[i--];

}

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

当前位置:首页 > 高等教育 > 哲学

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

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