啊哈磊_编程从这里起步
标题: c语言题目···求大侠 [打印本页]
作者: long11 时间: 2013-11-4 16:15
标题: c语言题目···求大侠
一、调试
(一)填空, 在___N___中填空。
35、将输入字符串s中所有的小写字符'c'删除。
#include <stdio.h>
#include <____1____>
void main()
{ char s[81];int i;
gets(s);
for(___2___;i<strlen(s);)
if(s=='c')
strcpy(____3____);
___4___
i++;
puts(s);
}
1、输入一个不超过80个字符的字符串,将其中的大写字符转换为小写字符;小写字符转换为大写字符;空格符转换为下划线,输出转换后的字符串。
#include <stdio.h>
#include <____1_____>
void main()
{ char s[81]; int i;
_____2_____;
for(i=0;____3_____;i++) {
if(isupper(s))
s=s+32;
else
if(islower(s))
s=s-32;
if(____4____) s='_';
}
puts(s);
}
30、输入4个整数,通过函数Dec2Bin的处理返回字符串,显示每个整数的机内码(二进制,补码)。
#include <stdio.h>
void Dec2Bin(long m,char *s)
{ int i,k;
for(i=0;i<32;i++) {
k=m & 0x80000000;
if(k!=0) s='1'; else ____1_____;
____2____; /* m 左移1位 */
}
}
void main()
{ char a[33]=""; long n; int i;
for(i=1;i<=4;i++) {
scanf("%ld",&n);
_____3______;
____ 4_____;
}
}
6、调用函数f,当x=1.7时的值。
#include <stdio.h>
float f(float*,float,int);
void main()
{ float b[5]={1.1,2.2,3.3,4.4,5.5};
printf("%f\n",f(____1_____));
}
float f( _______2________ )
{ float y=___3___,t=1; int i;
for(i=1;i<n;i++) { t=t*x ; y=y+a*t; }
____4____
}
25、数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第24项的值。
#include <stdio.h>
long f(int);
void main()
{
printf("%ld\n",___1____);
}
_____2_____
{ if( n==1 || n==2)
___3____;
else
return ____4_____;
}
p46.2、显示数据,要求:(1)在数组a中存在,而在数组b中不存在的数,以及(2)在数组b中存在,而在数组a中不存在的数。
#include <stdio.h>
void main()
{ int a[6]={2,5,7,8,4,12},b[7]={3,4,5,6,7,8,9},i,j,k;
for(i=0;i<6;i++) {
for(j=0;j<7;j++) if(___1____) break;
if(___2___) printf("%d ",a);
}
putchar('\n');
for(i=0;i<7;i++) {
for(j=0;j<6;j++) if(b==a[j]) ___3___;
if(j==6) printf("%d ",___4___);
putchar('\n');
}
24、循环输入正整数n(直到输入负数或者0结束),计算并显示满足条件2^m≤n≤2^(m+1)的m值。
#include <stdio.h>
#define F (t<=n && t*2>=n)
void main()
{ int m,t,n;
while(scanf("%d",&n),__1__){
m=0;___2___;
while(___3___){
___4___; m++;
}
printf("%d %d\n",n,m);
}
}
(二)改错, 在/*********** n**************/下一行有错,请改正。
p46.8、输入n(小于10的正整数)输出如下形式的数组例如:输入n=5,数组为:1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1
输入n=6数组为:1 0 0 0 0 0
2 1 0 0 0 0
3 2 1 0 0 0
4 3 2 1 0 0
5 4 3 2 1 0
6 5 4 3 2 1
#include <stdio.h>
void main()
{ int a[9][9]={{0}},i,j,n;
/*********** 1 **************/
while(scanf("%d",n),n<1||n>9);
for(i=0;i<n;i++) {
/****** 2 ********/
for(j=0;j<i;j++)
/******* 3 *********/
a[j]=i-j;
}
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
/******** 4 *********/
printf("%3d",&a[j]);
putchar('\n');
}
}
33、输入两字符串s1,s2后,将它们首尾相连。
#include <stdio.h>
void main()
{ char s1[80],s2[40]; int j;
/***** 1 *****/
int i;
printf("Input the first string:");
gets(s1);
printf("Input the second string:");
gets(s2);
/********** 2********/
while(s1!=0)
i++;
for(j=0;s2[j]!='\0';j++)
/****** 3 ******/
s1[j]=s2[j];
/******* 4 *******/
s1[i+j]=\0;
puts(s1);
}
34、用选择法对10个整数按升序排序。
#include <stdio.h>
#define N 10
void main()
{ int i,j,min,temp;
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("排序前:");
/******** 1 *********/
for(i=0;i<n;i++)
printf("%4d",a);
putchar('\n');
for(i=0;i<N-1;i++) {
/***** 2 ******/
min=0;
for(j=i+1;j<N;j++)
/****** 3 ******/
if(a[j]>a[min]) min=j;
temp=a[min];a[min]=a;a=temp;
}
printf("排序后:");
for(i=0;i<N;i++)printf("%4d",a);
/****** 4 ********/
putchar("\n");
}
5、输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。
#include <stdio.h>
#include <math.h>
void main()
{ double x,eps,s=1,t=1;
/******* 1 ********/
float i=1;
/******* 2 **********/
scanf("%f%f",&x,&eps);
do {
i++;
/***** 3 *****/
t=t*x/i;
s+=t;
/***** 4 *****/
} while(fabs(t)<eps);
printf("%f\n",s);
}
27、程序运行时输入整数n,则输出n的各位数字之和,例如:输入n=1380,则输出12;n=-3204,则输出9。
#include <stdio.h>
void main()
{ /****** 1 ******/
int n,s;
scanf("%d",&n);
/****** 2 ******/
n<0?-n:n;
/****** 3 ******/
while(n>=0){
/***** 4 *****/
s=s+n/10;
n=n/10;
}
printf("%d\n",s);
}
16、运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333
#include <stdio.h>
void main()
{ int a,n,i; long s=0,t;
/******* 1 ********/
scanf("%d%d",a,n);
/******* 2 **********/
t=1;
/******* 3 **********/
for(i=1;i<n;i++) {
t=t*10+a;
/******* 4 ********/
t=t+s;
}
printf("%ld\n",s);
}
p46.5、显示两个数组中,数值相同的元素。
#include <stdio.h>
void main()
{ /******** 1 *******/
int i;
int a[6]={1,3,5,7,9,11};
int b[7]={2,5,7,9,12,16,3};
/******* 2 *******/
for(i=0;i<=6;i++) {
for(j=0;j<7;j++)
/******** 3 *******/
if(a=b[j]) break;
/******* 4 ********/
if(j>=7)
printf("%d ",a);
}
printf("\n");
}
p46.4、逐个显示字符串中各字符的机内码。提示:英文字符字母的机内码首位为0,汉字的每个字节首位为1。程序正确运行后,显示如下:a[0]的机内码为:0110001;a[1]的机内码为:00110010;a[2]的机内码为:10111010;a[3]的机内码为:10111010;a[4]的机内码为:11010111;a[5]的机内码为:11010110。
#include <stdio.h>
void main()
{ /******** 1 *******/
char a[7]='a2汉字';
int i,j,k;
/******** 2 *******/
for(i=0;i<strlen(a);i++) {
printf("a[%d]的机内码为:",i);
for(j=1;j<=8;j++) {
k=a&0x80;
if(k!=0) putchar('1');
/****** 3 *****/
else putchar(0);
/****** 4 *****/
a=a>>1;
}
printf("\n");
}
}
17、程序运行时输入n,输出n的所有质数因子,例如:输入n为60,则输出60=2*2*3*5。
#include <stdio.h>
void main()
{ int n,i;
/****** 1 ******/
scanf("%f",&n);
printf("%d=",n);
/****** 2 ******/
n=2;
/****** 3 ******/
while(n>0)
if(n%i==0) {
printf("%d*",i);
/****** 4 ******/
n=n*i;
}
else i++;
printf("\b \n");
}
p46.3、循环输入x,n,调用递归函数计算,显示x的n次方。当输入n小于0时,结束循环。
#include <stdio.h>
float f(float x,int n)
{ /******* 1 ******/
if(n==1)
return 1;
else
/****** 2 ******/
return f(x,n-1);
}
void main()
{ float y,z; int m;
while(1) {
scanf("%f%d",&y,&m);
/****** 3 *******/
if(m>=0) break;
/******* 4 ********/
z=f(m,y);
printf("%f\n",z);
}
}
38、将十进制的整数,以十六进制的形式输出。
#include <stdio.h>
/********** 1 *********/
int DtoH(int n)
{ int k=n & 0xf;
if(n>>4!=0) DtoH(n>>4);
/********** 2 *********/
if(k<=10)
putchar(k+'0');
else
/********** 3 *********/
putchar(k-10+a);
}
void main()
{ int a[4]={28,31,255,378},i;
for(i=0;i<4;i++) {
printf("%d-->",a);
/******** 4 ********/
printf("%s",DtoH(a));
putchar('\n');
}
}
26、输入n,再输入n个点的平面坐标,则输出那些距离坐标原点不超过5的点的坐标值。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main()
{ int i,n;
struct axy { float x,y;};
/***** 1 *****/
struct axy a;
/***** 2 *****/
scanf("%d",n);
a=(struct axy*) malloc(n*sizeof(struct axy));
for(i=0;i<n;i++)
scanf("%f%f",&a.x,&a.y);
/***** 3 ******/
for(i=1;i<=n;i++)
if(sqrt(pow(a.x,2)+pow(a.y,2))<=5) {
printf("%f,",a.x);
/*************** 4 **************/
printf("%f\n",a+i->y);
}
}
19、运行时输入10个数,然后分别输出其中的最大值、最小值。
#include <stdio.h>
void main()
{ float x,max,min; int i;
/******** 1 *******/
for(i=0;i<=10;i++) {
/****** 2 *******/
scanf("%f",x);
/******* 3 ********/
if(i=1)
{ max=x;min=x;}
else {
if(x>max) max=x;
if(x<min) min=x;
}
}
/******* 4 ********/
printf("%f,%f\n",Max,Min);
}
40、输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
#include <stdio.h>
#include <string.h>
void main()
{ char str[81]; int i,flag;
/******* 1 ******/
get(str);
for(i=0;str!='\0';) {
flag=tolower(str)>='a' && tolower(str)<='z';
/********* 2 *********/
flag=not flag;
if(flag) {
/******* 3 ********/
strcpy(str+i+1,str+i);
/******* 4 ********/
break;
}
i++;
}
printf("%s\n",str);
}
p46.1、(1)输入一个整数mm作为密码,将字符串中每个字符与mm做一次按位异或操作进行加密,输出被加密后的字符串(密文),(2)再将密文的每个字符与mm做一次按位异或操作,输出解密后的字符串(明文)。
#include <stdio.h>
void main()
{ char a[]="a2汉字";
int mm,i;
/******** 1 *******/
printf(“请输入密码:”);
/******** 2 *******/
scanf("%d",mm);
for(i=0;a!='\0';i++) /*各字符与mm作一次按位异或*/
a=a^mm;
puts(a);
/*** 各字符与mm再作一次按位异或 ***/
/******** 3 *******/
for( ;a!='\0';i++)
/****** 4 ******/
a=a^mm^mm;
puts(a);
}
二、设计
13、(2)函数f将二维数组每1行均除以该行上绝对值最大的元素。函数main调用f处理数组a后按行显示,测试函数f正确与否。
#include <stdio.h>
#include <math.h>
double f(double **x,int m,int n)
{ double max; int i,j;
for(i=0;i<m;i++) {
max=x[0];
for(j=1;j<n;j++)
if(fabs(x[j])>fabs(max)) max=x[j];
for(j=0;j<n;j++) x[j]/=max;
}
}
void main()
{ FILE *fp;
double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
double *c[3]={a[0],a[1],a[2]}; int i,j;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
fp=fopen("CD2.dat","wb");
fwrite(*a+8,8,1,fp);
fclose(fp);
}
24、累加a字符串中所有非大写英文字母字符的ASCII码,将累加和存入变量x并显示。
#include <stdio.h>
void main()
{ FILE *fp; long x; int i;
char a[]="Windows Office 2010";
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d\n",x);
fp=fopen("CD2.dat","wb");
fwrite(&x,4,1,fp);
fclose(fp);
}
27、计算2的平方根、3的平方根、...、10的的平方根之和,要求将计算结果存入变量y中,且具有小数点后10位有效位数。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i;
/****考生在以下空白处写入语句 ******/
/****考生在以上空白处写入语句 ******/
printf("%.10f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
43、求斐波那契(Fibonacci)数列中其前40项之和,说明:斐波那契数列的前两项为1,此后各项为其前两项之和。
#include <stdio.h>
void main()
{ FILE *fp; long i,a[40]={1,1},s=2;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,4,1,fp);
fclose(fp);
}
35、在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和并存入变量s中。
#include <stdio.h>
void main()
{ FILE *fp;
double a[10]={1.7,2.3,1.2,4.5,-2.1,-3.2,5.6,8.2,0.5,3.3};
double v,s; int i;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f %f\n",v,s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
34、x,y分别表示平面上一个点的坐标,累加10个点与点(1.0,1.0)的距离总和存入double类型变量s中。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i;
double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
15、编制函数f计算下列表达式的值,函数main提供了一个测试用例。函数原型为double.f(double*,double,int) a0+a1sin(x)+a2sin(x^2)+a3sin(x^3)+……+an-1sin(x^n-1)。
#include <stdio.h>
#include <math.h>
/*****考生在以下空白处编写函数f ******/
/****考生在以上空白处编写函数f ******/
void main()
{ FILE *fp; int i; double y;
double a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};
y=f(a,2.345,10);
printf("%f\n",y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
12、若x、y取值为区间[1,6]的整数,显示使函数f(x,y)取最小值x1,y1。函数f的原型为double f(int,int) f (x,y)=(3.14*x-y)/(x+y)
#include <stdio.h>
/****考生在以下空白处声明函数f ******/
/****考生在以上空白处声明函数f ******/
void main()
{ FILE *fp; double min; int i,j,x1,y1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f %d %d\n",min,x1,y1);
fp=fopen("CD2.dat","wb");
fwrite(&min,8,1,fp);
fclose(fp);
}
p46.6、用for循环找出所有两个数乘积等于20的数据对。【提示:判断20能否被i整除的条件可以写作“20.0/i==(int) (20/i)”】
#include <stdio.h>
void main()
{ FILE *fp; long i,n=0,x[10][2];
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
for(i=0;i<n;i++)
printf("%ld %ld\n",x[0],x[1]);
fp=fopen("CD1.dat","wb");
fwrite(&x,4,2*n,fp);
fclose(fp);
}
5、计算字符串s中每个字符的权重值并依次写入到数组a。权重值就是字符的位置值与该字符的ASCII码值的乘积。首字符位置值为1,最后一个字符的位置值为strlen(s)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{ FILE *fp; long i,n,*a;
char s[]="ABCabc$%^,.+-*/";
n=strlen(s);
a=(long*)malloc(n*sizeof(long));
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
fp=fopen("CD2.dat","wb");
fwrite(a,4,n,fp);
fclose(fp);
}
32、统计并显示500至800之间所有素数的点个数以及总和。
#include <stdio.h>
#include <math.h>
/****考生在以下空白处写入执行语句 编写函数f判断与形参相应的实参是否素数****/
/*****考生在以上空白处编写函数f *************/
#include <math.h>
void main()
{ FILE *fp; int i; long s=0,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("素数个数%d 素数总和%d\n",k,s);
fp=fopen("CD2.dat","wb");
fwrite(&k,4,1,fp);fwrite(&s,4,1,fp);
fclose(fp);
}
20、数组元素x、y表示平面上某点坐标,计算并显示10个点中所有各点间最短距离。
#include <stdio.h>
#include <math.h>
#define len(x1,y1,x2,y2) sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
void main()
{ FILE *fp; int i,j; double min,d;
double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
min=len(x[0],y[0],x[1],y[1]);
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",min);
fp=fopen("CD2.dat","wb");
fwrite(&min,8,1,fp);
fclose(fp);
}
25、在数组x的10个数中求平均值v,找出与v相差最小的数组元素存入变量y,并显示v,y 。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i; double d,v,y;
double x[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};
/*****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f %f\n",v,y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
19、在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数。
#include <stdio.h>
void main()
{ FILE *fp; long i=1;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",i);
fp=fopen("CD1.dat","wb");
fwrite(&i,4,1,fp);
fclose(fp);
}
33、求数列:2/1,3/2,5/3,8/5,13/8,21/13,……。前40项的和。
#include <stdio.h>
void main()
{ FILE *fp; double y=2,f1=1,f2=2,f; int i;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
13、编制函数f,用于在m行n列的二维数组中查找值最大的元素之行下标与列下标。函数mian提供了一个测试用例。
#include <stdio.h>
void f(int **a,int m,int n,int *mm,int *nn)
{ int i,j,max=a[0][0];
/****考生在以下空白处写入语句 ******/
/****考生在以上空白处写入语句 ******/
}
void main()
{ FILE *fp; int ii,jj;
int b[3][3]={{1,3,4},{2,9,5},{3,7,6}};
int *c[3]={b[0],b[1],b[2]};
/****考生在以下空白处写入调用语句 ******/
/****考生在以上空白处写入调用语句 ******/
printf("最大值为%d,行号%d,列号%d\n",b[ii][jj],ii,jj);
fp=fopen("CD2.dat","wb");
fwrite(&ii,4,1,fp); fwrite(&jj,4,1,fp);
fclose(fp);
}
14、在6至5000内找出所有的亲密数,并显示其数量。若a,b为1对亲密数,b,a也是1对亲密数,满足的条件是:a的因子和等于b,b的因子和不等于a,且a不等于b。关于因子和:6的因子和等于6即1+2+3,8的因子和等于6即1+2+3,8的因子和等于7即1+2+4,7的因子和就是7,……。
#include <stdio.h>
long f(long x)
{ int i,j,y=1;
for(i=2;i<=x/2;i++)
if(x%i==0) y=y+i;
return y;
}
void main()
{ FILE *fp; long a,b,c,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
9、x与函数值都取double类型,对1,1.5,2,2.5,……,9.5,10. 求函数f(x)的最大值。f(x)=x-10*cos(x)-5*sin(x)
#include <stdio.h>
#include <math.h>
/****考生在以下空白处声明函数f ******/
/****考生在以上空白处声明函数f ******/
void main()
{ FILE *fp; double x,max;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",max);
fp=fopen("CD2.dat","wb");
fwrite(&max,8,1,fp);
fclose(fp);
}
18、数组元素x、y表示平面上某点坐标,统计10个点中哪些点、有几个点落在圆心为(1,-0.5),半径为5的圆内。
#include <stdio.h>
#include <math.h>
#define f(x,y) (x-1)*(x-1)+(y+0.5)*(y+0.5)
void main()
{ FILE *fp; long i,k=0;
float x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
7、统计满足条件x^2+y^2+z^2=2013的所有正整数解的个数。(若a,b,c是1个解,则a,c,b也是1个解)。
#include <stdio.h>
void main()
{ FILE *fp; long x,y,z,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%ld\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
41、编制函数f,函数原型为double f(double*,double,int),用于计算下列代数表达式的值。a0+a1x+a2x^2+a3x^3+……an-1x^(n-1),函数main提供了一个测试用例计算在x=1.5时一元九次代数多项式的值。
#include <stdio.h>
#include <math.h>
/****考生在以下空白处编写函数f******/
/****考生在以上空白处写入语句 ******/
void main()
{ FILE *fp; double y;
double b[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
y=f(b,1.5,10);
printf("%f\n",y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
6、计算并显示表达式1+2!+3!+...+12!的值。
#include <stdio.h>
void main()
{ FILE *fp; long i,y=1,jc=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%ld\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,4,1,fp);
fclose(fp);
}
30、编写函数,f判断与形参相应的实参是否回文数是则返回1 否则返回0。显示11至999之间的所有回文数(各位数字左右对称),并显示总个数。提示:先判断n是2位数还是3位数,再判断n是否回文数。
#include <stdio.h>
/*****考生在以下空白处编写函数f ******/
/*****考生在以上空白处编写函数f ******/
#include <math.h>
void main()
{ FILE *fp; int i; long k=0;
for(i=11;i<1000;i++)
if(f(i)) { printf("%5d",i);k++; if(k%10==0) putchar('\n');}
putchar('\n');
printf("%d\n",k);
fp=fopen("CD2.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
17、数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double sum,x; int i;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",sum);
fp=fopen("CD1.dat","wb");
fwrite(&sum,8,1,fp);
fclose(fp);
}
1、计算并显示满足条件1.05^n<10^6<1.05^(n+1)的n值以及1.05^n。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double a=1.05; long n=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d %.4f\n",n,a);
fp=fopen("CD1.dat","wb");
fwrite(&a,8,1,fp);
fclose(fp);
}
4、x,y为取值在区间[0 10]的整数,计算并显示函数f(x,y)在区间内取值最小点x1,y1。f(x,y)=3(x-5)x+x(y-6)+(y-7)y 。
#include <stdio.h>
long f(long x,long y) {
return 3*(x-5)*x+x*(y-6)+(y-7)*y;
}
void main()
{ FILE *fp; long min,x1,y1,x,y;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d(%d,%d)\n",min,x1,y1);
fp=fopen("CD2.dat","wb");
fwrite(&min,4,1,fp);fwrite(&x1,4,1,fp);
fwrite(&y1,4,1,fp);
fclose(fp);
}}
11、计算1-1/3!+/5!-1/7!+……的和直到末项的绝对值小于10^(-10)时为止。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double y,t=1;int i=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
2、将数组a的每1行均除以该行上的主对角元素(说明第1行同除以a[0][0],第2行同除以a[1][1],...)。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double c; int i,j;
double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
for(i=0;i<3;i++) {
for(j=0;j<3;j++) printf("%7.3f ",a[j]);
putchar('\n');
}
fp=fopen("CD2.dat","wb");
fwrite(*a+8,8,1,fp);
fclose(fp);
}
10、计算并显示平面上5点间距离总和,程序中x,y表示其中1个点得x,y坐标。要求用二重循环实现。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double s,x[5]={-1.5,2.1,6.3,3.2,-0.7};
double y[5]={7,5.1,3.2,4.5,7.6}; int i,j;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
作者: 4399APPLE 时间: 2013-11-4 16:15
35. 题目好像是错的,而且第四项猜不出来……
1. string.h
2. i=0;
3. s+i, s+i+1
4.
好吧看了半天猜出来了, 4填else,但是strcpy不能处理两个字符串有重合部分的情况,知道有问题就行了
1.
1. ctype.h
2. gets(s)
3. s[i] != '\0'
4. issapce(s[i])
作者: 4399APPLE 时间: 2013-11-5 09:09
30
1. s[i] = '0'
2. m << 1
3. Dec2Bin(n, a)
4. puts(a)
6
1. b, 1.7, 5
2. float* a, float x, int n
3. 0
4. return y;
25.
1. f(24)
2. long f(int n)
3. return 1
4. f(n-1) + f(n-2)
46.2
a[i] == b[j]
j == 7
break
j == 6
24.
n > 0
t=2
!F
t *= 2
46.8
while(scanf("%d", &n), n>=1 && n<=9){
for(j=0; j<=i; ++j)
a[i][j] = i+1-j
printf("%3d", a[i][j]);
作者: 4399APPLE 时间: 2013-11-5 09:12
33.
int i=0;
while(s1[i] != '\0')
s1[i++] = s2[j];
s1[i] = '\0';
34.
for(i=0; i<N; i++)
min = i;
if(a[j] < a[min]) min = j;
putchar('\n');
5.
int i = 0;
scanf("%lf%lf", &x, &eps);
t = -t * x / i ;
}while(fabs(t) >= eps);
27.
int n, s=0;
n = (n < 0 ? -n : n);
while(n > 0){
s = s + n % 10;
16.
scanf("%d %d", &a, &n);
t = 0;
for(i=0; i<n; i++){
s = s + t;
46.5
int i, j;
for(i=0; i<6; i++)
if(a[i] == b[j]) break;
if(j < 7)
46.4
char a[] = "a2汉字";
for(i=0; i<6; i++)
else putchar('0');
a = a << 1;
17.
scanf("%d", &n);
i = 2;
while(n > 1)
n = n / i;
46.3
if(n < 1)
return f(x*x, n-1);
if(m < 0) break;
z = f(y, m);
38.
void DtoH(int n)
if(k<=9)
putchar(k-10+'a');
DtoH(a[i]);
26.
struct axy* a;
scanf("%d", &n);
for(i=0; i<n; ++i)
printf("%f\n", a[i].y);
19.
for(i=0; i<10; i++)
scanf("%f", &x);
if(i == 0)
printf("%f, %f\n", max, min);
40.
gets(str);
flag = !flag
strcpy(str+i, str+i+1);
--i;
46.1
printf("请输入密码(整数)");
scanf("%d", &mm);
for(i=0; a[i]!='\0'; i++)
a[i] = a[i] ^ mm;
作者: 4399APPLE 时间: 2013-11-5 09:13
13
f(c, 3, 3);
24
x = 0;
for(i=0; a[i] != '\0'; ++i)
if(!isupper(a[i]))
x += a[i];
27.
double y = 0;
for(i=2; i<=10; ++i)
y += sqrt(i);
43.
for(i=2; i<40; ++i){
a[i] = a[i-1] + a[i-2];
s += a[i];
}
35.
v = 0; s = 0;
for(i=0; i!=10; ++i)
v += a[i] / 10;
for(i=0; i!=10; ++i)
if(a[i] >= v)
s += a[i];
34.
double s = 0;
for(i=0; i!=10; ++i)
s += sqrt((x[i] - 1) * (x[i] - 1) + (y[i] -1) * (y[i] - 1))
15.
double f(doube* a, double x, int n)
{
int i;
double result = 0;
for(i=0; i!=n; ++i)
result += a[i] * sin(pow(x, n-1));
return result;
}
12.
double f(int, int);
for(i=1; i<=6; ++i)
for(j=1; j<=6; ++j)
if(i == 1 && j == 1){
min = double(i, j)
x1 = i;
y1 = j;
}
else{
if(double(i, j) < min){
min = double(i, j);
x1 = i;
y1 = j;
}
}
作者: 4399APPLE 时间: 2013-11-5 09:15
46.6
for(i=1; i<=10; ++i)
if(20 % i == 0){
x[0][n] = i;
x[1][n++] = 20 / i;
}
5.
for(i=0; i<=strlen(s); ++i)
a[i] = s[i] * (i + 1);
32.
int is_prime(int n)
{
int i;
for(i=2; i<=n/2; ++i)
if(n % i == 0)
return 0;
return 1;
}
for(i=501; i<800; ++i)
if(is_prime(i)){
k += 1;
s += i;
}
20
for(i=0; i!=10; ++i)
for(j=i+1; j!=10; ++j){
d = len(x[i], y[i], x[j], y[j]);
if(d < min)
min = d;
}
25
[code]
v = 0;
for(i=0; i!=10; ++i)
v += x[i] / 10;
y = fabs(v - x[0]);
for(i=1; i!=10; ++i){
d = fabs(v - x[i]);
if(d < min)
min = d;
}
19.
for(;; ++i)
if(i % 3 == 1 && i % 5 == 3 && i % 7 == 5 && i % 9 == 7)
break;
33.
for(i=1; i!=40; ++i){
f2 += f1;
f1 = f2 - f1;
y += 1.0 * f2 / f1;
}
13.
for(i=0; i!=m ;++i)
for(j=0; j!=n; ++j)
if(a[i][j] > max){
max = a[i][j];
*mm = i;
*nn = j;
}
f(c, 3, 3, &ii, &jj);
14.
for(a = 7; a < 5000; ++a)
for(b = a + 1; b < 5000; ++b)
if(f(a) == b && f(b) != a)
k += 1;
9.
double f(double);
max = f(0.5)
for(x = 1.0; x <= 10; x += 0.5)
if(f(x) > max)
max = f(x);
18.
for(i=0; i!=10; ++i)
if(sqrt(f(x[i], y[i])) < 5)
k += 1;
7.
for(x=0; x<sqrt(2013); ++x)
for(y=0; y<sqrt(2013); ++y)
for(z=0; z<sqrt(2013); ++z)
if(x*x + y*y +z*z == 2013)
k+=1;
41.
double f(doube* b, doube x, int n)
{
double result = b[0];
int i=1;
for(; i<n; ++i)
result += b[i] * pow(x, i);
return result;
}
6.
for(i=2; i!=13; ++i){
jc *= i;
y += jc;
}
30.
int f(int n)
{
if(n < 100)
return n / 10 == n % 10;
return n / 100 == n % 10;
}
17.
sum = 0;
x = 81
for(i=1; i<=30; ++i){
sum += x;
x = sqrt(x);
}
1.
for(; ; ++n)
if(pow(1.05, n) < pow(10, 6) && pow(1.05, n+1) > pow(10,6){
a = pow(1.05, n);
break;
}
;
4.
min = f(0, 0);
x1 = 0;
y1 = 0;
for(x =0; x!=11; ++x)
for(y = 0; y!=11; ++y)
if(f(x, y) < min){
min = f(x, y)
x1 = x;
y1 = y;
}
作者: 4399APPLE 时间: 2013-11-5 09:16
11.
y = 0;
for(i=3; fabs(t) >= pow(10, -10); i += 2){
t = -t / i / (i-1);
y += t;
}
2.
for(i=0; i!=3; ++i)
for(j=0; j!=3; ++j)
a[i][j] /= a[i][i];
10.
s = 0;
for(i=0; i!=5; ++i)
for(j=i+1; j!=5; ++j)
s += sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
作者: 4399APPLE 时间: 2013-11-5 09:16
居然有这么多……
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) |
Powered by Discuz! X3.2 |