您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > C编程常用算法复习_2014
C语言编程常用算法复习题注意:1.公共C语言的同学不必练习带*的题。2.真正考试时,试题难度会比复习题要小。但这些算法很重要。一、编程从给定数组中找出指定数所在的位置(下标)。#includestdio.hvoidmain(){inta[]={11,22,33,44,55,66,77,88,99},n;printf(输入整数:);scanf(%d,&n);for(inti=0;i9;i++)if(n==a[i])break;if(i9)printf(找到,下标=%d\n,i);elseprintf(未找到该数!\n);}二、从键盘输入学生某门功课的分数保存在数组中(人数不超过45人),找出并输出最高分。#includestdio.h#defineN45voidmain(){floata[N];inti,x;printf(请输入%d个分数:\n,N);for(i=0;iN;i++)//逐个输入N个分数scanf(%f,&a[i]);for(i=x=0;iN;i++)//x为最高分的下标if(a[x]a[i])x=i;//各分数逐一与高分比较,更高的则存其下标至xprintf(最高分=%.1f\n,a[x]);}三、从键盘输入学生某门功课的分数保存在数组中(人数不超过45人),求出并显示平均分数。#includestdio.h#defineN45voidmain(){floata[N],sum=0;printf(请输入%d分数:\n,N);for(inti=0;iN;i++)//逐个输入N个分数scanf(%f,&a[i]);for(i=0;iN;i++)//累加各个分数sum+=a[i];printf(平均分=%.1f\n,sum/N);//输出平均分}四、编写函数max(int,int),返回两数中的较大数;在main函数中,输入两个整数,再调用max函数得到较大数并输出之。#includestdio.hintmax(inta,intb){if(ab)returna;elsereturnb;}voidmain(){intx,y;printf(输入两个整数(x,y):);scanf(%d,%d,&x,&y);printf(较大的数=%d\n,max(x,y));}五、编写函数intadd(int,int),用求两个参数的和。再在main函数中输入两个整数,调用add函数计算并输出它们的和。#includestdio.hintadd(intx,inty){returnx+y;}voidmain(){inta,b;printf(请输入两整数:);scanf(%d,%d,&a,&b);printf(两数的和=%d\n,add(a,b));}六、从键盘输入任意自然数N(N10),筛选并输出3~N之间的所有素数。#includestdio.hintisPrime(intx){for(inti=2;ix;i++)if(x%i==0)return0;return1;}voidmain(){intn;printf(输入自然数(大于10):);scanf(%d,&n);for(inti=3;i=n;i++)if(isPrime(i))printf(%d,i);}七、编程输入一串字符,统计并输出其中字母、数字、空格及其它字符的个数。#includestdio.hvoidmain(){intletter=0,digit=0,space=0,other=0;puts(请输入一串字符:);for(charc;(c=getchar())!='\n';)if(c='A'&&c='Z'||c='a'&&c='z')letter++;elseif(c='0'&&c='9')digit++;elseif(c==32)space++;elseother++;printf(字母=%d,数字=%d,空格=%d,其它=%d\n,letter,digit,space,other);}*八、编写函数upper(char*),接受一字符串,转换该串为大写并返回之。在main函数中,输入一字符串,调用该函数将其转换成大写并输出。#includestdio.hchar*upper(char*s){for(char*p=s;*p!='\0';p++)if(*p='a'&&*p='z')*p-=32;returns;}voidmain(){charstr[80];puts(请输入一串字符:);gets(str);char*p=upper(str);//upper(str);puts(p);//puts(str);}*九、输入N个学生的信息:学号(整数)、姓名(10字符以内)、性别(M或F)和成绩,存入数组中。再查找并显示成绩最好的学生信息。要求编写函数find(structStudent*)从学生数组中查找并返回成绩最好的学生的内存地址。#includestdio.h#defineN50structStudent{intid;charname[10];charsex;floatscore;};structStudent*find(structStudent*ss){structStudent*end=ss+N,*max=ss;for(ss++;ssend;ss++)if(ss-scoremax-score)max=ss;returnmax;}voidmain(){structStudentall[N],*p=all;for(;pall+N;p++){printf(\n===#%d===\n,p-all+1);printf(学号:);scanf(%d%*c,&p-id);printf(姓名:);gets(p-name);printf(性别:);p-sex=getchar();printf(成绩:);scanf(%f%*c,&p-score);}p=find(all);puts(\n成绩最好的学生信息:);printf(学号:%d\n,p-id);printf(姓名:%s\n,p-name);printf(性别:%c\n,p-sex);printf(成绩:%.1f\n,p-score);}*十、输入N个学生的信息:学号(整数)、姓名(10字符以内)、性别(M或F)和成绩,存入数组中。再输入学号并根据学号查找并显示学生信息,如未找到则显示“未找到指定学生”。要求编写函数find(structStudent*,int)根据学号从学生数组中查找,找到则返回其下标,否则返回-1。#includestdio.h#defineN50structStudent{intid;charname[10];charsex;floatscore;};intfind(structStudent*ss,intid){for(inti=0;iN;i++)if(ss[i].id==id)returni;return-1;}voidmain(){structStudentall[N],*p=all;for(;pall+N;p++){printf(\n===#%d===\n,p-all+1);printf(学号:);scanf(%d%*c,&p-id);printf(姓名:);gets(p-name);printf(性别:);p-sex=getchar();printf(成绩:);scanf(%f%*c,&p-score);}intn;printf(\n要查找的学号:);scanf(%d,&n);n=find(all,n);if(n==-1)puts(~~~未找到指定的学生信息!);else{p=all+n;printf(学号:%d\n,p-id);printf(姓名:%s\n,p-name);printf(性别:%c\n,p-sex);printf(成绩:%.1f\n,p-score);}}
本文标题:C编程常用算法复习_2014
链接地址:https://www.777doc.com/doc-2908713 .html