1、 ; coutendl; return 0;2.题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序, 如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。 测试数据有多组,每组输入第一行有一个整数N(Nstruct Student string name; int age; int score;bool cmp(Student x,Student y) if(x.score!=y.score) return x.scorey.score; else return x.name0&Ndatai.name;datai.age;datai
2、.score; sort(data,data+N,cmp); for(i=0; coutdatai.namedatai.agedatai.score 3.题目描述:输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。输入第一行包括1个整数N,1=N for(i=0; cin sort(data,data+N); coutdataN-1 if(N=1) elseN-2;4.题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。测试数据有多组,输入字符串。对于每组输入,输出处理后的结果。bacdabcd string str;str) sort(str.beg
3、in(),str.end(); coutstr=0stri9)/一定注意这里是字符,加单引号 if(flag=0&stri=)/要考虑第一个数字是否为0,如果是的话则跳过 continue; flag=1; cout) continue;AZ stri=stri-+a/注意大小写转换的方法7./*输入一个字符串,输出起出现次数最多的数字,若有2个数字出现次数相同,则输出较小的一个*/ int data10=0; int i,num,max=0;str.size();i+)/将数字出现的频率存入对应的数组 num=stri- datanum+;10;i+)/找出最大的一个频率 if(dataim
4、ax) max=datai;i+)/输出频率最高的数字 if(max=datai) break;8./*统计字符串中出现频率最高的字符,并将其输出;若有2个字符出现频率相同,则输出字典序小的一个*/ int freq256=0; num=(int)stri; freqnum+;255; if(freqi max=freqi; if(freqi=max)(char)(i)9./*输入一个数字,输出其各个位上的和,正整数,int范围内*/ int i,sum=0,num; num=stri- sum+=num;sum=0;i-)stri- sum*=(stri-);11./*输入一个字符串,统计其
5、出现频率最高的字符,并输出。若存在两个字符出现频率相同,则输出字典序较小的那一个*/ int fre256=0;str; num=(int)stri; frenum+;256; if(frei max=frei; if(frei=max)char(i) break;12./*输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。 输入描述 10个正整数,保证都在int范围内,用空格隔开 输出描述 10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格 输入样例 11 3 2 4 5 9 8 7 10 6 输出样例 10 2 11 3 4 5 6 7 8 9 */i
6、nt cal(int n) int sum=0,m; while(n! m=n%10; sum+=m; n/=10; return sum;int cmp(int x,int y)/注意cmp函数的书写?有问题!2和11的输出顺序 if(cal(x)!=cal(y) return cal(x)cal(y); return xai; sort(a,a+10,cmp); if(i!=9)/注意此处的书写,最后一个数字不加空格,则判断i=9时不输出空格。写为当i!=9时都输出空格。13./*题目描述 你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐 输入描述
7、 一行30个正整数,用空格隔开,表示每个物品的体积 输出描述 一个数字,为最多能装下的物品数 输入样例(此处用3个物品作为样例,实际读入为30个) 5 59 100 输出样例 2 */#define NUM 3 int aNUM,i,sum=0;NUM; sort(a,a+NUM); if(sum+ai100) sum+=ai;14./输入一个字符串,用指针求出字符串的长度 char a20,*p; int count=0; gets(a); p=a; while(*p+) count+;count15./*打印输出乘法口诀法 比如输入n n=5; 打印输出 1 2,4 3,6,9 4,8,1
8、2,16 5,10,15,20,25 */ int n; for(int i=1;=n; for(int j=1;j=i;j+)i*j; if(ji), if(j=i)16.17./*通过键盘输入一串小写字母(az)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉,然后按字母表顺序输出。比如字符串 “abfcacde”输出结果为“abcdef”。 int i,len; len=str.size(); sort(str.begin(),str.end();str0; for(i=1;len-1; if(stri=stri+1) continue; e
9、lse stri+1; 18./*天数问题MM-YYYY,MM为月份,YYYY为年份,例如:08-2014指定年份和月份的天数。例如,08-2014,对应输出为31。 int days=0,month,year; month=(str0-)*10+(str1- year=(str3-)*1000+(str4-)*100+(str5-)*10+(str6-)*1; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4: case 6: case 9: case 11
10、:days=30; case 2: if(year%4=0&year%100!=0)|year%400=0) days=29; else days=28;days return 0;19./*第一题(60分): 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。 例如:输入2,8, “abc” ,“123456789” 则输出为“abc00000”,“12345678“,”90000000”*/#includevoid solve(char *str , int n , int len) int i , j , k , quotient , r
11、emainder; quotient = len / n; /原字符串被分解的个数 ,n代表输出的每串字符串的位数 remainder = len - n * quotient; /剩余的字符串的个数 for(i = 0 ; i len ; i += n) if(len - i n) k = n - len + i; for(j = i ; j +j) printf(%c , strj); for(j = 0 ; k ; putchar( i + n ; n int main(void) int i , m , n , len; char str1000; while(scanf(%d %d,
12、 &m , &n) != EOF) m ; +i) scanf(%s , str); len = strlen(str); solve(str , n , len);20./*拼音转数字输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:描述: 拼音 yi er san si wu liu qi ba jiu 阿拉伯数字 1 2 3 4 5 6 7 8 9输入字符只包含小写字母,所有字符都可以正好匹配运行时间限制:无限制内存限制: 无限制 一行字符串,长度小于1000 一行字符(数字)串 yiersansi 1234*/,str)!=EOF) len=strlen(str); int i; switch(stri) case y:1 i+=2;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1