【A组:各种数】

1、  输入两个正整数,m和n,求其最大公约数和最小公倍数。

分析:

最大公约数:如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。如:16能被2整除,16就是2的倍数,2就是16的约数。

程序:

#include

using namespace std;

//求两个数的最大公约数

int fun1(int a, int b)

{

int temp;

while (a%b)

{

temp = b;

b = a%b;

a = temp;

}

return b;

}

//求两个数的最大公倍数

int fun2(int a, int b)

{

int temp;

if (a

{

temp = a;

a = b;

b = temp;

}

for (int i=1; i<=b; i++)

{

if (!((a*i)%b))

{

return a*i;

}

}

}

void main()

{

int a,b;

cout<

cin>>a;

cout<

cin>>b;

cout<

cout<

}

2、  打印出100~999之间的所有水仙花数。

分析:

水仙花数:水仙花数是指一个n位数( n≥3 ),它的每个位上的数字的n次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

程序:

#include

void main()

{

int i,j,k,n;

printf("100~999之间的所有水仙花数:\n");

for(n=100;n<1000;n++)

{

i=n/100; //求百位

j=n/10-i*10; //求十位

k=n%10;//求个位

if(n==i*i*i+j*j*j+k*k*k)

{

printf("%d ",n);

}

}

printf("\n");

}

3、  编程实现:计算1到100之间的奇数之和及偶数之和。

程序:

#include

void main ()

{

int n,even=0,odd=0;

for(n=1;n<=50;n++)

{

even+=2*n;

odd+=2*n-1;

}

printf("1到100间的偶数的和为%d:\n",even);

printf("1到100间的奇数的和为%d:\n",odd);

}

4、  输入一个正整数,将其用质因子的乘积表示,并输出结果,格式为:12=2×2×3。

分析:

质数:质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

质因子:在数论里,某一正整数的质因子指能整除该数的质数整数。

程序:

#include

void factors(int number)

{

int i,factor;

for(i=2;i<=number;i++)

{

if(number%i==0)

{

factor=i;

break;

}

}

printf("%d*",factor);

if(number!=i)

{

number=number/i;

factors(number);

}

else

{

for(i=0;i<2;i++)

{

putchar('\b');

putchar(' ');

}

}

}

void main()

{

int m;

printf("Please enter a number:\n");

scanf("%d",&m);

printf("%d=",m);

factors(m);

printf("\n");

}

5、  编写一个函数,判断一个正整数是否为完数:如果一个数的除它本身以外的所有因数之和等于它本身,则它就是完数。主函数中找出1000以内的所有完数。

约数:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a叫b的倍数,b叫a的约数(或因数)。在大学之前,所指的一般都是正约数。约数和倍数相互依存,不能单独说某个数是约数或倍数。一个数的约数是有限的。

完数:完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

程序:

#include

using namespace std;

int main()

{

int i,j,k,sum;

cout<

for(i=2;i<=1000;i++)

{

k=i/2;

sum=0;

for(j=1;j<=k;j++)

if(i%j==0)

sum=sum+j;

if(sum==i)

cout<

}

return 0;

}

6、  编函数isprime判断正整m是否为素数;如果是素数,返回正整数1,否则返回0;主函数中调用isprime,找出2到1000之间的所有素数。

素数:见题目4。 程序:

#include

#include

void main()

{

char a[40],b[40];

int i;

printf("请输入a:\n");

scanf("%s",a);

for(i=0;i<=strlen(a);i++)

{

b[i]=a[i];

}

printf("b:%s\n",b);

}

【B组:年月日相关】

1、  给出年、月、日,计算该日是该年的第几天。

程序:

#include

void main()

{

int sum_day(int,int);

int leap(int year);

int year,month,day,days;

printf("input date(year,month,day): ");

scanf("%d,%d,%d",&year,&month,&day);

printf("%d/%d/%d ",year,month,day);

days=sum_day(month,day);

if(leap(year)&&month>=3)

{

days=days+1;

}

printf("is the %dth day in this year.\n",days);

}

int sum_day(int month,int day)

{

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int i;

for(i=1;i

{

day+=day_tab[i];

}

return(day);

}

int leap(int year)

{

int leap;

leap=year%4==0&&year%100!=0||year%400==0;

return(leap);

}

2、  输入年号,计算这一年的2月份的天数,将结果输出。

程序:

#include

void main()

{

int year,leap;

printf("请输入年份:\n");

scanf("%d",&year);

if(year%4==0)

{

if(year%100==0)

{

if(year%400==0)

leap=1;

else

leap=0;

}

else

leap=1;

}

else

leap=0;

if(leap)

printf("%d年的2月有29天",year);

else

printf("%d年的2月有28天",year);

}

3、  编程判断对输入的任何一个年份是否是闰年,将结果输出。

程序:

#include

void main()

{

int n;

printf("输入年份:");

scanf("%d",&n);

if (n%4==0&&n%100!=0||n%400==0)

printf("闰年\n");

else

printf ("不是闰年\n");

}

【C组:字符相关】

1、  编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

程序:

#include

int letter,digit,space,others;

void main()

{

void count(char[]);

char text[80];

printf("输入字符串:");

gets(text);

printf("字符串是:");

puts(text);

letter=0;

digit=0;

space=0;

others=0;

count(text);

printf("\nletter:%d\n,digit:%d\n,space:%d\n,others:%d\n",letter,digit,space,others);

}

void count(char str[])

{

int i;

for(i=0;str[i]!='\0';i++)

{

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

{

letter++;

}

else if(str[i]>='0'&&str[i]<='9')

{

digit++;

}

else if(str[i]==32)

{

space++;

}

else

{

others++;

}

}

}

2、  输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变,请编程。

程序:

#include

void main()

{

char ch;

ch=getchar();

if ((ch>=65)&&(ch<=90))

{

ch=ch+32;

}

else if ((ch>=97)&&(ch<=122))

{

ch=ch-32;

}

printf("%c\n",ch);

}

【D组:字符串相关】

1、  编写一个程序,将两个字符串连接起来,不要使用strcat函数。

程序:

#include

void main()

{

char str1[20],str2[20];

int i=0,j=0;

printf("请输入字符串1:\n");

scanf("%s",str1);

printf("请输入字符串2:\n");

scanf("%s",str2);

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

{

i++;

}

while (str2[j]!='\0')

{

str1[i++]=str2[j++];

}

str1[i]='\0';

printf("合并之后的字符串为:%s\n",str1);

}

2、  编写一个程序,将字符数组a中的全部字符复制到字符数组b中。不要使用strcpy函数。

程序:

#include

#include

void main()

{

char a[40],b[40];

int i;

printf("请输入a:\n");

scanf("%s",a);

for(i=0;i<=strlen(a);i++)

{

b[i]=a[i];

}

printf("b:%s\n",b);

}

更多推荐

大一c语言常见编程题,自己整理的C语言常见编程题