编程实践

2020-05-24 10:48

有N个整数(-1018≤整数≤1018),要求按照整数十进制表示的最高位的值从大到小进行排序。若两个数的最高位的值相同,则按照数本身值由小到大排序。

#include #include #include struct node {

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 #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 #include void solve()

{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 #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


编程实践.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学先修习题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: