C语言程序设计(编程题专项练习)及答案.docx

上传人:太** 文档编号:95708626 上传时间:2023-08-30 格式:DOCX 页数:29 大小:44.83KB
返回 下载 相关 举报
C语言程序设计(编程题专项练习)及答案.docx_第1页
第1页 / 共29页
C语言程序设计(编程题专项练习)及答案.docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《C语言程序设计(编程题专项练习)及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计(编程题专项练习)及答案.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言程序设计(编程题专项练习)及答案(一)一、组数,指针,字符串编程题(每小题5分,共10分)1、编写程序:输入一个百分制成绩,打印出五级记分成绩。考试成绩在90分 或90分以上为优秀,8089分为良好,7079为中等,6069 为及格,低于60分为不及格。2、编写程序:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, 还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只 剩下一个桃子了。求第一天共摘了多少。3、编写程序:将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5。4、编写

2、程序:求一个3*3矩阵对角线元素之和5、编写程序:输入某年某月某日,判断这一天是这一年的第几天?6、编写程序:请输入星期几的第一个字母来判断一下是星期几,如果第一个字 母一样,则继续判断第二个字母。7、编写程序:从键盘上输入一个百分制成绩score,按下列原则输出其等级: score290,等级为 A; 80Wscore90,等级为 B; 70score80,等级为 C; 60score70,等级为 D; score2) / *如果是闰年且月份大于2,总天数应该加一天 SUD1+ ;printf (这是这一年的第%d天。sum);printf(n);)【解析】以3月5日为例,应该先把前两个月的

3、加起来,然后再加上5天即本年的第几 天,特殊情况,闰年且输入月份大于3时需考虑多加一天。6、#includeint main ()char i, j;printf (请输入第一个字母:n);scanf(%c, &i);getcharO ;scanf (枇,&j);的问题,第二次是读入的一个换行符,而不是输入的字 符,因此需要加一个getchar ()吃掉换行符switch(i)(case m,:printf(mondayn);break;case w:printf(Wednesdayn);break; case f: printf (,fridayn,); break;case t:print

4、f (请输入下一个字母n);scanf(%c, &j);if (j=,u ) printf(tuesdayn);break;if (j二二h,) printf(thursdayn);break; case s:printf (请输入下一个字母n);scanf (枇,&j);if (j二二a) printf(saturdayn);break;if (j=,u ) printf (,sundayn,/) ; break; default :printf (/,errorn,/) ; break;return 0;)7 ttinclude void main() int data;char grad

5、e;printf(Z/Please enter the score:);scanf(%d” , &data);switch(data/10)(case 10:case 9 :grade二,A,;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;default: grade=E;printf (z,the grade is %c” , grade);8、 ttincludestdio.hmain ()int i, a;for (i=l; i=10; i+)scanf(d,&a);if(a%7=0) print

6、f(d,a); break;)if(i=ll) printf(/znot exist);9、ttinclude ttinclude int m, j, n=0, k;for (m=200; m 0300; m+)k=sqrt (m);for(j=2; jk)if(n%8=0) printf(n);/*found*/ printf (d, ,m);n+;10 main()int a23int b 2;int i=0,j=0;for (i=0; i2; i+)for (j=0; j3; j+)for (i=0; i2; i+)(for (j=0; j #include#define N 10int

7、 main ()(int aN = 0, 1,2, 3, 4, 5,6, 7, 8,9;int i, t;printf (原始数组是:n);for (i=0; iN; i+)printf (%d , ai);for(i=0;iN/2;i+)(t=ai;ai=aN-l-i;aN-l-i=t;printf Cn排序后的数组:n);for (i=0; i ttinclude stdio.hmain ()int term10;int i, max, min;printf (请输入10个整数:);for (i=0; i10; i+)scanf (z/%d,z, &termi);max=term0;min

8、=terni0;for (i=0; i10; i+)(if (termi max)max=termi;)printf (,max=%d, min=%d/,, max, min);13、ttinclude main ()(int a100, i, n;scanf(d,&n);for (i=0; in; i+) scanf (%d,&ai);a99=a0;for (i=l; in; i+)if (a99 ai) a99=ai;printf (,zmax is %dn,a99);14、ttinclude void main()int a10 = 10,4,2, 7, 3, 12, 5, 34, 5,

9、9, i;/ *f ourid*/float aver, s;/*found*/for ( i=l; i ttinclude main()(int i, p=0, a10;for (i=0; i10; i+)scanf(%d,&ai);for (i=l; i10; i+) if (ai ap)P=i ;printf(d, %dn,ap,p);16、#include#includettinclude void swap(chartstri, char*str2);int main ()(char strl20, str220, str320;printf (请输入3个字符串,每个字符串以回车结束

10、!: n);fgets(strl, (sizeof strl / sizeof strl0), stdin);fgets (str2, (sizeof str2 / sizeof str20), stdin);fgets(str3, (sizeof str3 / sizeof str30), stdin);if (strcmp (strl, str2) 0) swap (strl, str2);if (strcmp (str2, str3) 0) swap (str2, str3);if (strcmp (strl, str2) 0) swap (strl, str2);printf(排序后的

11、结果为:n);printf (,%sn%sn%sn/,, strl, str2, str3);return 0;void swap(char*strl, char*str2)(char tem20;strcpy(tem, strl);strcpy(strl, str2);strcpy(str2, tem);17、ttinclude #include main ()(char a=,clanguage,z, t;int i, j, k;k=strlen(a);for (i=l; i =k-2; i+=2)for(j=i+2; jk; j+=2)if (ajai)(t=ai;ai=aj;aj=t;

12、)puts (a);printf(n);18、ttinclude #include #include prinum( int a)(int count, i, j, k;count = 0;for ( i=0; i10; i+)(k=ai-l;for ( j=2; j= k+1) count+;return (count);main ()(int a10 = 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, n;n=prinum(a);printf (prime number (s) is (are) : %d,n );19、#include#includevoid fun(

13、int *s, int n)(int i;int max=s0;int a=0;for (i=0; imax)(max=si;a二i;)sa=s0;s0=max;int j;int min=sn-l;int b=n-l;for(j=0; jn; j+)(if (sj min)(min=sj;b二 j;)sb=sn-l;sn-l=min;void printf s (int s, int n)for (i=0; in; i+) printf(%d , si);printf (n);int main ()(int s 20;int i, n;printf (设置数组长度(V20):);scanf(

14、d,&n);printf (输入 %d 个元素:n”,n);for (i=0; i #includeint main ()(int all = l, 4, 6, 9, 13, 16, 19, 28, 40, 100;int tempi, temp2, number, end, i, j ;printf(原始数组是:n);for (i=0; iend) a10=number;elsefor (i=0; inumber)templ=ai;ai=number;for(j=i+l; jll; j+)(temp2=aj;aj=templ;templ=temp2;break;)for (i=0; i #i

15、nclude struct Student int num;char name30; char sex;int Fun (struct Student *s , int n) (int num=0;int i; for(i=0; in; i+) (if (si. sex =二M)num+;13、编写程序:把数组a(大小为100)中前n个元素中的最大值放入a的最后一 个元素中,n的值由键盘输入14、编写程序:求一维数组a中所有元素的平均值,结果保留两位小数。例 如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9程序的输出应为:The aver is: 9.

16、 1015、编写程序:输出一维数组a中的最小值及其下标16、编写程序:字符串排序。如下:请输入3个字符串,每个字符串以回车结束!: ba t 排序后的结果为:a bt17、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不 变例如:当a数组中的字符串为:clanguage时,程序的输出结果为:cgalgnaue()18、编写程序:统计一维数组a中素数的个数例如:如果数组a的元素为:2, 3,5, 7,8,9, 10, 11, 12, 13,则程序的输出应 为:prime number (s) is (are)19、编写程序:输入数组,最大的与第一个元素交换,最小的与最后一个元素

17、 交换,输出数组。20、编写程序:有一个已经排好序的数组。现输入一个数,要求按原来的规律 将它插入数组中。二、结构体相关编程题(每小题5分,共10分)1、统计结构体数组中性别(sex)为M的变量的个数。要求:数组元素依次赋初值为:1 , Andy,M 、 2 , Mike, F 、 3 , Rose , M。结构体定义如下:struct Student int num; char name 30 ; char sex;int main ()struct Student s3 = 1, Andy, M , 2, Mike, F , 3, Rose, M );printf (,/%d/z, Fun

18、 (s , 3);return 0;2、 #include struct student int num;char name20;char sex;int age; stu20,*p;int main () int n;scanf(%d, &n);p 二 stu;for(int i =0; i num, p-name, &p-sex, &p-age); printf (,/%d %s %c %dn,p-num, p-name, p-sex, p-age); returnO;)3、ttinclude #define NUM 3struct studentchar* sno = new char2

19、0;char* name = new char20;int score;bool fail 二 false;); void stuSort(student* stu)student tmp;for (int i = 0; i NUM; i +)(for (int j = 0; j NUM; j +)(if (stuj.score stui.score)(tmp. name = stuj. name;tmp. sno = stuj.sno;tmp.score = stuj.score;stuj. name = stui. name;stuj.sno = stui.sno;stuj.score =

20、 stui.score;stui. name = tmp. name;stui.sno = tmp. sno;stui.score = tmp. score;)for (int i = 0; i NUM; i +)(printf (,z%s %s %dn, stui. sno, stui. name, stui. score); void stuFail(student* stu) (int numOfStu = 0;for (int i = 0; i NUM; i +) (if (stui. fail = true)printf(%s,stui.name);elsenumOfStu +;if

21、 (numOfStu = NUM)(printf (%sn, “no fail);)void stuAvg(student* stu)(int stuScore = 0;double stuAvg = 0;int ent = 0;for (int i = 0; i NUM; i +)(stuScore += stui.score;)stuAvg = stuScore / NUM;for (int i = 0; i NUM; i +)(if (stui,score stuAvg)( ent +;)printf (,%dn,/, ent);)int main ()student* stu = ne

22、w studentNUM;for(int i = 0; i NUM; + i) printf (输入学号:“);scanfstui. sno);printf (输入姓名:);scanf(为s,stui. name);printf(输入功课成绩:); scanf (/z%dz,, &stu i. score);stuSort (stu);stuFail (stu); stuAvg(stu);delete stu; stu = NULL; return 0;)4、#include#include typedef struct int ID;int math;int English;int C;in

23、t avargrade; char name20;Stu;int main () (FILE*fp;Stu stu5; int i, avargrade=0;printf (请输入5个同学的信息:学生号,姓名,3门成绩:n); for(i=0; i5; i+) (scanf (%d %s %d %d %d,z, &(stui. ID), stui. name, &(stui. math), &(stui. English 0);stui. avargrade= (stui. math+stui. English+stui. C)/3;if(fp=fopen(stud, w)二二NULL) pr

24、intf (error :cannot open file!n,z); exit (0);) for (i=0; i5; i+)fprintf (fp, /z%d %s %d %d %d %dn,/, stui. ID, stui. name, stui. math, stui. Engli sh,stui. C, stui. avargrade);fclose(fp);/ system(pause); return 0;5、#include#include#include typedef struct LNode intdata;struct LNode *next;LNode, *Link

25、List;LinkList CreateList (int n);void print(LinkList h); int main () (LinkList Head=NULL; int n;scanf&n); Head=CreateList (n);printf (刚刚建立的各个链表元素的值为:n); print(Head);printf(nn);system(pause);return 0;LinkList CreateList(int n)LinkList L,p,q;int i;L= (LNode*)malloc(sizeof(LNode);if(!L)return 0;L-next=

26、NULL;q=L;for (i=l; idata);p- next 二 NULL;q-next=p;q二P;)return L;)void print (LinkList h)(LinkList p=h-next;while(p!=NULL) printf (,z%d z/, p-data);p=p-next;)6、 #includestruct classint id;类编号char info20 ; /类信息a5 = l,aaa, 2,bbb, 6,ccc, 7,ddd, 4,eee;int main(void)int i, j, x;scanf (z,%d,z, &x);for(i =

27、0; i 5; i+)(if (ai. id=x) break;)for(j = i; j 4; j+)(aj= aj + 1;for(j = 0; j 4; j+)printf(%d %sn,z, aj. id, aj. info);7、ttinclude struct message(char namel30;char name230;char name330;double price;);struct message d10;int main()(int N;scanf(d,&N);int i, j;for (i=0; KN; i+)(scanf (%s %s %s,z, di. nam

28、el, di. name2, di. name3);scanf&di.price);int t,r; double max, min;max二min=d0. price;for (j=0;jdj. price)(min=dj. price;t=j;if (maxdj.price)(max=dj. price;r=j;)printf (/z%. 21f, %s %s %snz,, max, dr. namel, dr. name2, dr. name3);printf (,z%. 21f, %s %s %snz,, min, dt. namel, dt. name2, dt. name3); r

29、eturn 0;8、ttinclude struct Dateint day;int month;int year;int main()void days( struct Date datel, int *q );struct Date datel;struct Date *p;int n;printf (”请输入年份年);scanf ( d,&datel. year );printf (”请输入月份:);scanf ( d,&datel. month );printf (请输入日期日);scanf( d,fedatel. day );p 二 fedatel;days( *p, &n ) ;

30、/*使指针指向变量n,存放计算的总天数*/printf ( %d 年%d 月%d 日是该年的第d 天。n,datel. year, datel. month, datel. day, n );return (0);void days ( struct Date datel, int *q )int month2;if ( datel. year % 400 =二 0(datel. year % 100 != 0 & datel. year % 4 二二0)month2 = 29; /*判断为润年,其该年的二月为29天*/else month228;switch(datel. month )ca

31、se1:*qdatel. day; break;case2:*q31 + datel. day; break;case3:*qmonth231 + datel. day; break;case4:*q31month2datel. day; break;case5:*q31month230 + datel. day; break;case6:*q31month24-30 + datel. day; break;case7:*q3130 * 2month2datel. daybreak;case8:*q3130 * 24-month2datel. daybreak;case9:*q3130 * 2

32、month2datel. daybreak;case10:*q313 * 304-month2datel. daybreak;case11:*q313 * 30month2datel. daybreak;case12:*q314 * 304-month2datel. day/*把计算的总天数赋值给*p */9、#includeint main () int t, n, i, max, min, sum;int score102=0;while (scanf (,%d,z, &n) if(n=0)break;for(i =0; i n;+i)scanf (,z%dz,, &scorei);max

33、 =-l;min =101;sum =0;for(i =0; i max)max = score i;if(scorei #includetypedef struct stuint num20;float scorel;float score2;float score3;float score4;float score5;float aver;student;float a5;int main () student stu10;student averageScore(student stu10);student averages(student stu10);student max(stud

34、ent stu10);int i;for (i=0; i10; i+) scanf (z/%d%f%f%f%f%f, stui. num, &stui. scorel, &stui. score2, &stui. score 3, &stui. score4, &stui. score5);2、定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个 学生的所有信息,保存在结构体中,并输出。结构体student的定义如下: struct student int num;char name20;char sex;int age;);本题要求使用指向结构体数组进行输入和输出。输入:

35、第一行有一个整数n,表示以下有n个学生的信息将会输入。保证n不大于20o以后的n行中,每一行包含对应学生的学号、名字、性别和年龄,用空格隔 开。保证每一个人名都不包含空格且长度不超过15,性别用M和F两个字符来 输出:有n行,每行输出一个学生的学号、名字、性别和年龄,用空格隔开。请注意行尾输出换行。样例输入:310101 LiLin M 1810102 ZhangFun M 1910104 WangMin F 20样例输出:10101 LiLin M 1810102 ZhangFun M 1910104 WangMin F 203、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,数据如

36、下:201513135157张三901)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上2)将学生中不及格学生的姓名显示出来3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数4、编写程序:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 (包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件stud中。功能如下:averages (stu);averageScore (stu);for (i=0; i5; i+) printf Cthe %d score,s average is %fz,, i, ai);)max (stu);return 0;)student average5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