经典C语言编程41题.docx

上传人:b****8 文档编号:9198537 上传时间:2023-05-17 格式:DOCX 页数:40 大小:25.78KB
下载 相关 举报
经典C语言编程41题.docx_第1页
第1页 / 共40页
经典C语言编程41题.docx_第2页
第2页 / 共40页
经典C语言编程41题.docx_第3页
第3页 / 共40页
经典C语言编程41题.docx_第4页
第4页 / 共40页
经典C语言编程41题.docx_第5页
第5页 / 共40页
经典C语言编程41题.docx_第6页
第6页 / 共40页
经典C语言编程41题.docx_第7页
第7页 / 共40页
经典C语言编程41题.docx_第8页
第8页 / 共40页
经典C语言编程41题.docx_第9页
第9页 / 共40页
经典C语言编程41题.docx_第10页
第10页 / 共40页
经典C语言编程41题.docx_第11页
第11页 / 共40页
经典C语言编程41题.docx_第12页
第12页 / 共40页
经典C语言编程41题.docx_第13页
第13页 / 共40页
经典C语言编程41题.docx_第14页
第14页 / 共40页
经典C语言编程41题.docx_第15页
第15页 / 共40页
经典C语言编程41题.docx_第16页
第16页 / 共40页
经典C语言编程41题.docx_第17页
第17页 / 共40页
经典C语言编程41题.docx_第18页
第18页 / 共40页
经典C语言编程41题.docx_第19页
第19页 / 共40页
经典C语言编程41题.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

经典C语言编程41题.docx

《经典C语言编程41题.docx》由会员分享,可在线阅读,更多相关《经典C语言编程41题.docx(40页珍藏版)》请在冰点文库上搜索。

经典C语言编程41题.docx

经典C语言编程41题

1.编程:

从键盘输入10个整数,对其进行从小到大排序,将排序后的结果输出并保存到文件“DATA.DAT”中。

#include

voidmain()

