第一范文网 - 专业文章范例文档资料分享平台

C语言老师所给习题解答

来源:用户分享 时间:2025/12/18 20:50:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

9

double sum=0.0, t; for(i=1;i <=n;i++) {

t=0.0;

for(j=1;j<=i;j++) t+=j; sum+=1.0/t; }

return sum; main() { int n;

24编写程序,计算组合数Cm#include double fact(double s) { } int main() {

double x,y,m,n; double i,a=1; for (i=1;i<=s;i++)

a=a*i; return a;

n

}

double s; FILE *out;

printf(\ \ scanf(\s=fun(n);

printf(\out=fopen(\for (n = 0; n < 10; n++) fprintf(out, \fclose(out);

=m!。m和n由键盘获得。

n!(m-n)! }

printf(\scanf(\printf(\scanf(\y=fact(n-m); m=fact(m); n=fact(n); x=n/(y*m);

printf(\return 0;

25编写函数,求出n个a之积。调用该函数,输入两个正整数n和a,求a?aa?aaa???aa?aa?????n之和。

#include\main()

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

扩展:将字符串a复制为字符串b #include Void main()

{ char a[]=”I am a boy.”,b[20]; Int i;

for(i=0;*(a+i)!=’\\0’;i++) *(b+i)= *(a+i);

*(b+i)=’\\0’;

27使用“指向函数的指针”编写函数,求多项式x4while(i<=n)

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

printf(\

26编写程序,使用字符指针将字符数组s1中的字符串拷贝到字符数组s2中去。

Printf(“string a is :%s\\n”,a); Printf(“string b is:”); For(i=0;b[i]!=’\\0’;i++) Printf(“%c”,b[i]); Printf(“\\n”); }

+x-1当x=1.5,2.5,3.5,4.5时的值。

答案详见P149.例题9-16!

28编写函数,将直角坐标(x,y)转换为极坐标(r,q)。转换公式为:

10

ìr=x2+y2?íy?q=atan()?x

#include #include void f(float &x,float &y); int main() { float x,y;

printf(\ scanf(\ printf(\ scanf(\ f(x,y);

扩展!:不含指针参数的 #include #include main(){

char str1[80],str2[80]; int i=0,j=0;

puts(\gets(str1); gets(str2);

while(str1[i]!='\\0')i++;

while(str2[j]!='\\0')str1[i++]=str2[j++]; printf (\}

#include

#include

void string_cat (char *source, char *target) {

char *point=source; while(*point) point++;

while(*target!='\\0')

元素由键盘获得。

printf(\ printf(\ return 0; }

void f(float &x,float &y) {

float c=sqrt(x*x+y*y); float q=atan(y/x); x=c; y=q; }

29编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。

{

*point=*target; point++; target++; }

*point='\\0'; }

int main() {

char s1[10000],s2[10000]; for(;s1!='\\0';) {

gets(s1); gets(s2);

string_cat(s1,s2); puts(s1); }

printf(\ return 0; }

30利用指针编写程序,将一个一维数组a[10]中的最大元素和首元素换位,最小元素和末元素换位。数组

11

#include\void main()

{int max,min,*p,a[10],i; for(i=0;i<10;i++) scanf(\ p=a; max=a[0];

for(i=1;i<10;i++,p++) if(max<*p)

max=*p;

for(i=1;i<10;i++) /*从第二元素开始检查是否是最大元素*/

while(a[i]==max)

a[i]=a[0]; /*将第一个元素赋给最大元素单元*/

31试编程序,输入整数a和b,若a+b大于100,则输出a?b百位以上(包括百位)的数字,否则输出两数之和。

#include {char *p;

p=s1+m; void f1() /*第一题的函数*/

strcpy(s2,p); {int a,b;

} int i,j;

void main() printf(\

{char s1[100],s2[100]; scanf(\

int m; getchar();

f1(); i=a*a;

printf(\ j=b*b;

gets(s1); if(i>100&&j>100)

printf(\ {i=i/100;

scanf(\ j=j/100;

f2(s1,m,s2); printf(\

printf(\ }

puts(s2); else printf(\

getch(); }

} void f2(char *s1,int m,char *s2) /*第二题的函

数*/

32试编程序,求一个整数任意次方的最后三位数。即求x的最后三位数,要求x,y从键盘输入,使用循环实现,不能使用数学库函数。

#include printf(\#include printf(\void main() for(i=2;i>=0;i--) { { int i,j, x,y; j=(int)(z/pow(10,i)); long int z=0; printf(\ printf(\ } scanf(\ getch(); z=pow(x,y); } 33求9的个、十、百位上数字之和。

扩展1:求15的个、十、百位上数字之和。 #include int main() {

int i,m=1,sum=0; for(i=1;i<15;i++) {

m=m*1500; }

159y a[0]=max; /*将最大值送入第一元素中*/

p=a; min=a[9];

for(i=1;i<10;i++,p++) if(min>*p) min=*p;

for(i=1;i<10;i++) while(a[i]==min) a[i]=a[9]; a[9]=min; for(i=0;i<10;i++) printf(\}

2222 while(m) {

sum+=m; m/=10; }

printf(\ return 0; }

12

扩展二:如何将十位百位数字对换,如135变成315

#include } #include int main() using namespace std; { int exchange(int a) int i = 376; { printf(\ int i = a / 100, j = (a % 100) / 10; return 0; return 100 * j + 10 * i + a % 10; } 扩展三:求一c语言编程题,a.b.c分别代表百位,十位,个位.共1000个数字,位置不能变,例如若输入a,b.则排除ab0-ab9这十个数,若输入b,c,则排除0bc-9bc这十个数,依次类推,输完之后最后剩余的三位数都有哪些,

#include int a,b,c; void main() a=i/100; { b=i0/10; int input[2]; c=i; int flag; if((flag!=a*10+b)&&(flag!=b*10+c)) int i; { printf(\ printf(\ scanf(\ if(i==0)printf(\ } flag=input[0]*10+input[1]; } for(i=100;i<1000;i++) } {

34输出100以内每位数的积大于每位数的和的所有正整数。

#include \ while (m>=1) { #include \ k*=m; s+=m; void main ( ) m=m/10 ; { int n,k=1,s=0,m ; } for (n=1 ; n<=100 ; n++) { if(k>s) printf(\ k=1 ; s=0 ; } m=n; }

35通过循环按行优先顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。

#include int main(void) {

int a[5][5],k=1; for(int i=0;i<5;i++) {

for(int j=0;j<5;j++) { a[i][j]=k; k++;

} }

for(i=0;i<5;i++) {

for(int j=0;j<=i;j++) printf(\ printf(\ } return 0; }

36从键盘输入若干整数(个数小于50),其值在0至4的范围内,用-1作为输入结束的标志。统计每个整数的个数。

#include \ b[++h]=a[j]; #define N 1000 j++; int main(){ l=0; i=0,j=2,h=1,k,l=0,b[N],n,c[N]; if(j==i+1) while(a[i]!=-1) break; scanf(\ } i--; for(j=1;j<=h;j++) b[1]=a[1]; printf(\ while(1) k=1,l=0,n=0; { while(1) for(k=1;k<=h;k++) { for(j=1;j<=i;j++) if(a[j]==b[k]) if(a[j]==b[k]) l++; l++; if(l==0) c[++n]=l;

搜索更多关于: C语言老师所给习题解答 的文档
C语言老师所给习题解答.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c82cjk66fnz6b8vf014gp_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top