C程序设计详解_第1页
C程序设计详解_第2页
C程序设计详解_第3页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安阳工学院12级C程序设计答案第一题:.输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include<stdio.h>intmain()(intmin(inta,intb);intmax(inta,intb);inta,b;printf("请输入两个数:”);scanf("%d%d",&a,&b);printf("%d,%d的最大公约数为:dn”,a,b,max(a,b);printf("%d,%d的最小公倍数为:%dn",a,b,min(a,b);re

2、turn0;intmin(inta,intb)(inti;for(i=a;i<=a*b;i+)if(i%a=0&&i%b=0)break;returni;intmax(inta,intb)(inti,c=0;for(i=1;i<=a;i+)if(a%i=0&&b%i=0)c=i;returnc;第二题:输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#include<stdio.h>intmain()(intzd(inta,intb,intc,intd);inta,b,c,d;printf("请输入四个整数:"

3、);scanf("%d%d%d%d”,&a,&b,&c,&d);printf("%d,%d,%d,%d中的最大值为:%dn”,a,b,c,d,zd(a,b,c,d);return0;intzd(inta,intb,intc,intd)(inttt(inta,intb);return(tt(tt(tt(a,b),c),d);inttt(inta,intb)(intc;if(a>b)c=a;elsec=b;returnc;第三题:用递归调用的方法求5!。#include<stdio.h>intmain()(intjc(inta)

4、;intb=5;printf("%d!=%dn",b,jc(b);return0;intjc(inta)intb;if(a=1)b=1;elseb=a*jc(a-1);returnb;第四题:按以下递归公式求函数的值。fun(n)10fun(n1)2(n1)(n1)例如,当给n输入5时,函数值为18,(要求用递归实现)#include<stdio.h>intmain()intfun(inta);intn;printf("请输入n:");scanf(”d”,&n);printf("fun(%d)=%dn”,n,fun(n);r

5、eturn0;intfun(inta)intb;if(a=1)b=10;elseb=fun(a-1)+2;returnb;第五题:用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483n的位数不确定,可以是任意位数的整数。#include<stdio.h>#include<string.h>intmain()voiddg(chara,longn,intb);chara20,b;longn;intm,i;printf("请输入n:");scanf("%ld",&n);dg(a,n,0);m=strlen(a

6、);for(i=0;i<m/2;i+)b=am-i-1;am-i-1=ai;ai=b;printf("%sn",a);return0;voiddg(chara,longn,intb)longc,d;if(n<10)ab='0'+n;ab+1='0'else(ab=n%10+'0'dg(a,n/10,b+1);第六题:写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。#include<stdio.h>intmain()(voidnn(inta,i

7、ntn);inta20,i,n;printf("请输入n:");scanf("%d",&n);printf("请输入d个数的数组:n”,n);for(i=0;i<n;i+)scanf("%d",&ai);nn(a,n);printf("倒序存放为:n");for(i=0;i<n;i+)printf("%d",ai);printf("n");return0;voidnn(inta,intn)inti,m;for(i=0;i<n/2;i

8、+)m=an-i-1;an-i-1=ai;ai=m;第七题:编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。#include<stdio.h>intmain()(floattt(inta,intb);inta5,b10,i;printf("请输入五个数字的数组:n");for(i=0;i<5;i+)scanf("%d”,&ai);printf("请输入十个数字的数组:n");for(i=0;i<10;i+)scanf("%d",&am

9、p;bi);printf("五个数字的数组的平均数为:%5.2fn十个数的数组的平均数为:%5.2fn",tt(a,5),tt(b,10);return0;floattt(inta,intb)(floats=0;inti;for(i=0;i<b;i+)s=s+ai;returns/b;第/k题:编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。#include<stdio.h>intmain()(voidtt(chara,charb);chara50,b50;printf("请输入两个字符数

10、组:n");gets(a);gets(b);printf("把两个数组连起来为:n”);tt(a,b);puts(a);return0;voidtt(chara,charb)(inti,j;for(i=0;ai!='0'i+);for(j=0;bj!='0'j+,i+)第九题:编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。#include<stdio.h>intmain()inttt(chara,charb);chara50,b50;intn;printf("请输入两个字符申

11、a,b:n");gets(a);gets(b);n=tt(a,b);if(n=0)printf("相等n");elseif(n>0)printf("a>bn");elseprintf("a<bn");return0;inttt(chara,charb)(inti=0;while(ai=bi)(if(ai='0'&&bi='0')break;elsei+;returnai-bi;第十题:编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能,并在main

12、函数中调用此函数,输入数据和最后输出都在主函数中实现。#include<stdio.h>intmain()(voidtt(inta,intb);inta11=10,20,30,40,50,60,70,80,90,100,i,n;printf("原升序整型数组为:n");for(i=0;i<10;i+)printf("%d",ai);printf("n请输入一个整数n:");scanf("%d",&n);tt(a,n);printf("n插入后数组为:n");for(i=

13、0;i<11;i+)printf("%d",ai);printf("n");return0;voidtt(inta,intb)inti,c;for(i=0;i<11;i+)if(b>=a9)a10=b;elseif(b<ai)(c=ai;ai=b;b=c;第一题:写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。#include<stdio.h>intmain()(inttt(inta);intn;printf("请输入一个整数n:");scanf

14、("%d",&n);if(tt(n)=1)printf("yesn");elseprintf("non");return0;inttt(inta)(inti,n=1;for(i=2;i<a;i+)if(a%i=0)(n=0;break;returnn;第十二题:编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#include<stdio.h>intmain()(voidtt(chara,charb);chara100,b40;pri

15、ntf("请输入一个字符申:n");gets(a);tt(a,b);printf("字符$%s中元音字母有:n%sn",a,b);return0;voidtt(chara,charb)(inti,j;for(i=0,j=0;ai!='0'i+)if(ai='a'|ai='e'|ai='i'|ai='o'|ai='u'|ai='A'|ai='E'|ai=T|ai='O'|ai='U')bj+=ai;

16、bj='0'第十三题:建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。#include<stdio.h>#include<stdlib.h>intmain()(inttt(float*a,float*b);float*a,*b;inti,n;a=(float*)malloc(5*sizeof(float);b=(float*)malloc(5*sizeof(float);printf("请输入五个人的成绩:n");for(i=0;i<5;i+)scanf("

17、%f",a+i);n=tt(a,b);if(n=0)printf("无低丁60分的n");elsefor(i=0;i<n;i+)printf("%5.2f",*(b+i);printf("n");return0;inttt(float*a,float*b)inti,j=0;for(i=0;i<5;i+)if(*(a+i)<60)bj+=ai;returnj;第十四题:有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。#in

18、clude<stdio.h>intmain()inttt(floata,floatb,intc);intn,c10,i;floata10,b10;printf("请输入十个学生的成绩:n");for(i=0;i<10;i+)scanf("%f",&ai);n=tt(a,b,c);printf("不及格的数组的序号为:n");for(i=0;i<n;i+)printf("%d",ci);printf("n不及格的分数为:n");for(i=0;i<n;i+)p

19、rintf("%5.2f",bi);printf("n");return0;inttt(floata,floatb,intc)(inti,j;for(i=0,j=0;i<10;i+)if(ai<60)(bj=ai;cj=i;j+;returnj;个字符串中出现第十五题:编程实现:从键盘输入两个字符串,统计第二个字符串在第的次数,在主函数中调用统计函数并输出结果。#include<stdio.h>intmain()(inttt(chara,charb);chara100,b30;printf(-请输入两个字符申:n");g

20、ets(a);gets(b);printf("b在a中出现的次数为:%dn",tt(a,b);return0;inttt(chara,charb)inti,c=0,d=0,j=0;for(i=0;ai!='n'i+)if(d=1&&bj='0')c+;j=0;if(ai=bj)d=1;j+;else(d=0;j=0;if(d=1&&bj='0')c+;returnc;第十六题:编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。如:输入"Iamastudent!”,输出&

21、quot;Iamastudent!”,要求用指针实现。#include<stdio.h>intmain()(char*a,b50;inti,j;printf("请输入一个字符申:n");gets(b);a=b;for(i=0;*(a+i)!='0'i+)if(*(a+i)='')for(j=i;*(a+j)!='0'j+)*(a+j)=*(a+j+1);printf(-去掉空格后为:n");puts(a);return0;第十七题:.用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)#in

22、clude<stdio.h>intmain()voidtt(int*a,intb);int*a,b10,i;a=b;printf(-请输入十个整数:n");for(i=0;i<10;i+)scanf("%d",a+);a=b;tt(a,10);printf("n十个数从大到小顺序为:n");for(i=0;i<10;i+)printf("%d",*(a+i);printf("n");return0;voidtt(int*a,intb)inti,j,n;for(i=0;i<10

23、;i+)for(j=0;j<b-i-1;j+)if(aj<aj+1)n=aj+1;aj+1=aj;aj=n;第十/k题:用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)#include<stdio.h>intmain()(voidtt(int*a,intb);int*a,b10,i;a=b;printf("请输入十个整数:n");for(i=0;i<10;i+)scanf("%d",a+);a=b;tt(a,10);printf("n十个数从小到大顺序为:n");for(i=0;i<

24、;10;i+)printf("%d",*(a+i);printf("n");return0;voidtt(int*a,intb)(inti,j,n;for(i=0;i<10;i+)for(j=i+1;j<b;j+)if(ai>aj)(n=aj;aj=ai;ai=n;第十九题:编写一个函数实现字符串复制功能,不能使用strcpy函数,并在main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。(要求用指针作为函数参数)#include<stdio.h>intmain()(voidtt(chara,charb)

25、;chara50,b50;printf("请输出一个字符申a:n");gets(a);tt(b,a);printf("吧a赋值给b得b为:n");puts(b);return0;voidtt(chara,charb)(inti;for(i=0;bi!='0'i+)ai=bi;ai='0'并输出其长度。第二十题:写一函数,求一个字符串的长度。在main函数中输入字符串,(要求用指针实现)#include<stdio.h>intmain()(inttt(chara);chara100;printf("请输

26、入一个字符申:n");gets(a);printf("字符申a的长度为:%dn",tt(a);return0;inttt(chara)(inti;for(i=0;ai!='0'i+);returni;第二一题:输入一个字符串,内有数字和非数字字符,例如:“A123x45617960?302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。例如,123放在a0,456放在a1统计共有多少个整数,并输出这些数。(要求用指针实现)#include<stdio.h>intmain()(inttt(char*a,int*b);

27、inti,n,*b,d20;char*a,c100;b=d;a=c;printf("请输入一个字符申:n");gets(a);n=tt(a,b);printf(-一共有d个整数它们分另U为:n",n);for(i=0;i<n;i+)printf("%d",bi);printf("n");return0;inttt(char*a,int*b)inti,n=0,m=0,p=1;b0=0;for(i=0;ai!='0'i+)if(ai>='0'&&ai<='

28、9')bm=bm*p+(ai-'0');p=10;n=1;elseif(n=1)m+;n=0;p=1;bm=0;if(n=1)m+;returnm;第二十二题:有一篇文章,共有4行文章,每行有60个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。(要求用指针实现)#include<stdio.h>intmain()char(*a)60,b460;intj,i,c=0,d=0,e=0,f=0,g=0;printf("请输入入四行文章每行60个字符:n");for(i=0;i<4;i+)gets(bi);a

29、=b;for(i=0;i<4;i+)for(j=0;j<60;j+)(if(aij>='A'&&aij<='Z')c+;elseif(aij>='a'&&aij<='z')d+;elseif(aij>='0'&&aij<='9')e+;elseif(aij='')f+;elseg+;printf("大写字母有d个n小写字母有d个n数字有d个n空格有%d个n其他字符有%d个n&qu

30、ot;,c,d,e,f,g);return0;第二十三题:编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。(要求用指针知识实现)#include<stdio.h>#include<string.h>intmain()(charb1050,*c,(*a)50;inti;a=b;printf("请输入十个字符申:n");for(i=0;i<10;i+)gets(ai);c=b0;for(i=1;i<10;i+)(if(strlen(ai)>strlen(c)c=ai;printf("最长的是:n%sn"

31、,c);return0;第二十四题:利用函数实现如下功能:从键盘输入任意个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。(自定义函数voidfun(intx,int*pp,int*n)。#include<stdio.h>intmain()(voidfun(intx,int*pp,int*n);intx,i,a20,*pp,b,*n;pp=a;n=&b;printf("请输入整数x:");scanf("%d",&x);fun(x,pp,n);printf("%d共有%d

32、个偶数因子它们分别为:n",x,*n);for(i=0;i<*n;i+)printf("%d",ppi);printf("n");return0;voidfun(intx,int*pp,int*n)(inti,j=0;*n=0;for(i=2;i<x;i+)if(x%i=0&&i%2=0)(ppj+=i;*n=*n+1;第二十五题:编写一个函数,实现求出一个2维数组中的鞍点,并在main函数中调用此函数,2维数组中数据输入和鞍点数据输出都在主函数中实现。(鞍点是指某个数在该行上最大,同时在该列上最小)#include

33、<stdio.h>intmain()(inttt(int(*a)4);inti,j,(*a)4,b44,c=0;printf("请输入一个4*4的二维数组:n");a=b;for(i=0;i<4;i+)for(j=0;j<4;j+)scanf("d”,&bij);c=tt(a);if(c=0)printf(-不存在鞍点n");elseprintf(-鞍点为:%dn",c);return0;inttt(int(*a)4)inti,j,k,n=0,m;for(i=0;i<4;i+)k=0;m=ai0;for(j

34、=1;j<4;j+)if(aij>m)m=aij;k=j;for(j=0;j<4;j+)if(ajk<m)break;if(j=4)n=m;returnn;第二十六题:输入3个学生4门课的成绩,分别用函数实现如下功能:(1)计算每个学生平均分;(2) 计算每门课的平均分;(3) 找出12个分数中最高分所对应的学生和课程。#include<stdio.h>intmain()structstudentchara10;floatb5;c3;inti,j,n=0,m=1;floatk;printf(-请输入三个学生的姓名和成绩n姓名成绩n");for(i=

35、0;i<3;i+)(ci.b0=0;scanf("s%f%f%f%f',ci.a,&ci.b1,&ci.b2,&ci.b3,&ci.b4);k=c0.b1;for(i=0;i<3;i+)(for(j=1;j<5;j+)(ci.b0=ci.b0+ci.bj;if(ci.bj>k)(n=i;m=j;k=ci.bj;ci.b0=ci.b0/4;printf(-平均成绩分别为:n");printf("%sfor(i=0;i<3;i+)%5.2fn",ci.a,ci.b0);printf(&qu

36、ot;最高分是s的第%d科%5.2f分n",cn.a,m,k);return0;第二十七题:用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。#include<stdio.h>intmain()voidtt(chara,charb);chara200,b40;printf("请输入一行字符申:n");gets(a);tt(a,b);printf("最长的单词为:,puts(b);return0;voidtt(chara,charb)inti,j=0,k30,m=0,n=0,o,p30,q;for(i=0;ai!=&

37、#39;0'i+)(if(ai<='Z'&&ai>='A')|(ai<='z'&&ai>='a')m+;else(kj=m;Pj=i;j+;m=0;n+;if(m!=0)(kj=m;Pj=i;j+;n+;m=0;q=k0;for(i=1;i<n;i+)if(ki>q)q=ki;j=i;for(i=pj-q;i<pj;i+)bm+=ai;bm='0'第二十八题:有3个学生,各学4门课程,输出总平均分数以及第n个学生的所有成绩。(要求定义

38、两个函数分别实现上述功能,用指针作为函数参数#include<stdio.h>intmain()floattt(float(*)4);voidt(float(*a)4,intn);floatb34,(*a)4;inti,j,n;printf("请输入三个学生的成绩每个人四门课程:n");for(i=0;i<3;i+)for(j=0;j<4;j+)scanf("%f",&bij);printf("请输入n的数值:");scanf("%d",&n);a=b;printf(&quo

39、t;所有成绩的平均数为:%5.2fn",tt(a);t(a,n-1);return0;floattt(float(*a)4)floats=0.0;inti,j;for(i=0;i<3;i+)for(j=0;j<4;j+)s=s+aij;returns/12;voidt(float(*a)4,intn)inti;printf("第%d个人的全部成绩为:n",n+1);for(i=0;i<4;i+)printf("%5.2f',ani);printf("n");第二十九题:有3个学生,每个学生有4门课程的成绩,要

40、求在用户输入学生学号以后,能输出该学生的全部成绩。(用指针函数知识实现)#include<stdio.h>intmain()(structstudent(doublen;floatb4;a3;inti,j;doublem;printf("请输入学生信息n学号分数n");for(i=0;i<3;i+)scanf("%ld%f%f%f%f",&ai.n,&ai.b0,&ai.b1,&ai.b2,&ai.b3);printf("请输入一个学生的学号:");scanf("%l

41、d",&m);printf("学号为%ld的学生的全部成绩为:n”,m);for(i=0;i<3;i+)if(m=ai.n)printf("%5.2f%5.2f%5.2f%5.2fn",ai.b0,ai.b1,ai.b2,ai.b3);return0;第三十题:定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#include<stdio.h>intmain()structttintn;inty;intr;a;inti,s=0;printf("请输入n年月日n");scanf(&q

42、uot;%d%d%d",&a.n,&a.y,&a.r);if(a.n%400=0|(a.n%4=0&&a.n%100!=0)for(i=1;i<a.y;i+)if(i=2)s=s+29;elseif(i=1|i=3|i=5|i=7|i=8|i=10|i=12)s=s+31;elses=s+30;elsefor(i=1;i<a.y;i+)if(i=2)s=s+28;elseif(i=1|i=3|i=5|i=7|i=8|i=10|i=12)s=s+31;elses=s+30;s=s+a.r;printf("%d年%d月%d日是

43、这年的第%d天n",a.n,a.y,a.r,s);return0;第三十一题:设计候选人得票统计程序,要求有4个侯选人(分别是Zhang、WangLi、Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include<stdio.h>#include<string.h>intmain()structttcharnm10;inta;b4="Zhang”,0,"Wang”,0,"Li”,0,"Zhao”,0;inti,j;charc10;printf("请输入10张选票:n");for

44、(i=0;i<10;i+)gets(c);for(j=0;j<4;j+)(if(strcmp(c,bj.nm)=0)bj.a+;printf(-得票数分别为:n");for(i=0;i<4;i+)printf("%-10s%-5dn”,bi.nm,bi.a);return0;第三十二题:定义一个包括学号、姓名、成绩的学生结构体,要求实现输入3个学生信息的输入后,按照成绩的高低顺序输出各学生的信息。#include<stdio.h>intmain()(structstudent(doublexh;charnm10;floatfs;a3,b;int

45、i,j;printf("请输入三个学生的信息n学号姓名分数n");for(i=0;i<3;i+)scanf("%ld%s%f",&ai.xh,ai.nm,&ai.fs);for(i=0;i<3;i+)for(j=i+1;j<3;j+)if(ai.fs<aj.fs)b=aj;aj=ai;ai=b;printf(-从高到底的顺序为:n");for(i=0;i<3;i+)printf("%ld",ai.xh);printf("%-10s%5.2fn”,ai.nm,ai.fs);return0;第三十三题:有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出平均成绩最高分的学生的信息(包括学号、姓名、3门课程成绩、平均分数)(用结构体知识)。#include<stdio.h>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论