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 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
{ 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
printf(\ scanf(\ printf(\ scanf(\ f(x,y);
扩展!:不含指针参数的 #include
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
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
扩展1:求15的个、十、百位上数字之和。 #include
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
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 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;
相关推荐: