欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

c程序设计期末复习题程序题4

  • 资源ID:146778536       资源大小:147.50KB        全文页数:29页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

c程序设计期末复习题程序题4

C语言程序设计复习题一、 基础程序【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码:main()int i,j,k;printf("n");for(i=1;i<5;i+)*以下为三重循环*/for(j=1;j<5;j+)for (k=1;k<5;k+)if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%dn",i,j,k);=【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:main()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus); =【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include "math.h"main()long int i,x,y,z;for (i=1;i<100000;i+) x=sqrt(i+100); /*x为加上100后开方后的结果*/y=sqrt(i+268); /*y为再加上168后开方后的结果*/if(x*x=i+100&&y*y=i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/printf("n%ldn",i);=【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。2.程序源代码:main()int day,month,year,sum,leap;printf("nplease input year,month,dayn");scanf("%d,%d,%d",&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;sum=sum+day; /*再加上某天的天数*/if(year%400=0|(year%4=0&&year%100!=0)/*判断是不是闰年*/leap=1;elseleap=0;if(leap=1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf("It is the %dth day.",sum);=【程序5】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/* zheng int is divided yinshu*/main()int n,i;printf("nplease input a number:n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i+)while(n!=i)if(n%i=0) printf("%d*",i);n=n/i;elsebreak;printf("%d",n);=【程序6】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.2.程序源代码:main()long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i+) printf("%12ld %12ld",f1,f2);if(i%2=0) printf("n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/=【程序7】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码:#include "math.h"main()int m,i,k,h=0,leap=1;printf("n");for(m=101;m<=200;m+) k=sqrt(m+1);for(i=2;i<=k;i+)if(m%i=0)leap=0;break;if(leap) printf("%-4d",m);h+;if(h%10=0)printf("n"); leap=1;printf("nThe total is %d",h);=【程序8】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main()int i,j,k,n;printf("'water flower'number is:");for(n=100;n<1000;n+)i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf("%-5d",n);printf("n");=【程序9】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:main()float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n+)sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/printf("the total of road is %fn",sn);printf("the tenth is %f metern",hn);【程序10】题目:809*?=800*?+9*?+1 其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809*?后的结果。1.程序分析:2.程序源代码:output(long b,long i) printf("n%ld/%ld=809*%ld+%ld",b,i,i,b%i);main()long int a,b,i;a=809;for(i=10;i<100;i+)b=i*a+1;if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)output(b,i); =【程序11】题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码:main()char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/for(i='x'i<='z'i+)for(j='x'j<='z'j+)if(i!=j)for(k='x'k<='z'k+) if(i!=k&&j!=k) if(i!='x'&&k!='x'&&k!='z')printf("order is a-%ctb-%ctc-%cn",i,j,k);=【程序12】 题目:求1+2!+3!+.+20!的和1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码:main()float n,s=0,t=1;for(n=1;n<=20;n+)t*=n;s+=t;printf("1+2!+3!.+20!=%en",s);=【程序13】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。2.程序源代码:#include <stdio.h>void main()char letter;printf("please input the first letter of somedayn");while (letter=getch()!='Y')/*当所按字母为Y时才结束*/ switch (letter)case 'S':printf("please input second lettern");if(letter=getch()='a')printf("saturdayn");else if (letter=getch()='u')printf("sundayn");else printf("data errorn");break;case 'F':printf("fridayn");break;case 'M':printf("mondayn");break;case 'T':printf("please input second lettern");if(letter=getch()='u')printf("tuesdayn");else if (letter=getch()='h')printf("thursdayn");else printf("data errorn");break;case 'W':printf("wednesdayn");break;default: printf("data errorn");=【程序14】题目:八进制转换为十进制1.程序分析:2.程序源代码:main() char *p,s6;int n;p=s;gets(p);n=0;while(*(p)!='0')n=n*8+*p-'0'p+;printf("%d",n);=【程序15】题目:求07所能组成的奇数个数。1.程序分析:2.程序源代码:main()long sum=4,s=4;int j;for(j=2;j<=8;j+)/*j is place of number*/ printf("n%ld",sum);if(j<=2)s*=7;elses*=8;sum+=s;printf("nsum=%ld",sum);=【程序16】题目:一个偶数总能表示为两个素数之和。1.程序分析:2.程序源代码:#include "stdio.h"#include "math.h"main() int a,b,c,d;scanf("%d",&a);for(b=3;b<=a/2;b+=2) for(c=2;c<=sqrt(b);c+)if(b%c=0) break;if(c>sqrt(b)d=a-b;elsebreak;for(c=2;c<=sqrt(d);c+)if(d%c=0) break;if(c>sqrt(d)printf("%d=%d+%dn",a,b,d);=二、 关于数组的程序:【程序1】计算字符串中子串出现的次数1.程序分析:2.程序源代码:#include "string.h"#include "stdio.h"main() char str120,str220,*p1,*p2;int sum=0;printf("please input two stringsn");scanf("%s%s",str1,str2);p1=str1;p2=str2;while(*p1!='0')if(*p1=*p2)while(*p1=*p2&&*p2!='0')p1+;p2+;elsep1+;if(*p2='0')sum+;p2=str2;printf("%d",sum);getch(); =【程序2】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。1.程序分析:2.程序源代码:main()int a,i,aa4,t;scanf("%d",&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=a/1000;for(i=0;i<=3;i+)aai+=5;aai%=10;for(i=0;i<=3/2;i+)t=aai;aai=aa3-i;aa3-i=t;for(i=3;i>=0;i-)printf("%d",aai);=【程序3】题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数1.程序分析:2.程序源代码:main()int number20,n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i+)scanf("%d,",&numberi);scanf("%d",&numbern-1);move(number,n,m);for(i=0;i<n-1;i+)printf("%d,",numberi);printf("%d",numbern-1);move(array,n,m)int n,m,array20;int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p-)*p=*(p-1);*array=array_end;m-;if(m>0) move(array,n,m);=三、 关于指针链表的程序【程序1】题目:反向输出一个链表。1.程序分析:2.程序源代码:/*reverse output a list*/#include "stdlib.h"#include "stdio.h"struct list int data;struct list *next;typedef struct list node;typedef node *link;void main() link ptr,head,tail;int num,i;tail=(link)malloc(sizeof(node);tail->next=NULL;ptr=tail;printf("nplease input 5 data=>n");for(i=0;i<=4;i+)scanf("%d",&num);ptr->data=num;head=(link)malloc(sizeof(node);head->next=ptr;ptr=head;ptr=ptr->next;while(ptr!=NULL) printf("The value is =>%dn",ptr->data);ptr=ptr->next;=【程序2】题目:连接两个链表。1.程序分析:2.程序源代码:#include "stdlib.h"#include "stdio.h"struct list int data;struct list *next;typedef struct list node;typedef node *link;link delete_node(link pointer,link tmp)if (tmp=NULL) /*delete first node*/return pointer->next;else if(tmp->next->next=NULL)/*delete last node*/tmp->next=NULL;else /*delete the other node*/tmp->next=tmp->next->next;return pointer;void selection_sort(link pointer,int num) link tmp,btmp;int i,min;for(i=0;i<num;i+)tmp=pointer;min=tmp->data;btmp=NULL;while(tmp->next) if(min>tmp->next->data)min=tmp->next->data;btmp=tmp;tmp=tmp->next;printf("40: %dn",min);pointer=delete_node(pointer,btmp);link create_list(int array,int num) link tmp1,tmp2,pointer;int i;pointer=(link)malloc(sizeof(node);pointer->data=array0;tmp1=pointer;for(i=1;i<num;i+) tmp2=(link)malloc(sizeof(node);tmp2->next=NULL;tmp2->data=arrayi;tmp1->next=tmp2;tmp1=tmp1->next;return pointer;link concatenate(link pointer1,link pointer2) link tmp;tmp=pointer1;while(tmp->next)tmp=tmp->next;tmp->next=pointer2;return pointer1;void main(void) int arr1=3,12,8,9,11;link ptr;ptr=create_list(arr1,5);selection_sort(ptr,5);=【程序3】题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+.+1/n,当输入n为奇数时,调用函数1/1+1/3+.+1/n(利用指针函数)1.程序分析:2.程序源代码:main()#include "stdio.h"main()float peven(),podd(),dcall();float sum;int n;while (1)scanf("%d",&n);if(n>1)break;if(n%2=0)printf("Even=");sum=dcall(peven,n);elseprintf("Odd=");sum=dcall(podd,n);printf("%f",sum);float peven(int n)float s;int i;s=1;for(i=2;i<=n;i+=2)s+=1/(float)i;return(s);float podd(n)int n;float s;int i;s=0;for(i=1;i<=n;i+=2)s+=1/(float)i;return(s);float dcall(fp,n)float (*fp)();int n;float s;s=(*fp)(n);return(s);=四、 关于文件保存的程序【程序1】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。1.程序分析:2.程序源代码:#include "stdio.h"main() FILE *fp;int i,j,n,ni;char c160,t,ch;if(fp=fopen("A","r")=NULL)printf("file A cannot be openedn");exit(0);printf("n A contents are :n");for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);ni=i;if(fp=fopen("B","r")=NULL)printf("file B cannot be openedn");exit(0);printf("n B contents are :n");for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);n=i;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(ci>cj)t=ci;ci=cj;cj=t;printf("n C file is:n");fp=fopen("C","w");for(i=0;i<n;i+) putc(ci,fp);putchar(ci);fclose(fp);=五、 基础题六、 参考练习题1 编写程序,求解一元二次方程ax2+bx+c=0的根,要求考虑a=0,及方程有实数根与复数根的情况。2 输入一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数。3 一个数如果恰好等于它的因子之和,这个数称为“完数”,例如6=1+2+3;因此6是完数,编程序找出1000之内的所有完数。4 输入两整数,求他们的最大公约数和最小公倍数。5 输出下列图形 a a b a b c . . a b c z6 输入一串字符,以?结束,分别统计其中每个数字字符0,1, 9出现的次数。7 输入20个数,将它们从小到大排序后输出。并给出每个元素所对应的原来的次序。例:输入 27,3,25,14,39 输出 3 214 425 326 139 58 输入6行6列的矩阵a,然后1). 输出矩阵a2). 将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三角中的每个元素减1,形成新的矩阵并输出。3). 找出新矩阵a中绝对值最大的元素及其所在的行、列位置并输出。9 编写一程序,将两个字符串连接起来,不要用strcat函数。 10 写一个判素数的函数,在主函数中输入一整数,输出是否是素数的信息。11 定义一个函数 int check(n, d) ,它返回一个逻辑值,如果数字d在整数n的某位中出现,返回1,否则返回0,例如 check(3256,2)=1; check(1725,3)=0; 12 有15个数按照值的升序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。已知15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。13 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及具有最高平均分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。14 用两个同样长度的一维数组表示两个向量,编写函数,求两个向量的和,两个向量由参数带入,和向量由返回值给出。15 设有一个整数文件,对文件中的整数求和,并计算平均值输出。16 写一个函数,将一个3*3的整形矩阵转置。17 定义一个结构体变量存放日期(包括年、月、日),写一个函数days计算该日在本年中是第几天,注意闰年问题。由主函数将一个日期传递给days函数,计算后的日子数返回给主函数输出。18 有一个磁盘文件存放了职工的数据,职工的数据包括:职工号,姓名,性别,年龄,住址,工资,健康状况,文化程度,今要求只将职工的姓名、工资数据抽出另建一个简明的职工工资文件。19 定义链表数据节点的结构是一个字符数据域加一个指针数据域,从键盘读入一串字符,以?号结束,将读入字符组成先进先出链表并输出(所谓先进先出是指链表结点中字符的存放顺序是按字符的读入顺序存放的,新读入的字符放在链表的表尾)20 定义链表数据节点的结构是一个字符数据域加一个指针数据域,从键盘读入一串字符,以?号结束,将读入字符组成后进先出链表并输出(所谓后进先出是指链表结点中字符的存放顺序是按字符的读入顺序的逆序存放的,新读入的字符放在链表的表头)21 写一个函数输出链表中的数据域值。设链表中只有一个字符数据域,将链表中数据域值按照从表头到表尾的顺序输出。函数的带入参数是链表的表头指针。22 输入一个年份,判断该年度是否为闰年(用函数完成),输入输出在主函数完成。闰年识别条件:年份可以被400整除或者可被4整除但不能被100整除。23 定义一个包含10个元素的一维数组,从键盘上读入数组初始值,并编写程序将数组中的元素逆序输出。24 有200个正整数,且每个数均在1000至9999之间存放在数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。25 已知两个串为 s1="bc cad cabcadf",s2="abc",试求两个串的长度,并判断s2串是否是s1串的子串;如果s2是s1的子串,请指出s2在s1中的起始位置。26 一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj则字符串"encrypt"被加密为"tkzwsdf"。试写一算法将输入的文本串进行加密后输出;另写一算法,将输入的已加密文本串进行解密后输出27 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。28 求01000中能同时被7和13整除的那些数之和。打印输出这个和,不要有其它字符29 请编写一个函数jsValue(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。30 把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg(char *s)实现程序要求,最后把结果输出到文件bc1.c31 读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.c中。替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。32 编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。Xn+1=cos(Xn)迭代步骤如下:(1)取X1初值为0.0;(2)X0=X1,把X1的值赋给X0;(3)X1=cos(X0),求出一个新的X1;(4)若X0-X1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。33 请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s=153.909064。34 在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。35 寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。36 选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。 请考生编写函数countValue( )实现程序要求。37 已知在文件IN.c中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.c中。七、综合资料【程序1】题目:将一个数组中的元素逆序输出。#define N 5main() int aN=9,6,5,4,1,i,temp; printf("n original array:n"); for(i=0; i<N; i+) printf("%4d",ai); for(i=0; i<N/2; i+) temp=ai; ai=aN-i-1; aN-i-1=temp; printf("n sorted array:n"); for(i=0; i<N; i+) printf("%4d", ai);=【程序2】题目:求一个N*N矩阵对角线元素之和 #define N 4main() int aNN, sum=0; int i,j; printf("please input rectangle element:n"); for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%d",&aij); for(i=0;i<N;i+) sum=sum+aii; printf("duijiaoxian he is %8d", sum);=【程序3】下列程序运行后输出结果是void swap (int *p1, int *p2) int temp;temp = *p1;*p1 = *p2;*p2 = temp;main() int a, b;scanf(“%d,%d”,&a,&b);if (a<b)swap (&a , &b);printf(“a=%d,b=%d”n,a,b);输入6,4则输出结果为_/*=*/【程序4】题目:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。main() int a11=1,4,6,9,13,16,19,28,40,100; int temp1, temp2, number, end, i, j; printf("original array is:n"); for(i=0; i<10; i+) printf("%5d",ai); printf("n"); printf("insert a new number:"); scanf("%d",&number); end=a9; if(number>end) a10=number; else for(i=0;i<10;i+) if(ai>number) /*找到插入位置*/ for(j=10; j>i; j-) /*插入点后的元素后移*/ aj= aj-1;ai =number; break; for(i=0;i<11;i+) printf("%6d",ai); 【程序5】题目:用选择法对10个数进行从小到大的排序程序源代码:#define N 10main() int i, j, min, tem, aN; /*input data*/ printf("please input ten num:n"); for(i=0;i<N;i+) printf("a%d=",i); scanf("%d",&ai); /*sort ten num*/for(i=0;i<N-1;i+) min=i; for(j=i+1;j<N;j+) if( amin > aj ) min=j; tem=ai; ai=amin; amin=tem;/*output data*/printf("After sorted n");for(i=0;i<N;i+) printf("%5d",ai);=【程序6】题目:读程序,给出程序的运行结果。#include "stdio.h"#define M 7main() int aM=1,2,3,4,5,6,7; int i,j,t; i=0; j=M-1; while(i < j) t= *(a+i); *(a+i)=*(a+j); *(a+j)=t; i+; j-; for(i=0;i<M;i+) printf("%d",*(a+i);【程序7】题目:设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。#define N 40main() int classN;float sum, ave; int number, i; sum=0; number=0; printf("please enter student score"); for ( i=0 ; i<N ; i+ ) scanf("%d", &classi ); sum += classi; ave= sum/N; for (i=0; i<N; i+) if ( classi<ave)number+; printf("the number of lowed ave is %d",number); /*=*/【程序8】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。main() int len; char str20; printf("please input a string:n"); scanf("%s",str); len=length(str); printf("the string has %d characters.",len);int length(p) char *p; int n; n=0; while(*p!='0' ) n+; p+; return n; 【程序9】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。 #include "stdio.h"main() FILE *fp; char str100; int i=0; if(fp=fopen("test","w")=NULL) printf("cannot open the filen"); exit(0);printf("please input a string:n");gets(str);while(stri!='!') if( stri>='a' && stri<='z' ) stri=stri-32; fputc( stri, fp); i+;

注意事项

本文(c程序设计期末复习题程序题4)为本站会员(仙***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!