有N个整数(-1018≤整数≤1018),要求按照整数十进制表示的最高位的值从大到小进行排序。若两个数的最高位的值相同,则按照数本身值由小到大排序。
#include
charstr[20]; chargao; char first; intlen; };
typedefstruct node A;
intcmp(const void *a,const void *b) {
if((*(A*) a).gao!=(*(A*) b).gao) return (*(A*) b).gao-(*(A*) a).gao; else {
if((*(A*) a).first!=(*(A*) b).first) return (*(A*) a).first-(*(A*) b).first;
else if((*(A*) a).first==(*(A*) b).first&&(*(A*) a).first=='-') {
if((*(A*) a).len!=(*(A*) b).len) return (*(A*) b).len-(*(A*) a).len;
else return strcmp((*(A*) b).str,(*(A*) a).str); } else {
if((*(A*) a).len!=(*(A*) b).len) return (*(A*) a).len-(*(A*) b).len;
else return strcmp((*(A*) a).str,(*(A*) b).str); } } }
void solve() {
intn,i;
A s[10001]; scanf(\
for(i=0;i scanf(\s[i].first=s[i].str[0]; s[i].len=strlen(s[i].str); if(s[i].str[0]!='-') s[i].gao=s[i].str[0]; else s[i].gao=s[i].str[1]; } qsort (s,n,sizeof(s[0]),cmp); for(i=0;i int main() { inti,t; scanf(\for(i=0;i printf(\solve(); } return 0; } 对于一个二进制串b=bkbk-1…b1,如果对任意i (1≤i≤k-1),满足bi≠bi+1,那么b称为非重复二进制串。给定一个正整数,输出其二进制表示中最长的非重复二进制串的长度。 #include void solve() { int a[32],b[32]; int max=1; int max1=1; int c[32]; intn,j=0,i=0; int k=0,l=0; int s=0; scanf(\while(n>0) { a[j]=n%2; n=n/2; j++; } for (i=j-1;i>=0;i--) b[k++]=a[i]; for(l=0;l if(b[l]!=b[l+1])max++;else max=1; c[s++]=max; } for (i=0;i if(c[i]>max1)max1=c[i]; } printf(\} void solve(); /* write function solve() to process one case of the problem int main() { inti,t; //init(); scanf(\for (i=0;i { printf(\solve(); } return 0; } 请编写程序实现两个十六进制整数的加法。 #include {char s1[201],s2[201],dd[201]; int a[201]={0},b[201]={0},m,n,c,k,i; //puts(\请输入两个较大的数字(Note:输完一个按一次回车):\//gets(s1); //gets(s2); */ scanf(\m=strlen(s1); n=strlen(s2); if(m for(i=0;i if(s1[m-1-i]<='9') a[k]=s1[m-1-i]-'0'; else a[k]=s1[m-1-i]-'7'; // printf(\ } for(k=c,i=0;i if(s2[n-1-i]<='9') b[k]=s2[n-1-i]-'0'; else b[k]=s2[n-1-i]-'7'; // printf(\} //printf(\for(i=c;i>=0;i--) {a[i]+=b[i]; if(a[i]>=16) {a[i]-=16; a[i-1]++;} } //printf(\此两数相加之和为:\if(a[0]!=0) {for(i=0;i<=c;i++) {//printf(\ \if(a[i]>=10) dd[i]=a[i]+'7'; elsedd[i]=a[i]+'0'; printf(\} printf(\} else {for(i=1;i<=c;i++) {//printf(\ \if(a[i]>=10) dd[i]=a[i]+'7'; elsedd[i]=a[i]+'0'; printf(\printf(\} voidinit() /* Define function init() to do global initialization if needed */ { } /******************************************************************************/ /* DON'T MODIFY main() function anyway! */ /******************************************************************************/ int main() { inti,t; init(); scanf(\ for (i=0;i 给定一行由若干英文单词和空格组成的字符串,统计该字符串中有效单词的个数,单词与单词之间用一个空格来分隔,其中的the,a,an,of,for及and被忽略,不作统计。 #include void solve() /* Define function solve() to process one case of the problem */ { char s[100],a[20],b[10]; int i=0,k=0,m=0,n=0,j=0; gets(s); m=strlen(s); for(i=0;i if(s[i]>=97&&s[i]<=122) s[i]=s[i]-32; } for(k=0,i=0;k 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库编程实践在线全文阅读。
相关推荐: