哪个好心人帮忙做几道C语言编程题?能做多少是多少,谢谢各位了!全做了再追加分数!!

1. 编写程序求任一输入整数为几位整数。(难度中)
2. 某宿舍有8个人,按老大﹑老二……老八顺序排列,编程实现输入一个名字,如在此8人内,输出前一个人的名字和后一个人的名字。
3. 利用结构体,编程实现复数complex(如a+bi)求模和两个复数求和操作。(一共两个函数,难度低)
4. 某数列f(n)=2f(n-1)+3f(n-2),f(1)=1,f(2)=1,编程实现:输入任意的整数n,求f(n)。(递归,难度中)
5. 数据结构课(周)平时成绩计算规则如下:
1)旷课一次扣5分,作业一次不交扣5分,作业明显抄袭扣10分。
2)上课回答问题正确加1分,完全正确加2分,无论对错,在回答中包含了个人的思考加3分,有创新者加5分。
3)主动回答问题者按以上得分规则加倍。
4)旷课1/4及以上者无平时成绩,亦无考试资格。
5)平时分基数以本次作业为准,本次作业完成2题者,基数60分;完成3题者,基数65分;完成4题者,基数70分;完成5题者,基数80分;完成6题者,基数85分;完成全部题目者,基数90分。
请编程,根据输入的完成题目数量,计算你的平时分基础数目。
6. 编程实现:1!+2!+3!+ ……+1000!(不可用双重循环,会陷入机器假死状态,难度高)

1、

#include <stdio.h>
int solve(int n)
{
int cnt = 1;
while (n /= 10)
{
++cnt;
}
return cnt;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", solve(n));
return 0;
}

2、

#include <stdio.h>
#include <string.h>
char names[8][100] = {"bob", "alex", "allen", "joker", "jack", "jacky", "robbot", "sheldon"};
int main()
{
char name[100];
scanf("%s", name);
for (int i=0; i!=8; ++i)
{
if (strcmp(names[i], name) == 0)
{
if (i == 0)
{
printf("前面没有人, 后面是%s\n", names[i + 1]);
}
else if (i == 7)
{
printf("后面没有人, 前面是%s\n", names[i - 1]);
}
else
{
printf("前面是%s, 后面是%s\n", names[i - 1], names[i + 1]);
}
}
}
return 0;
}

3、

#include <stdio.h>
#include <math.h>
typedef struct
{
double a;
double b;
}complex;

complex add(complex c1, complex c2)
{
complex ret;
ret.a = c1.a + c2.a;
ret.b = c1.b + c2.b;
return ret;
}

double mod(complex c)
{
return sqrt(c.a * c.a + c.b * c.b);
}

int main()
{
//test
complex c1;
c1.a = 3;
c1.b = 4;
printf("%lf\n", mod(c1));
return 0;
}

4、

#include <stdio.h>
double fibs(int n)
{
if (n == 1 || n == 2)
{
return 1.0;
}
return 2 * fibs(n - 1) + 3 * fibs(n - 2);
}

int main()
{
int n;
scanf("%d", &n);
printf("%lf\n", fibs(n));
return 0;
}

6、
这个题你先告诉我是高精度问题么?
1000的阶乘答案非常的巨大,如果是高精度问题再给你做追问

是高精度问题,谢谢你啦!做完就采纳你再追加分数!!

追答

第六题写出来了,瞬间计算出精确结果,但是有点长,发不上来,你的邮箱多少

追问

球球邮箱:158095304@qq.com

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-06
6.
#include <stdio.h>
int product(int *p,int a,int n)
{
int i,carry=0,temp;
for(i=0;i<n;i++)
{
temp=p[i]*a;
p[i]=(temp+carry)%1000000;
carry=(temp+carry)/1000000;
}
while(carry>0)
{
p[n]=carry%1000000;
carry=carry/1000000;
n=n+1;
}
return n;
}
int add(int *p,int *q,int np,int nq)
{
int i,n,carry=0,temp;
n=np>nq?np:nq;
while(np<n) p[np++]=0;
while(nq<n) q[nq++]=0;
for(i=0;i<n;i++)
{
temp=p[i]+q[i]+carry;
p[i]=temp%1000000;
carry=temp/1000000;
}
if(carry) p[n++]=carry;
return n;
}
void main()
{
int p[500],q[500],m,n,i,j,x=1000;
p[0]=0;
m=1;
for(i=1;i<=x;i=i++)
{
q[0]=1;
n=1;
for(j=1;j<=i;j++) n=product(q,j,n);
m=add(p,q,m,n);
}
printf("%d",p[--m]);
while(m--) printf("%06d",p[m]);
printf("\n");
}
第2个回答  2012-02-13
1