{FILE*fp;

inti,j,t,min,a[10];

if((fp=fopen("E:

\\DATA1.DAT","w"))==NULL)

{printf("cannotopen\n");

exit(0);}

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

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

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

{min=i;

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

if(a[min]>a[j])min=j;

t=a[min];a[min]=a[i];a[i]=t;

}

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

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

fprintf(fp,"%5d",a[i]);}

printf("\n");

fprintf(fp,"\n");

fclose(fp);

}

 

2.设有10个学生的信息,包括学号、姓名和三门功课的成绩,试编写学生信息输入函数、学生信息输出函数,最后编写主函数,并在主函数中调用这些函数。

#include

structstudent

{intnum;

charname[10];

intComputer;

intMaths;

intEnglish;

}stu[10];

voidinput(structstudentstu[])

{

inti;

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

{

printf("num=");

scanf("%d",&stu[i].num);

printf("name=");

scanf("%s",&stu[i].name);

printf("Computer=");

scanf("%d",&stu[i].Computer);

printf("Maths=");

scanf("%d",&stu[i].Maths);

printf("English=");

scanf("%d",&stu[i].English);

printf("\n");

}

}

voidprint(structstudentstu[])

{inti;

printf("Theinformationofstudentsis:

\n");

printf("numnameComputerMathEnglish\n");

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

{

printf("%2d%8s%8d%8d%8d\n",stu[i].num,stu[i].name,stu[i].Computer,

stu[i].Maths,stu[i].English);

}

}

voidmain()

{input(stu);

print(stu);

}

 

3.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数,并将统计结果输出到磁盘文件“test”中保存。

#include

voidmain()

{FILE*fp;

charc;

intl=0,s=0,n=0,o=0;

if((fp=fopen("E:

\\test3","w"))==NULL)

{printf("cannotopen\n");

exit(0);}

while((c=getchar())!

='\n')

{if(c>='a'&&c<='z'||c>='A'&&c<='Z')l++;

elseif(c=='')s++;

elseif(c>='0'&&c<='9')n++;

elseo++;

}

printf("letters=%d,space=%d,number=%d,other=%d\n",l,s,n,o);

fprintf(fp,"letters=%d,space=%d,number=%d,other=%d\n",l,s,n,o);

fclose(fp);

}

 

4.有4名学生,每个学生考4门课,要求:

写2个函数:

(1)返回值为总平均分的函数

(2)返回值为最低分的函数。

在main()函数中输入每个学生4门课的成绩,调用以上2个函数,输出总平均分和最低分。

#include

voidmain()

{floataverage(inta[][4]);

intmin(inta[][4]);

inti,j,score[4][4];

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

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

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

average(score);

min(score);

printf("average=%5.2f,min=%5d\n",

average(score),min(score));

}

floataverage(inta[][4])

{inti,j;

intsum=0;

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

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

sum+=a[i][j];

return(sum/16);

}

intmin(inta[][4])

{inti,j;

intmin=a[0][0];

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

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

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

return(min);

}

 

5.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。

要求:

写3个函数:

(1)输入10个数的函数,

(2)交换处理的函数,(3)输出10个数的函数。

在main()函数中调用以上3个函数。

#include

voidinput(inta[])

{inti;

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

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

}

voidfun(inta[])

{inti,j,max,min,t;

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

{max=i;

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

if(a[max]

t=a[max];a[max]=a[9];a[9]=t;

min=i;

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

if(a[min]>a[j])min=j;

t=a[min];a[min]=a[0];a[0]=t;

}

}

voidoutput(inta[])

{inti;

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

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

printf("\n");

}

voidmain()

{intnum[10];

input(num);

fun(num);

output(num);

}

7.有一数列,包含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

voidmain()

{voidchange(int*p,intn);

inta[10]={2,4,6,8,10,12,14,16,18,20};

inti;

change(&a[3],5);

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

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

}

voidchange(int*p,intn)

{

inti,t,*p1,*p2;

for(i=0;i

{p1=p+i;

p2=p+n-1-i;

t=*p1;

*p1=*p2;

*p2=t;

}

}

8.编写函数voidsort(inta[],intn),其功能是对a数组中前n个元素从小到大排序。

要求:

在main中输入a数组的10个元素;调用函数sort实现对a数组的排序;输出排序后的各元素。

#include

voidmain()

{voidsort(inta[],intn);

inti,j,n,aa[10];

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

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

scanf("%d",&n);

sort(aa,n);

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

printf("%d,",aa[i]);

printf("\n");

}

voidsort(inta[],intn)

{

inti,j,t,min;

for(i=0;i

{

min=i;

for(j=i+1;j

if(a[min]>a[j])min=j;

t=a[min];a[min]=a[i];a[i]=t;

}

}

9.编写一个函数voidinvert(intx[],intk,intj),其功能是:

按逆序重新放置x数组中下标k~j的元素。

在main函数中从键盘输入x数组元素,调用invert函数输出结果。

#include

#defineN10

voidmain()

{voidinvert(intx[],intk,intj);

intx[N],i;

for(i=0;i

scanf(%d",x[i]);

invert(x,2,8);

for(i=0;i

printf("%d",x[i]);

}

voidinvert(intx[],intk,intj)

{inti,t;

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

{t=x[k];

x[k]=x[j];

x[j]=t;

k++;

j--;

}

}

 

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

#include

voidmain()

{FILE*fp;

inti,j,t,lie,max,a[3][4];

if((fp=fopen("f:

\\DATA10.DAT","w"))==NULL)

{printf("connotopen\n");

exit(0);}

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];

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

if(max

{max=a[i][j];

lie=j;}

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

}

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

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

{printf("%4d",a[i][j]);

fprintf(fp,"%4d",a[i][j]);}

printf("\n");

fprintf(fp,"\n");}

fclose(fp);

}

 

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

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

要求:

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

例如:

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

#include

#include

voidmain()

{voidfun(chars[],charch);

charstr[81],c;

gets(str);

scanf("%s",&c);

fun(str,c);

puts(str);

}

voidfun(chars[],charch)

{inti,j;

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

='\0';i++)

if(s[i]!

=ch)

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

s[j]='\0';

}

 

12.编程:

在N行M列的二维数组中选出最大值,输出最大值及所在的行下标和列下标并保存到文件“DATA.DAT”中。

#include

#defineN3

#defineM4

voidmain()

{FILE*fp;

inti,j,max,a[N][M],hang,lie;

if((fp=fopen("E:

\\DATA12.DAT","w"))==NULL)

{printf("cannotopen\n");

exit(0);}

for(i=0;i

for(j=0;j

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

max=a[0][0];

for(i=0;i

for(j=0;j

if(max

{max=a[i][j];

hang=i;lie=j;}

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

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

printf("hang=%d,lie=%d\n",++hang,++lie);

fprintf(fp,"hang=%d,lie=%d\n",++hang,++lie);

fclose(fp);

}

 

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

要求:

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

例如:

输入admda,则输出admda:

yes;输入abcdabc,则输出abcdabc:

No。

#include"stdio.h"

#include"string.h"

main()

{intfun(charstr[]);

charstr[81];

scanf("%s",str);

if(fun(str))

printf("%syes\n",str);

else

printf("%sno\n",str);

}

intfun(charstr[])

{inti,j;

j=strlen(str)-1;

for(i=0;i

if(str[i]!

=str[j])

return(0);

return

(1);}

 

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

要求:

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

#include

#include

voidmain()

{

intprime(intn);

inta[50],i,k=0;

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

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

for(i=0;i

}

intprime(intn)

{

inti,k=sqrt(n);

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

if(n%i==0)break;

if(i>k)return1;

elsereturn0;

}

 

15.函数intflag(intx0,intx1,intd[])的功能是:

找出x0至x1之间所有能被3整除的数存入d数组中,返回d数组中元素的个数。

编写main函数,调用flag函数求出15~50之间所有满足条件的整数。

#include

voidmain()

{intflag(intx0,intx1,intd[]);

intn,i,a[30];

n=flag(15,50,a);

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

for(i=0;i

printf("%4d",a[i]);

printf("\n");

}

intflag(intx0,intx1,intd[])

{inti,k=0;

for(i=x0;i<=x1;i++)

if(i%3==0)

d[k++]=i;

return(k);

}

 

16.编程:

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

#include

#include

#defineN10

voidmain()

{FILE*fp;

chara[N][80];

inti,t[N],max;

if((fp=fopen("E:

\\DATA16.DAT","w"))==NULL)

{printf("cannotopen\n");

exit(0);}

for(i=0;i

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

for(i=0;i

t[i]=strlen(a[i]);

max=t[0];

for(i=0;i

if(max

max=t[i];

for(i=0;i

if(strlen(a[i])==max)

{printf("%s",a[i]);

fprintf(fp,"%s",a[i]);}

fclose(fp);

}

 

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

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

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

#include

voidmain()

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

inti,aa[10],bb[10],x;

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

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

x=fun(aa,10,bb);

for(i=0;i

printf("%d",bb[i]);

printf("\nx=%d\n",x);

}

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

{inti,j,sum=0,aver;

for(i=0;i

sum=sum+a[i];

aver=sum/n;

for(i=0,j=0;i

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

return(j);

}

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

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

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

#include

voidmain()

{

voidmove(inta[],intn,intm);

intaa[10]={1,2,3,4,5,6,7,8,9,0},i,m;

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

printf("\n");

printf("pleaseinputm(m<=10):

");

scanf("%d",&m);

move(aa,10,m);

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

printf("\n");

}

voidmove(inta[],intn,intm)

{

inti,t[10];

for(i=0;i

for(i=n-1;i>=m;i--)a[i]=a[i-m];

for(i=0;i

}

 

19.函数voidfun(charstr[])的功能是:

删除字符数组str中的非字母字符。

编写main函数,从键盘输入一个字符串,调用fun函数,输出删除了非字母字符后的字符串。

#include

#include

voidmain()

{

voidfun(charstr[]);

charc,s[80];

inti=0;

for(;(c=getchar())!

='\n';)

s[i++]=c;

s[i]='\0';

fun(s);

}

voidfun(charstr[])

{inti,t,n;

charc[80];

n=strlen(str);

for(i=0,t=0;i

if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z')

c[t++]=str[i];

c[t]='\0';

puts(c);

}

 

20.编程:

找出10个整数中的最大数并与第一个数交换位置,找出最小数与最后一个数交换位置,将变换后的结果写入文件dat.txt中。

#include

voidmain()

{FILE*fp;

inti,j,a[10],t,max,min;

if((fp=fopen("E:

\\DATA1.DAT","w"))==NULL)

{printf("cannotopen\n");

exit(0);}

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

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

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

{max=i;

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

if(a[max]

t=a[max];a[max]=a[9];a[9]=t;

min=i;

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

if(a[min]>a[j])min=j;

t=a[min];a[min]=a[0];a[0]=t;

}

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

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

fprintf(fp,"%d,",a[i]);}

printf("\n");

fprin

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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