C语言参考答案 联系客服

发布时间 : 星期日 文章C语言参考答案更新完毕开始阅读63406c2be2bd960590c677b7

求Sn=a+aa+aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222(n=4),n由键盘输入。

#include\#include\ main()

{int n,sum=0,i=1,s=2; scanf(\ while(i<=n)

{sum=sum+s;s=s+2*pow(10,i); i++;}

printf(\ }

求1!+2!+3!+4!+5!+…+20!) #include\ main()

{int n,i=1;long sum=0,s=1; scanf(\ while(i<=n)

{s=s*i;sum=sum+s;i++;} printf(\ }

一个数如果恰好等于它的因子之和,这个数就称为\完数\。例如,6的因子为1、2、3,如6=1+2+3,因此6是\完数\。编程序找出1000之内的所有完数,并按下面格式输出其因子

#include\ main() { int m,i,j,s;

for(m=6;m<10000;m++) { s=1;

for(i=2;i

有一分数序列,求出这个数列的前20项之和。 main() {int i=1,n;double t,x=1,y=2,s,sum=0; scanf(\ while(i<=n)

{s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}

printf(\

一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main()

{int i,n;double h=100,s=100; scanf(\ for(i=1;i<=n;i++) {h*=0.5;if(i==1) continue;s=2*h+s;}

printf(\ 下面程序的输出是:( ) Main()

{ enum en{Sat=5,Sun}; char *w{}={“Sun”, “Mon”, “Tuse”, “Wed”, “Thu”, “Fri”, “Sat”};

printf(“%s%s﹨n”,w[sat],w[Sun]); }

9.以下程序调用fun函数动态分配两个整型存储单元,并通过形参传回这两个整型存储单元的地址给s1和s2,请在下面☆处填写适当内容。 Main()

{int *s1,*s2; …… Fun(☆); …… }

Int Fun(☆)

{*p=(int*)malloc(sizeof(int)); *q=(int*)malloc(sizeof(int)); }

①#include #define M 5 int main(void) { int a[M]; int k;

for(k=M-1;k>=0;k--) scanf (\ printf(\

for(k=0;k

输入为:1 2 3 4 5 输出为:5 4 3 2 1 ②#include char *str=\ int main(void) {

int x=6;

Fun(x); printf (\puts(str); return 0; }

Fun(int x)

{x=20;gets(str);}

输入为:12345 输出为:

③#include fn(int *p) {int i,j,na; na=*p;

for(i=0;i<3;i++) for(j=0;j<2;j++) if((*(p+i)+j)

int main(void) {

static int a[][2]={25,2,8,14,7,6}; printf(\}

输出是:na=2

④#include f(int n) { int s;

if(n<1) printf(\ else if (n==1) s=1; else s=f(n-1)+n; return(s);}

int main(void) {int n;

printf(\ scanf(\

printf(\}

执行情况:n=?6 输出是:s=6 #include int g(int m) {int a=0,i=0,b=1; while(i

{printf(\ a=a+b;b=a+b;i++; } }

int main(void) {int n; do

{printf (\ scanf(\ }

while(n<1); g(n);

printf (\return 0; }

执行结果:n=?4 输出是:n=4 假设a数组中的数从小到大的顺序存放,以下程序把a数组中相同的数删得只剩一个,然后以每行5个数的形式输出a数组中的数,在下画线处填入适当内容(8分) #include #define M 20 int main(void) {

int a[M],i,j,n; for(i=0;i

while(_____②____-) { if(a[i]==a[i-1]) { for(j=0;j<=n;j++) a[___④____]=a[j]; n=____⑤____; }

i=___⑥___;

for(i=0;i<=n;i++) { if(i%5==0) printf(\ print(\ } printf(\ } return 0; }

2.下属函数从一个带有头结点的链表中删去num域值为x的结点。在下面线处填入适当内容 #inblude”stdio.h” Struct node {int num;

Struct node *next; };

Typedef struct node LIST; LIST *find(LIST *h,int x) {LIST *P,*q; P=(*h).next; q=h;

while(___①___&&(*p).num!=x) {q=p; p=___②___;} if(___③___)return NULL; return(___④___); }

del(LIST *h,int x) {LIST *p,*q; If(!(*h).next)

{printf(“List is null! ﹨n”);return 0; q=find(h,x); if(___⑤___)

{p=q->next;q_>next=p->next;free(p);return 1;}

return(____⑥____); }

#include #include int main(void) {

char c;

c=getchar(); while(c!='#') { if(isalpha(c)) { c=tolower(c);

c=(c-'a'+1)&+'a'; }

putchar(c);c=getchar(); }

printf(\ }

输入:ABC$58xyz# 输出:bcd$58yza

#include #include

int mx(int *p,int n,int m,int *l,int *k) { int i,j,mm; mm=*p;*l=*k=0; for (i=0;i<4;i++) for (j=0;j<3;j++) {if (*p>mm) {mm=*p;*l=i;*k=j;} p++; } return(mm); } int main(void) {int a[4][3],i,j,m; for (i=0;i<4;i++) for (j=0;j<3;j++) scanf(\ m=mx(a[0],4,3,&i,&j);

printf (\答案:a[i][j]=3

求两个数的最大公约数和最小公倍数。

#include\main() { int i,n,m,z,d,g,b; printf(\请输入要比较的两个数:\\n\ scanf(\ if(n>m) {z=m;d=n;} else {z=n;d=m;} /*求公约数*/ while(z>=1) {if(m%z==0&&n%z==0)

{g=z;break;} else z--; } //求最大公倍数 while(d<=(m*n)) {if(d%m==0&&d%n==0) {b=d;break;} else d++; } printf(\和%d最大公约数%d,最小公倍数%d\\n\}

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t;

for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; }

return(t); }

minbeishu(m,n) int m,n; {int j;

if(m>=n) j=m; else j=n;

for(;!(j%m==0&&j%n==0);j++); return j; } main()

{int a,b,max,min;

printf(\ scanf(\ max=maxyueshu(a,b); min=minbeishu(a,b);

printf(\n); }

编写函数fandmax,求出数组中(某一个)最大元素在数组中的下标。用主函数读入10个整数然后调用fandmax函数,主函数将结果在屏幕上输出。 #include\

int fandmax(int a[],int k) { int maxz=-1,c=0,i; for(i=0;i

main() { int i,a[10],x; printf(\请输入10个元素\\n\ for(i=0;i<10;i++) scanf(\ x=fandmax(a,10); printf(\最大值的下标%d\\n\ return 0; }

编写一个函数sort(**p),实现对5个字符串进行排序。主函数main通过键盘输入5个字符串。 #include\#include\char sort(char **p) { int i,j; char ch; for(i=0;i<4;i++) { for(j=0;j<5;j++) if(strcmp(*(p+i),*(p+j))) { ch=*(p+i); *(p+i)=*(p+j); *(p+j)=ch; } } }

main() { int i; char a[5],**q; q=&a; printf(\请输入5个元素\\n\ for(i=0;i<5;i++) a[i]=getchar(); sort(q);

printf(\按从小打到大的顺序排列:\\n\ for(i=0;i<5;i++) putchar(a[i]); }

编写一个函数,就算给定的一个矩阵(m×n)的转置矩阵,主函数输入给定矩阵并输出转置矩阵。 #include

int zhuanzhi(int a[100][100],int m,int n) { int i,j,temp; for(i=0;i

写一个函数,它能测出一个字符串的长度,函数返回值就是字符串的长度。

#include\#include\int strlenth(char s[]) { int i=0,len=0; while(s[i++]) len++; return len;} main()

{char a[100]; int n; printf(\请输入一个字符串\\n\ gets(a); n=strlenth(a); printf(\

用冒泡法对输入的10个数由小到大排序,在函数中输入10个数,并输出。

#include\main() { int a[10],i,j,temp; printf(\请输入十个数\\n\ for(i=0;i<10;i++) {scanf(\ //排序 for(i=0;i<9;i++) {for(j=i+1;j<10;j++) {if(a[i]>a[j]) {temp=a[i]; a[i]=a[j]; a[j]=temp; }}} //输出 for(i=0;i<10;i++) { printf(\ } printf(\}

#include int u,v;

find_u_v(int *p,int n) { int *q; u=v=*p; for(q=p;q*q) v=*q; }} int main()

{int i,num[10];

printf (\for (i=0;i<10;i++) scanf(\find_u_v(num,10);

printf(\}

输入:3 5 1 7 9 2 4 6 8 10 输出:u=10 ;v=1 #include int main()

{int a[7]={0,4,3,5,2,1,6}; int i,j,k;

for (j=1;j<5;j++) for (i=1;i<=6-j;i++) if (a[i]>a[i+1])

{k=a[i];a[i]=a[i+1];a[i+1]=k;} printf (\for (i=1;i<=6;i++) printf(\}答案:123456 #include ma_va(int a[][4]) {int i,j,max; max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) {if(a[i][j]>max) max=a[i][j]; return (max);}} int main (void) {int

a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf (\} 答案:ma_va is 1 #include # define squre(n) (n*n) int main (void) {int m,i=1; while (i<5) {m=i++;

printf (\}} 答案:1 4 9 16

用筛选法求之内的素数2 3 5 7 11 13 17 19 …… 89 97 main() { int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i;

for(j=2;j<=i;j++) {if(j

if(a[i]%j==0) break;

if(a[i]-j==0)

printf(\用选择法对10个整数从小到大排序。

int main(void) { int i,j,a[10],t; for(i=0;i<10;i++) scanf(\ for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf(\求一个3×3矩阵对角线元素之和。 main()

{int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\

s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0];

printf(\ 已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。 main()

{ static int a[5]={1,4,5,6,7}; int i,t,b;

scanf(\ for(i=0;i<5;i++) {if(b<=a[i])

{t=a[i];a[i]=b;b=t;} printf(\ printf(\

编一程序,将两个字符串连接起来,不要strcat函数。 main() {inti,j;char

str1[100],str2[100],str3[201]; gets(str1);