y){temp=x;x=y;y=temp;}if(x>z){temp=x;x=z;z=temp;}if(y>z){temp=y;y=z;z=temp;}printf("%d,%d,%d\n",x," />

大学c语言上机考试试题30套

1(1)设计一个程序,从键盘输入3个整数,按由小到大的顺序输出。
#include
void main()
{
int x,y,z,temp;
printf("Input x,y,z=");
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{
temp=x;x=y;y=temp;
}
if(x>z)
{
temp=x;x=z;z=temp;
}
if(y>z)
{
temp=y;y=z;z=temp;
}
printf("%d,%d,%d\n",x,y,z);
}
1(2)求1+3+5+7``````````````+95+97+99的和。
#include
void main()
{
int s,i;
s=0;
for(i=1;i<100;i=i+2)
{
s+=i;
}
printf("1+3+5+.......+99=%d\n",s);
}
1.(3)写一个函数,从建安输入一个整数,如果该整数为素数,则输出“此整数为素数”,否则输出“整数非素数”。(注:从主函数输入整数)
#include
#include
void main()
{
int a,m,i=2;
scanf("%d",&a);
m=sqrt(a);
for(i=2;i<=m;i++)
if(a%i==0)break;
if(i>m)
printf("此整数是素数");
else
printf("此整数不是素数");
}

2(1)连续输入10个整数.将这10个数逆序输出,然后求出这10个数的和并输出。
#include
main()
{
short i,a[10],total=0;
printf("请连续输入10个整数: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("这 10 个 整 数 逆 序 输 出 得: \n");
for(i=9;i>=0;i--)
printf("%5d",a[i]);
for(i=0;i<10;i++)
total=total+a[i];
printf("\n这10个整数的和为:%d\n",total);
}
2(2)输入N个国家的英文名,要求按字母先后顺序排列,并按照顺序输出。
#include
#include
int main()
{
char str[100][20],t[20];
int i,j,n;
printf("Input the number of countries:\n");
scanf("%d",&n);
printf("Input %d countries,please!\n",n);
for(i=0;iscanf("%s",str[i]);
for(i=0;ifor(j=i+1;jif(strcmp(str[i],str[j])>0)
{
strcpy(t,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],t);
}
for(i=0;iprintf("%s\n",str[i]);
}
2(3)某年级共有4个班,每班各有30名学生,有6个科目的考试成绩。求各班每个学生
的平均成绩并输出。
#include
#define N1 4
#define N2 30
#define N3 6
main()
{
float score[N1][N2][N3],studav[N1][N2];
int i,j,k;
float sum;
for(i=0;jfor(j=0;jfor(k=0;k{
printf("请输入%d班学号为%d的学生的科目%d成绩"
"score[%d][%d][%d]:",i+1,j+1,k+1,i,j,k);
scanf("%f",&score[i][j][k]);
}
for(i=0;jfor(j=0;j{
sum=0;
for(k=0;ksum=sum+score[i][j][k];
studav[i][j]=sum/N3;
printf("%d班学号为%d的学生的

平均成绩studav[%d][%d]:"
"%f\n",i+1,j+1,i,j,studav[i][j]);
}
}

3(1)求从键盘上输入10个数据(实数)中的最大值,并求和。
#include
main()
{
int a[10],sum=0,i,j;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(j=1;j<10;j++)
{
if(a[0]a[0]=a[j];
}
printf("和为%d,最大值是%d\n",sum,a[0]);
}
3(2)给出三角形的三边A,B,C,求三角形的面积。
#include
#include
main()
{
float a,b,c,p,s;
printf("Input a,b,c=");
scanf("%f,%f,%f",&a,&b,&c);
if(a+b-c>0&&b+c-a>0&&a+c-b>0)
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%f\n",s);
}
else
printf("不能构成三角形!");
}
3(3)编写程序求一个字符串的第n个字符开始,长度为m的子串。
#include
main()
{
char s[100];
int n,m,i,k;
gets(s);
scanf("%d%d",&n,&m);
for(i=n-1,k=0;kprintf("%c",s[i]);
printf("\n");
}
4(1)猜数游戏,加入设定一个整数m=123,然后让其他人从键盘上猜该数字,如果才对,输出"RIGHT",如果猜错,则输出"WRONG",并且指出审定的数字比输入的数字大还是小。
#include
void main()
{
int n,m;
m=123;
do
{
printf("请输出你猜测的数字:");
scanf("%d",&n);
if(nprintf("您输入的数字小了!\n");
else
if(n>m)
printf("您输入的数字大了!\n");
else
printf("恭喜你答对了!\n");
}while(n!=m);
}
4(2)编写程序,用于统计从键盘输入的字符串中的原音字母(a,A,e,E,i,I,o,O,u,U)的个数。
#include
void main()
{
int n=0,i;
char s[100];
printf("请输入需要统计的的字段:\n");
gets(s);
for(i=0;s[i]!='\0';i++)
if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||s[i]=='I'||s[i]=='o'||s[i]=='O'||
s[i]=='u'||s[i]=='U')
n++;
printf("%d\n",n);
}
4(3)编写程序求1-100中所有同构数的个数。(一个自然数的平方的末几位与改数相同时该数就是同构数)
#include
main()
{
int x;
for(x=1;x<=100;x++)
if(x*x%10==x||x*x%100==x)
printf("%5d",x);
printf("\n");
}

5(1)从键盘接收一整数x,判断X是否为含有因子7的正整数,如果是则输出"YES",否则输出"NO"。
#include
void main()
{
int x;
printf("输入一个整数 x=");
scanf("%d",&x);
if(x%7==0)
printf("YES\n");
else
printf("NO\n");
}
5(2)编写一个密码检测的程序,在程序执行时,要求用户输入密码(标准密码自己预先设定),然后通过字符串比较函数输入密码和标准密码是否相等,若相等,则显示“口令正确”,并并专区执行后继程序;若不相等,

重新输入,3次不相等则退出程序的执行。要求自己编写一个字符串比较函数,而不使用系统的STRCMP()函数。
#include
#include
#include
int strcompare(char *str1,char *str2)
{
while(*str1==*str2&&*str1!=0&&str2!=0)
{
str1++;
str2++;
}
return *str1-*str2;
}
main()
{
char password[20];
char input_pass[20];
int i=0;
gets(password);
while(1)
{
printf("请输入密码\n");
gets(input_pass);
if(strcompare(input_pass,password)!=0)
printf("口令错误,按任意键继续\n");
else
{
printf("口令正确!\n");
break;
}
getch();
i++;
if(i==3)
exit(0);
}
}5(3)编写首先求s=1!+2!+3!+......+10!.
#include
main()
{
long int s=0,p=1;
int n;
for(n=1;n<=10;n++)
{
p=p*n;
s=s+p;
}
printf("%1d\n",s);
}

6(1)编写程序,等对一给丁的3*4的矩阵,求出其中的最大元素值极其所在的行列号。
#include
void main()
{
int a[3][4],b[12],i,j,k;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
for(k=0,i=0;i<3;i++)
for(j=0;j<4;j++,k++)
{
b[k]=a[i][j];
}
for(i=0;i<11;i++)
for(j=0;j<11;j++)
{
if(b[j]>b[j+1])
{
int temp;
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(b[11]==a[i][j])
{
printf("最大元素在第%d行,第%d列\n",i+1,j+1);
}
}
printf("这个元素为:%d\n",b[11]);
}
6(2)求2000中含有的5的因子的个数。
#include
int fun(int n)
{
int s=0,k;
for(k=2;k<=n;k++)
if(k%5==0)
s++;
return s;
}
main()
{
printf("%d\n",fun(2000));
}
6(3)求任意一个小于65535的正整数的逆序数,并判断概述是否为回文数。
#include
void main()
{
int a,b,c,d,e,num,num1;
printf("请输入一个小于65535的正整数:");
scanf("%d",&num);
a=num/10000;
b=num%10000/1000;
c=num%1000/100;
d=num%100/10;
e=num%10;
if(num>9999)
{
printf("逆序后为: %d%d%d%d%d\n",e,d,c,b,a);
num1=e*10000+d*1000+c*100+b*10+a;
if(num1==num)
printf("改数为回文数!\n");
}
else if(num>999)
{
printf("逆序后为: %d%d%d%d\n",c,d,c,b);
num1=e*1000+d*100+c*10+b;
if(num1==num)
printf("改数为回文数!\n");
}
else if(num>99)
{
printf("逆序后为: %d%d%d\n",e,d);
num1=e*100+d*10+c;
if(num1==num)
printf("改数为回文数!\n");
}
else if(num>9)
{
printf("逆序后为: %d%d\n",e,d);
num1=e*10+d;
if(num1==num)
printf("改数为回文数!\n");
}
else
{
printf("逆序后为: %d\n",e);
printf("改数为回文数!\n");
}
}

7(1)给一个不多余

5位的正整数,要求:求出其位数,并分别打印出每一位数字,最后按逆序打印出这个正整数。
#include
void main()
{
int a,b,c,d,e,num;
printf("请输入一个不多余5位的正整数:");
scanf("%d",&num);
a=num/10000;
b=num%10000/1000;
c=num%1000/100;
d=num%100/10;
e=num%10;
if(num>9999)
printf("逆序后为: d%d%d%d%d\n",e,d,c,b,a);
else if(num>999)
printf("逆序后为: d%d%d%d\n",e,d,c,b);
else if(num>99)
printf("逆序后为: d%d%d\n",e,d,c);
else if(num>9)
printf("逆序后为: %d%d\n",e,d);
else
printf("逆序后为: %d\n",e);
}
7(2)求一个4行4列矩阵主对角线元素之和。
#include
int main()
{
int i,j,a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("%d\n",a[0][0]+a[1][1]+a[2][2]+a[3][3]+a[0][3]+
a[1][2]+a[2][1]+a[3][0]);
}
7(3)编写一个程序,判断从键盘输入的两个字符串是否相同,若相同则输出“字符串相同”,否则输出“字符串不同”。
#include
#define N 20
int strcmp(char str1[],char str2[])
{
int i=0;
while(str1[i]==str2[i] && str1[i]!= '\0' && str2[i]!='\0')
i++;
return str1[i]-str2[i];
}
void main()
{
char str1[N],str2[N];
printf("请输入第一个字符串: ");
gets(str1);
printf("请输入第二个字符串: ");
gets(str2);
if(strcmp(str1,str2)==0)
printf("字符串相同!\n");
else
printf("字符串不同!\n");
}
8(1) 输出100-200之间,能被3整除但不能被7整除的数。
#include
void main()
{
int i;
for(i=100;i<=200;i++)
{
if((i%3==0)&&(i%7!=0))
printf("%d\t",i);
}
}
8(2)将一个月份数字转换证月份的英文名称.
#include
void main()
{
char
*str[]={"January","February","March","April","May","June","July","Augest","September","October","November","December"};
char **p=str;
int i;
scanf("%d",&i);
printf("%s\n",p[i-1]);
}
8(3) 编写一个程序,用简单的选择排序实现对5个整数的排序(从大到小),排序思路:首先从n个整数中选出数值
最大的证书,将他交换到第一个元素位置,在从剩余的N-1个整数中选出数值最大的整数,将他交换到第二个
元素位置上,抽工夫上述操作,知道排序成功。
#include
#define N 5
void smp(int r[],int n)
{
int i,j;
int temp;
for(i=0;i{
for(j=i+1;jif(r[i]{
temp=r[i];
r[i]=r[j];
r[j]=temp;
}
}
}
main()
{
int i,a[N];
printf("请输入%d个整数:\n",N);
for(i=0;iscanf("%d",&a[i]);
smp(a,N);
printf("排列后的输出为:\n");
for(i=0;iprintf("%5d",a[i]);
}

9(1)编写一个程序,实现从键盘输入一组整数,求该组整数的平均值,

并将大于平均值的整数输出
#include
main()
{
int sum=0,i,j=0,a[10],b[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(i=0;i<10;i++)
{
if(a[i]>sum/10)
{
b[j]=a[i];
j++;
}
}
for(i=0;iprintf("%d\n",b[i]);
}
9(2)编写程序,输形状为直角三角形的九九乘法表。
#include
main()
{
int a,b;
for(a=1;a<10;a++)
{
for(b=1;b<=a;b++)

printf("%d*%d=%d",a,b,a*b );
if((a*b)==(b*a))
printf("\n");

}

}
9(3)编写一个程序,判断某字符串中出现的次数,字符串及主串均从键盘输入。
#include
#include
main()
{
char s[100],ch[10];
int n=0,i,j,len1,len2;
gets(s);
gets(ch);
len1=strlen(s);
len2=strlen(ch);
for(i=0;iif(s[i]==ch[0])
{
int m=1;
for(j=1;jif(s[i+j]==ch[j])
m++;
if(m==len2)
n++;
}
printf("%d\n",n);
}
10(1)从键盘输入一个学生的成绩,判断学生成绩登记,如果成绩在90-100,等级为A,成绩在80-89,等级为B,成绩在70-79,等级为C,成绩在60-69,等级为D,成绩小于60,等级为E.
#include
void main()
{
int score;
printf("请输入该生的成绩:");
scanf("%d",&score);
if(score>89)
printf("等级 A\n");
else if(score>79)
printf("等级 B\n");
else if(score>69)
printf("等级 C\n");
else if(score>59)
printf("等级 D\n");
else
printf("等级 E\n");
}
10(2)输出100-1000之间的全部素数。
#include
void main()
{
int n,i,m;
for(n=10;n<=1000;n++)
{
for(i=2;i{
m=n%i;
if(m==0)
break;
}if(m!=0)
printf("%d\t",n);
}
}
10(3)编写程序,求从键盘输入的字符串的长度。
#include
int strlen(char str[])
{
int i;
for(i=0;str[i]!='\0';i++);
return i;
}
void main()
{
char str[50];
printf("请输入字符串: ");
gets(str);
printf("字符串长度为: %d\n",strlen(str));
}

11(1)在主函数中从键盘输入若干个数放入数组中,用0结束输入,并放在最后一个元素中,下列程序中,函数fun的功能是:计算数组元素中值为正数的平均值。
#include
#include
double fun(int x[])
{
int a[1000];
int i,j=0,k=0;
double s=0;
while(x[j]!='\0')
{
if(x[j]>0)
{
a[k]=x[j];
k++;
}
j++;
}
for(i=0;is+=a[i];
return s/k;
}
main()
{
int x[1000];int i=0;
printf("\nPlease enter some data (end with0)");
do
{
scanf("%d",&x[i]);
}
while(x[i++]!=0);
printf("%f\n",fun(x));
}
11(2)编程:讲一个数字字符串传换成一个整数。列入,若输入字符串“-1234”,则函数把它传唤为整数值-1234。
#include
#include
#define N 10
main()
{
char str[N];
int i=0,flag=0;
long num=0;
printf("请输入连续数字字符(最多10位数字): ");
gets(str);
while(st

r[i]!='\0'&&str[i]!='a')
{
if(str[i]=='-')
flag=1;
else
if(str[i]=='+')
flag=0;
else
num=num*10+(str[i]-'0');
i++;
}
if(flag==1)
num=-num;
printf("有数字字符串转化成整数是: %d\n",num);
}
11(3)百马百担问题,有100匹马,驼100担货,大马担3担,中马担2担,两匹小马担一担,编程计算共有多少种驼法。
#include
main()
{
int a,b,c,s=0;
for(a=0;a<=33;a++)
for(b=0;b<=50;b++)
for(c=0;c<=100;c=c+2)
if(100==3*a+2*b+c/2&&a+b+c==100)
s++;
printf("共有驼法: %d种\n",s);
}

12(1)编写函数fun,他的功能是:根据以下公式求p的值,结果由函数值待会。m与n为两个正整数且要求m/n。
#include
float fun(float x)
{
if(x>0)
return x*fun(x-1);
else
return 1;
}
void main()
{
int m,n;
float P;
inx:
printf("请输入m,n的值: ");
scanf("%d,%d,%d",&m,&n);
if(n>m)
{
printf("输入有误,请重新输入!\n");
goto inx;
}
P=fun(m)/(fun(n)*fun(m-n));
printf("P的值为: %.of\n",P);
}
12(2)求出1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并求这些数的个数。
#include
void main()
{
int i,j;
j=0;
printf("符合条件的数有: \n");
for(i=1;i<=1000;i++)
{
if((i%7==0||i%11==0)&&!(i%7==0&&i%11==0))
{
printf("%d\t",i);
j++;
}
}
printf("一共有%d个\n",j);

}
12(3)编程求一个3*3矩阵对角线元素之和。
#include
void main()
{
int a[3][3],i,j,s;
printf("按照横排列顺序输入矩阵中的数字: \n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
s=a[0][0]+a[1][1]+a[2][2]+a[0][2]+a[2][0];
printf("矩阵对角线之和为: %d\n",s);
}

13(1)下列程序中,函数fun的功能是:求以下分数序列的前n项之和。
1/2,2/3,3/5,5/8,8/13,13/21,……
和值通过函数值返回main函数。例如,若n的值为:5,则应输出:3.007051。
#include
double fun( int n )
{
int i;
double x=1,y=2,t;
double s=x/y;
for(i=1;i{
t=x;
x=y;
y=t+x;
s+=x/y;
}
return s;
}
main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result : %f \n", fun(n));
}
13(2) 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格。
#include
int main(void)
{
char str[81];
int i=0,flag=0,word=0,blank=0;
printf("please enter a line of characters!\n");
gets(str);
while( str[i]!='\0' )
{
if(str[i]==' ')
{
blank++;
flag=0;
}
else
if( flag==0 )
{
word++;
flag=1;
}
i++;
}
printf("word=%d,blank=%d\n",word,blank);
}
13(3)编写程序,求1+3+5+7+……+195+197+199的和。
#include
int main(void)
{
int i;
l

ong sum=0;
for(i=1;i<200;i=i+2)
sum+=i;
printf("sum=%ld\n",sum);
}

14(1)已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。下列程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:23.197745。
#include
#include
#include
double fun(int n)
{
int i;
int p[100];
double sum=0;
p[0]=p[1]=0;
p[2]=1;
for(i=3;i{
p[i]=p[i-3]+p[i-2]+p[i-1];
}
for(i=0;isum+=sqrt(p[i]);
return sum;
}
main ( )
{
int n;
printf("Input N=");
scanf("%d", &n);
printf("%f\n", fun(n));
}
14(2)编写程序,用简单选择排序方法对输入的10个整数排序(从大到小)。
#include
#define N 10
int main(void)
{
int i,j,temp,a[N];
printf("please enter 10 integers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i{
for(j=i+1;jif(a[i]{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
14(3)编写程序,能实现输入10个数,将其中的最大值以及平均数输出。
#include
#define N 10
int main(void)
{
int i,max,a[N];
double sum=0;
printf("please enter %d integers:\n",N);
scanf("%d",&a[0]);
max=a[0];
sum+=a[0];
for(i=1;i{
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
sum+=a[i];
}
printf("max=%d,ave=%f\n",max,sum/N);
}

15(1)下面程序中函数fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/2!+1/3!+1/4!+...+1/m! 例如:若m=6,则应输出:1.718056。
#include
#include
double fun(int m)
{
double x=1,y=0;
int i;
for(i=1;i{
x*=i;
y+=1/x;
}
return y;
}
main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %lf\n", fun(n));
}
15(2)编写程序,求1!+2!+3!+……+9!+10!的和。
#include
#define N 10
int main(void)
{
int i;
long p=1,s=0;
for(i=1;i{
p*=i;
s+=p;
}
printf("s=%ld\n",s);
}
15(3)某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编写程序实现每输入一个年龄,输出应编入什么班。
#include
int main(void)
{
int age;
printf("please enter the age:\n");
scanf("%d",&age);
switch(age)
{
case 2:
case 3: printf("%d belong to small class!\n",age);break;
case 4: printf("%d belong to middle class!\n",age);break;
case 5:
case 6: printf("%d belong to big class!\n",age);break;
}
}

16(1)运用函数fun,用下面的公式求л的近似值,直到最后一项的绝对值小于指定的数(参数num)为止,
л/4 =1-1/3+1/5-1/7+……
例如,程序运行后,输入0.0001,则程序输出3.1414


#include
#include
float fun( float num)
{
float s=0;
int flag=1,i=1;
while ( 1.0/i>1e-4 )
{
s+=1.0/i*flag;
flag=-flag;
i=i+2;
}
return 4*s;
}
main( )
{
float n1,n2 ;
printf("Enter a float number: ") ;
scanf("%f",&n1) ;
n2= fun (n1) ;
printf("%6.4f\n",n2 ) ;
}
16(2)读入一个整数m(5≤m≤20),调用函数rnd获得m个随机整数,将这m个随机整数从小到大排序。
#include
#include
#include
void sort(int a[],int n)
{
int i,j,temp;
for(i=0;ifor(j=i+1;jif(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
int main(void)
{
int m,i;
int *p;
srand((unsigned)time(NULL));
printf("please enter m (5<=m<=20) :");
scanf("%d",&m);
p=(int * )malloc(m*sizeof(int));
for(i=0;i{
p[i] = rand()%100;
printf("%d\t",p[i]);
}
printf("\n");
sort(p,m);
for(i=0;iprintf("%d\t",p[i]);
printf("\n");
}

16(3)如果一个数等于其所真因子(不包括其本身)之和,则该数为完数,例如,6的因子有1,2,3,且6=1+2+3,故6为完数,求2~1000中的完数.
#include
int main(void)
{
int i,j,s;
for(i=2;i<1001;i++)
{
s=0;
for(j=1;jif(i%j==0)
s+=j;
if(s==i)
printf("%d\t",i);
}
}

17(1)下列程序中,函数fun的功能是:求三个数的最小公倍数。
例如,给变量x1,x2,x3分别输入15 11 2,则输出结果应当是:330。
#include
fun(int x ,int y , int z )
{
int j=1;
for(;;j++)
if(j%x==0&&j%y==0&&j%z==0)break;
return j;
}
main( )
{
int x1,x2,x3,j ;
printf("Input x1 x2 x3: ");
scanf("%d%d%d",&x1,&x2,&x3 );
printf("x1=%d, x2=%d, x3=%d\n",x1,x2,x3);
j = fun(x1,x2,x3);
printf("The minimal common multiple is:%d\n",j);
}
17(2)求1000以内的亲密数对。亲密数对的定义为:若正整数a的所有因子(不包括a本身)之和为b,b的所有因子(不包括b本身)之和为a,且a≠b,则称a与b为亲密数对。
#include
int fun(int x)
{
int i,s=0;
for(i=1;iif( x%i==0 )
s+=i;
return s;
}
int main(void)
{
int m,n;
for(m=1;m<1001;m++)
{
n=fun(m);
if( m==fun(n) && m!=n )
printf("%d,%d\n",m,n);
}
}
17(3)若用0~9之间不同的3个数构成一个三位数,编程统计出共有多少个这种不同的三位数?
#include
int main(void)
{
int a,b,c,count=0;
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
if( a!=b && b!=c && c!=a )
{
printf("%d\t",100*a+10*b+c);
count++;
}
printf("\ncount=%d\n",count);
}

18(1)请编一个函数int fun(int pm),它的功能是:判断pm是否是素数。若pm是素数,返回1;若不是素数,返回0。pm的值由主函数从键盘读入。
#include
#include
#include


int fun(int a)
{
int i,flag=0;
for(i=2;iif(a%i==0)
break;
if( i==a)
flag=1;
return flag;
}
main()
{
int x;
printf("\nPlease enter a number:");
scanf("%d", &x);
printf("%d\n", fun(x));
}

18(2)编程求W=1+21+22+23+…+210
#include
#define N 10
int main(void)
{
int i;
long p=1,w=1;
for(i=1;i{
p*=2;
w+=p;
}
printf("w=%ld\n",w);
}

18(3)若n使2n-1为素数,则n称为梅森尼数。求[1,21]范围内:有多少个梅森尼数?最大的梅森尼数?
#include
long sushu(long a)
{
long i;
int flag=0;
for(i=2;iif(a%i==0)
break;
if( i==a)
flag=1;
return flag;
}
int main(void)
{
int i,n;
long m;
for(n=1;n<22;n++)
{
m=1;
for(i=1;im*=2;
m=m-1;
if(sushu(m))
printf("n=%d,m=%ld\n",n,m);
}
}

19(1)下列程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。
#include
#include
long fun ( int k)
{
int i;
long m=1;
for(i=1;im*=i;
return m;
}
main()
{
int k = 10 ;
printf("%d!=%1d\n" , k, fun ( k )) ;
}
19(2)编程求2~100中所有的亲密素数对的个数,亲密素数:如果x为素数,则x+2也为素数。
#include
void main()
{
int i,j,s=0,w=0,p=0;
for(i=2;i<=98;i++)
{
s=0;
w=0;
for(j=2;j<=i;j++)
if(i%j==0)
s++;
for(j=2;j<=i+2;j++)
if((i+2)%j==0)
w++;
if(s==1&&w==1)
p++;
}
printf("亲密素数个数为: %d\n",p);
}
19(3)编程求:S=1+(1+3)+(1+3+5)+....+(1+3+5+...+(2n-1)).
#include
int add(int n)
{
int j,p=0;
for(j=1;j<=n;j++)
p+=2*j-1;
return p;
}
void main()
{
int n,i,s=0;
printf("数列为; S=1+(1+3)+(1+3+5)+...+(1+3+5+...+(2n-1))\n");
printf("请输入项数n= ");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+add(i);
printf("数列n项和s=%d\n",s);
}

20(1)1.编程,计算并输出下列级数和:
s=1/(1*2)+1/(2*3)+ …+1/(n*(n+1))
例如,当n=10时,函数值为:0.909091。
#include
int fun(int n)
{
return n*(n+1);
}
main()
{
int n,i;
float s=0;
printf("please enter n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+1.0/fun(n);
printf("s=%f\n",s);
}
20(2)编程:从键盘输入10个整数,对其进行排序(从小到大).
#include
#define N 10
int main(void)
{
int a[10],i,j,temp;
printf("please enter %d integer numbers:\n",N);
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=i+1;jif( a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;iprintf("%d\t",a[i]);
}
20(3)输入一元二次方程ax2+bx+c=0的3个系数a,b,c,求出该方程所有可能的根.
#include
#include
#include
int main(void)
{
double a,b,c,delta,x1,x2;
printf("please enter a, b, c:");
sca

nf("%lf%lf%lf",&a,&b,&c);
if( fabs(a)<1e-6 && fabs(b)<1e-6 )
{
printf("Error!\n");
exit(0);
}
if( fabs(a)< 1e-6 )
{
x1=x2=-c/b;
printf("the equation has two equal roots:%.2lf\n",x1);
}
else
{
delta=b*b-4*a*c;
if( delta>1e-6 )
{
x1=(-b + sqrt(delta)) /(2*a);
x2=(-b - sqrt(delta)) /(2*a);
printf("the equation has two real roots:%.2lf , %.2lf\n",x1,x2);
}
if( fabs(delta) < 1e-6 )
{
x1=x2=-b/(2*a);
printf("the equation has two equal roots:%.2lf\n",x1);
}
if( delta< -(1e-6) )
{
x1=-b /(2*a);
x2=sqrt(fabs(delta)) /(2*a);
printf("the equation has two complex roots:"
"%.2lf + %.2lfI ,%.2lf - %.2lfI \n",x1,x2,x1,x2);
}
}
}



相关文档
最新文档