c语言编程题

2024-11-12 16:58:29
推荐回答(4个)
回答1:

帮你写了下这个程序
第一道:
#include

int
main(void)
{
int
num[20];
int
i;
int
count
=
0;
int
sum
=
0;
for(i=0;i<20;i++)
{
printf("请输入第%d个元素的值:",(i+1));
scanf("%d",&num[i]);
}
for(i=0;i<20;i++)
{
if(num[i]>=0)
{
count++;
sum
+=
num[i];
}
}
printf("非负个数为:%d
\n",count);
printf("非负数之和为:%d",sum);

return
0;
}
第二道:
#include

int
main(void)
{
int
num[20];
int
i;
int
max;
for(i=0;i<20;i++)
{
printf("请输入第%d个元素的值:",(i+1));
scanf("%d",&num[i]);
}
max
=
num[0];
for(i=0;i<20;i++)
{
if(num[i]>max)
{
max
=
num[i];
}
}
printf("最大的值为:%d",max);

return
0;
}

还有什么不明白的地方可以来问哈

回答2:

#include "stdio.h"
void fun(int w)
{
while(w>0)
{
int i=1,j=0;
while(i*2<=w)
{
i*=2;
j++;
}
if(j==1)
{
printf("%c",'2');

}
else if(j==0)
{
printf("%s","2(0");

}
else
{
printf("%s","2(");
}
if(j!=1)
fun(j);
if(j==1&&i {
printf("%s","+");

}
else if(j==0&&i<=w)
{
printf("%s",")");

}
else if(j!=1&&j!=0&&i {
printf("%s",")+");
}
else if(j!=1&&j!=0&&i==w)
{
printf("%s",")");
}
w-=i;
}

}

void main()
{
fun(16);

}

好像比楼上简单点呀呵呵不过应该还是不够精简明了

回答3:

#include

char *s[2]={"2(0)", "2"}; // 0, 1的表示

int base2(int number, int digit[])
//以2的幂次表示
{
int count; //多少位

for(count=0; number; count++){
digit[count] = number%2;
number /= 2;
}
return count;
}

void token(int number) //换做需要的表示
{
int digit[15], count, i;
int first = 1;
count = base2(number, digit);
for(i=count-1; i>=0; i--){
if(digit[i]){
if(first){
first = 0;
} else {
printf("+");
}
if(i==0 || i==1){
printf("%s", s[i]);
continue;
}
printf("2(");
token(i);
printf(")");
}
}
}
void main()
{
int number;

scanf("%d", &number);
token(number);
printf("\n");
}

回答4:

建议从函数的递归调用方面下手