1)请输出[1,300]的所有素数,要求每行只输出6个数。
#include<stdio.h>
main()
{
int i,j;
int count=0;
for(i=1;i<=300;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break; /*如果j能被i整除,则跳出循环*/
}
if(j>=i) /*判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整除的数字*/
{
count++;
printf("%d\t",i);
if(count%6==0)
printf("\n");
}
}
return 0;
}
(2)打印[1,1000]以内的所有完数(完数即该数的所有真因子之和等于它本身,如6=1+2+3)。
#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<=n; i++)
{
r = 0;
for(j=1;j<i;j++)
{
if(i%j == 0)
{
r = r + j; /*完数,即完美数等于因子之和*/
}
}
if(r == i)
{
printf("the result is:%d\n",r); /*输出完美数结果*/
}
} return 0;
}
(3)打印[100,999]之间的所有水仙花数(水仙花数即该数的各位数字的立方和等于该数本身,如153)
#include<stdio.h>
main()
{
int n,a,b,c;
for(n=100;n<=999;n++)
{
a=n%10; /*个位数*/
b=n/10%10; /*十位数*/
c=n/100%10; /*百位数*/
if(n==(a*a*a+b*b*b+c*c*c)) /*仙花数即该数的各位数字的立方和等于该数本身*/
printf("%d\n",n);
}return 0;
}
(4)输入若干个字符(以输入’#’ 作为结束条件),分别统计出其中字母、空格、数 字和其它字符的个数。
#include <stdio.h>
main()
{
char c;
int letters=0,spaces=0,digits=0,others=0;
printf("请输入若干字符:\n") ;
while ((c = getchar()) != '#')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letters++;
else if((c==' '))
spaces++;
else if((c>='0'&&c<='9'))
digits++;
else
others++;
}
printf("字母=%d\n空格=%d\n数字=%d\n其他=%d\n",letters,spaces,digits,others);
return 0;
}
(5)打印九九乘法表
#include<stdio.h>
int main()
{
//打印九九乘法表
printf("九九乘法表:\n");
int x, y; //初始化打印的两个方向
for (y = 1; y < 10; y++) //两层循环嵌套打印输出
{
for (x = 1; x <= y; x++)
{
printf("%d*%d=%2d ", y, x, x * y); //%2d表示固定输出两位
}
printf("\n"); //打印到行尾,换行
}
printf("This is the end.\n");
}
(1)编写程序计算级数ex=1+x+x2/2!+x3/3!+…+xn/n!的值。要求:要采用函数调用,一个函数实现n!,另一个函数实现xn。
#include <stdio.h>
#include<math.h>
int main()
{
int i,j;
int x,n;
double sum=1,powerfunction=1,factorial=1 ; /*定义幂函数,阶乘以及函数和*/
printf("计算级数ex=1+x+x2/2!+x3/3!+...+xn/n!的值\n");
printf("input x:\n");
printf("input n:\n");
scanf("%d %d",&x,&n);
for(i=1;i<=n;i++) /*给i赋初值,用for循环控制语句*/
{
powerfunction=pow(x,i);
for(j=1;j<=i;j++)
factorial=factorial*j;
sum=sum+powerfunction/factorial; /*求函数和*/
factorial=1;
}
printf("%lf",sum);
printf("\n");
}
(2)利用递归函数调用:求Fibonacci数列(f(1)=f(2)=1; f(n)=f(n-1)+f(n-2) 当(n>=3) 的第n项的值。
#include <stdio.h>
int f (int n);
main()
{
int m;
printf("input a number:\n");
scanf("%d",&m);
printf("%d\n",f(m)); //函数f的调用
}
/*利用递归函数调用:求Fibonacci数列(f(1)=f(2)=1; f(n)=f(n-1)+f(n-2) 当(n>=3) 的第n项的值*/
int f (int n) //函数f的定义
{
int i;
if( n==0 )
{
return 0;
}
if( n== 1 )
{
return 1;
}
if( n== 2 )
{
return 1;
}
else if(n >= 3)
{
for(i = 1 ; i < n ;i++)
{
return (f(n-1) + f(n-2)); //函数f的递归调用,
}
}
}
(3)编一函数fun,功能是判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES并打印该素数,若fun返回0输出NO。
#include <stdio.h>
int fun(int a);
main()
{
int InputNumber;
int ReturnNumber;
printf("Please input a number:");
scanf("%d",&InputNumber);
ReturnNumber =fun(InputNumber);
if(ReturnNumber == 1)
{
printf("YES");
printf("\n");
printf("The number is a prime\n");
}
else if(ReturnNumber == 0)
{
printf("NO");
printf("\n");
printf("The number is not a prime\n");
} return 0;
}
/*编一函数fun,功能是判断一个整数m是否是素数,若是返回1,否则返回0。*/
int fun(int a)
{
int divisor; /*定义除数*/
int remainder; /*定义余数*/
for(divisor = 2; divisor < a; divisor ++)
{
remainder = a%divisor;
if(remainder == 0 )
{
break;
}
}
if(divisor == a)
return 1;
if(divisor != a || a == 1)
return 0;
}
(1)编一程序,将两个2×3二维数组中的对应元素的值相加,输出其结果。
#include<stdio.h>
main()
{
int i,j,N,M;
printf("两个二维数组的加法运算\n");
printf("你要输入几行的矩阵");
scanf("%d",&N);
printf("\n你要输入几列的矩阵");
scanf("%d",&M);
printf("\n请你输入矩阵A(%d行%d列)\n",N,M);
int A_1[N][M],B_1[N][M];
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%d",&A_1[i][j]);
}
printf("\n请你输入矩阵B(%d行%d列)\n",N,M);
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%d",&B_1[i][j]);
}
printf("矩阵A和矩阵B之和为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
A_1[i][j]+=B_1[i][j];
printf("% -2d",A_1[i][j]);
}
printf("\n");
}
}
(2)编一程序,将一个二维矩阵的行列互换,并输出结果。
#include<stdio.h>
main()
{
int i,j,N,M;
printf("二维矩阵行列式互换,并输出结果:\n");
printf("\n你要输入几行的矩阵");
scanf("%d",&N);
printf("\n你要输入几列的矩阵");
scanf("%d",&M);
printf("\n请你输入矩阵(%d行%d列)\n",N,M);
int a[N][M];
for(i=0; i<N; i++)
for(j=0; j<M; j++)
scanf("%d",&a[i][j]);
printf("二维矩阵的转置结果为:\n");
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
printf("%d ",a[j][i]);
printf("\n");
}return 0;
}
(3)比较任意输入的两个字符串s1和s2的大小,若s1>s2,输出正数1;若s1=s2,输出0;若s1<s2输出-1。(要求:不调用系统提供的字符串处理函数strlen(),strcmp()等,自己编写函数实现该功能。)
#include<stdio.h>
#define N 100
int compare(char s1[N],char s2[N]);
int main ()
{
char s1[100];
char s2[100];
printf("input string1:");
gets(s1);
printf("\n");
printf("input string2:");
gets(s2);
//调用函数compare
if(compare(s1,s2)==0)
printf("0\n");
else if(compare(s1,s2)>0)
printf("1\n");
else
printf("-1\n");
}
int compare(char s1[N],char s2[N])
{
int i=0;
for(i=0;(s1[i] == s2[i]);i++)
{
if(s1[i]=='\0')
return 0;
}
//返回差值,与0作比较
return s1[i]-s2[i];
}
(4)从键盘上输入一个整数n(1<=n<=65535),判断其是否为回文数。
#include <stdio.h>
main()
{
int num,s,y=0;
// 从键盘上输入一个整数n(1<=n<=65535),判断其是否为回文数。
printf("Please input numbers(1~65535): ");
scanf("%d",&num);
s=num;
while(s>0)
{
y=y*10+s%10;//组合新数,新数=新数*10+余数
s=s/10;//分离最后一位数
}
if(y==num)
{
printf("%d是一个回文数!\n", num);
}
else
{
printf("%d不是一个回文数!\n", num);
}
}
题目:编写程序,输入三个字符串,比较它们的大小,并将它们按由小到大的顺序输出。要求用函数、指针实现。
#include <stdio.h>
#include <string.h>
void sort(char *x[], int n);//定义排序函数
void print(char *x[], int n);//定义输出函数
int main()
{
char *s[3], st[3][10];
int i;
for (i=0, printf("=== Start:===\n");
i<3; s[i]=st[i], scanf("%s", s[i++])); //输入3个字符串
//指向函数的指针
char (*p)(char *x[], int n);
char sort(char *x[], int n);
p=sort;
p(s,3);
print(s, 3); //调用输出函数
return 0;
}
//排序函数
void sort(char *x[], int n)
{
int i, j;
char *t;
for (i=0; i<n; i++)
for (j=i+1; j<n; strcmp(x[i], x[j])>0 ? t=x[i], x[i]=x[j], x[j]=t, j++ : j++);
}
//输出函数
void print(char *x[], int n)
{
char **p;
printf("=== After:===\n");
for (p=x; p<x+n; printf("%s\n", *p++));
printf("\n");
}