#include "stdio.h"
#include<string.h>
int main(void)
{
char s[100];
scanf("%s",s);
printf("%d\n",strlen(s));
return 0;
}

4

#include "stdio.h"
#include<string.h>
__int64 f(int n)
{
if(n<=2)return 1;
return 2*f(n-1)+3*f(n-2);
}
int main(void)
{
//f(n)=2f(n-1)+3f(n-2),f(1)=1,f(2)=1
int n;
scanf("%d",&n);//N不能太大,你给的分数只能写到这个程度的
printf("%I64d\n",f(n));
return 0;
}

6

#include "stdio.h"
#include<string.h>
#include<math.h>
const int MAX=3000;
struct BigNum
{
int dig[MAX];
int len;
void Clr()
{
memset(dig,0,sizeof(dig));
len=1;
}
void print()
{
int i=len-1;
for(;i>=0;i--)printf("%d",dig[i]);
puts("");
}
}f[1001];
BigNum mul(BigNum a,int n)
{
int i;
for(i=0;i<a.len;i++)a.dig[i]*=n;
for(i=0;i<MAX-1;i++)
{
a.dig[i+1]+=a.dig[i]/10;
a.dig[i]%=10;
}
for(i=MAX-1;i>=0&&a.dig[i]==0;i--);
i++;
a.len=i;
return a;
}
BigNum add(BigNum a,BigNum b)
{
int i;
if(b.len>a.len)a.len=b.len;
for(i=0;i<a.len;i++)
{
a.dig[i]+=b.dig[i];
if(a.dig[i]>9)
{
a.dig[i]-=10;
a.dig[i+1]++;
}
}
if(a.dig[a.len]>0)a.len++;
return a;
}
int main(void)
{
const int M=1000;
int i;
f[0].Clr();
f[0].dig[0]++;

for(i=1;i<=M;i++)
{
f[i]=mul(f[i-1],i);
}
for(i=2;i<=M;i++)
{

f[i]=add(f[i-1],f[i]);
}
f[M].print();
return 0;
}

你给的分数只能帮你做这么多
第3个回答  2012-02-02
/************************************************************************/
/* 第一题应该考虑状态问题:例如第一位是'+','-','0',一下仅作参考,没考虑*/
/* 00000000000000000 状态输入有字符就不是整形 */
/************************************************************************/
#include <stdio.h>
#include <string.h>
int CountInt( int *flag);
void main()
{
char c;
int i, flag;
while(1)
{
i=0;
flag = 0;
scanf("%c", &c);
if (c == '-' || c == '+' )
{

}
else if(c >= '0' && c <= '9')
{
i=1;
}
else
{
flag = 1;
}
i += CountInt(&flag);
if (flag == 0)
{
printf("%-5d位整数\n", i);
}
else
{
printf("输入不对\n");
}
}
}

int CountInt( int *flag)
{
int i=0;
char c;
while(scanf("%c", &c) != EOF)
{
if (c>='0'&&c<='9')
{
i++;
}
else if (c == '\n')
{
break;
}
else
{
*flag = 1;
}
}
return i;
}
第4个回答  2012-02-07
前面几题都好说,最后一题我给你做了,答案是:
40238726007709377354370243392300398571937486421071463254379991042993851239862902
05920442084869694048004799886101971960586316668729948085589013238296699445909974
24504087073759918823627727188732519779505950995276120874975462497043601418278094
64649629105639388743788648733711918104582578364784997701247663288983595573543251
31853239584630755574091142624174743493475534286465766116677973966688202912073791
43853719588249808126867838374559731746136085379534524221586593201928090878297308
43139284440328123155861103697680135730421616874760967587134831202547858932076716
91324484262361314125087802080002616831510273418279777047846358681701643650241536
91398281264810213092761244896359928705114964975419909342221566832572080821333186
11681155361583654698404670897560290095053761647584772842188967964624494516076535
34081989013854424879849599533191017233555566021394503997362807501378376153071277
61926849034352625200015888535147331611702103968175921510907788019393178114194545
25722386554146106289218796022383897147608850627686296714667469756291123408243920
81601537808898939645182632436716167621791689097799119037540312746222899880051954
44414282012187361745992642956581746628302955570299024324153181617210465832036786
90611726015878352075151628422554026517048330422614397428693306169089796848259012
54583271682264580665267699586526822728070757813918581788896522081643483448259932
66043367660176999612831860788386150279465955131156552036093988180612138558600301
43569452722420634463179746059468257310379008402443243846565724501440282188525247
09351906209290231364932734975655139587205596542287497740114133469627154228458623
77387538230483865688976461927383814900140767310446640259899490222221765904339901
88601856652648506179970235619389701786004081188972991831102117122984590164192106
88843871218556461249607987229085192968193723886426148396573822911231250241866493
53143970137428531926649875337218940694281434118520158014123344828015051399694290
15348307764456909907315243327828826986460278986432113908350621709500259738986355
42771967428222487575867657523442202075736305694988250879689281627538488633969099
59826280956121450994871701244516461260379029309120889086942028510640182154399457
15680594187274899809425474217358240106367740459574178516082923013535808184009699
63725242305608559037006242712434169090041536901059339838357779394109700277534720
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000
第5个回答  2012-02-01
这么简单还来问……再说,分成小题再问啊~就150分……你一题20分我帮你做

四道初级C语言题目 哪位好心人帮我做下 谢谢啦
第四题sum=0;for( i=0; i<10; i++) if( a[i] > v ) sum=sum+a[i];printf(“ %5f

C语言,哪位好心的大哥,姐姐:能告述我位运算吗?我看不懂啊!
程序中巧妙地使用取位和右移,比如第二行中333333的二进制为00110011001100...,用它和x做and运算就相当于以2为单位间隔取数。shr的作用就是让加法运算的相同数位对齐。 二分查找32位整数的前导0个数 这里用的C语言,我直接Copy的Hacker's Delight上的代码。这段代码写成C要好看些,写成Pascal的话会出现很多begin...

几道初级c语言理论题,求好心人解答
2、C“~”的意思是按位取反 ,即:把数化为二进制 然后把对应数位上 1换成0, 0换成1。10化为二进制为00001010 换过来就是11110101 等于-11(最高位为符号位)。3、返回类型为int(整型),函数返回类型如果是整型 则可以省略(题中就是这种情况)①?②:③ 的意思:①为一个判断条件,...

求助:谁能帮我做一下这个C语言编程题目,对的给分
} 这个答案的前提是每个人都会修改第一盏灯的状态,如果不是,则为 include<stdio.h> int main(){ int i,j,n,m;m=0;for(i=1;i<101;i++){ n=0;for(j=1;j<101;j++){ if(i%j==0) n++;} if(n%2==1) printf("%d\\n",i);} } ...

十万火急,,,急求懂C语言程序设计的好心人帮做试题答案!!!
9、a 10、d 填空题:1、} 2、.c文件 3、43 5、y = y + 1;7、15 8、数组 9、连接 10、25 11、(char*)P;12、0 13、r = malloc(sizeof(struct Worker));编程题:1、include <stdio.h> int main(){ int i = 0;for(i = 0; i <= 50; i++){ if ((i%3) == 0 |...

两道很基础的C语言题 求求好心人帮忙给出答案和解析
第二次循环i=1,s[1]为'9',不满足if,所以j还是1,i自加1变为2 从这个过程可以看出,缺的那个空,实际上是你填s数组的结束位置的,因为j实际上就已经是有效的字母的后一个位置,所以那个空直接填s[j]='\\0';就行了。第二题:for循环中,每一次开头length都被设置为0,while循环是用来...

下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?
第五题:8 4 void f(int y,int*x) X是按地址传,而Y是按值传,当值传到函数里时,*x可以改变X的值,而Y不能返回.保持原来的值...第六题:这是C语言的内存动态分配,不是很掌握,没有把握,希望其它好心人帮忙一下补齐.第七题:efgh 这道我简单说下,语言点太多,要是不明白,发消息给我,我就...

急!要自考C语言,请教大家几个基本的编程题目
2.C 先看*说明s是指针,再看STRING说明s指向的是一个字符型数组。3.D.int a=4,*p=&a。 这个要怎么解释啊?*其实是告诉p是指针,应该理解为(int*)p,故a要加上取地址符。4.选项看不懂。能排过版吗?5.C(.的优先级比*高)6.B.元素a[0]的地址 .即为p=a,数组名即为数组...

请C语言高人帮忙做一道题目(学生成绩管理程序 基本要求: (1)设计一...
回答:请C语言好人帮忙做一道题目(学生成绩管理程序 基本要求: (1)设计一个功能菜单,将程序的各个功能显示出来,并有选择提示; (2)应包含学号、姓名和英语、高数、C语言、大学物理、体育等5门课程基本信息; (3)要求有错误提示功能。例如性别只能输入F,M,输入错误提示重新输入。 (4)具有输入学生...

c语言题目求解!!!来个好心人帮帮忙吧要疯掉了~!
include "string.h"void main(){char a[200],w1[15],w2[15];int i=0,j=0,k=0;printf("qingshuruzifu\\n");gets(a);for(i=0;a[i]!='\\0';i++){if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')){w2[j]=a[i];j=j+1;} else {if(j>=k)w2[j]...

相似回答
大家正在搜