50道C++编程练习题及解答

2026/4/26 1:00:27

25、用筛法求1-1000之内的素数 #include #include #include using namespace std; int main() {

int i,k,a[1001];

for(i=2; i<=1000; i++) a[i]=1; double s=sqrt(1000); for(i=2; i<=s; i++) if(a[i]==1)

for(k=i*i; k<=1000; k+=i) a[k]=0; for(i=2; i<=1000; i++)

if(a[i]==1) cout<

26、判断某一年是否闰年的函数 bool IsLeapYear(int y)

{ return (y%4 == 0 && y0 != 0)||(y@0 == 0); }

27、写一个函数,交换两个整型变量的值 void swap(int *p, int *q) { int t;

t=*p; *p=*q; *q=t; }

void swap(int &a, int &b) { int t;

t=a; a=b; b=t; }

28、求两个数的最大公约数,欧几里德算法(辗转相除法)

int gcd(int m, int n) { int k;

while(n!=0)

{ k=m%n; m=n; n=k; } return m; }

int gcd(int m, int n) { int k;

while((k=m%n)!=0) { m=n; n=k; } return n;

5

}

int gcd(int m, int n) { while(m!=n)

{ if(m>n) m=m-n; else n=n-m; }

return m; }

29、求两个数的最小公倍数 int lcm(int m, int n) { int t,s;

if(m

while(s%n != 0) s=s+m; }

int lcm(int m, int n) {

return m*n/gcd(m,n); }

30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何? int main() {

int cock,hen,chick;

for(cock=0; cock<=20; cock++) for(hen=0; hen<=33; hen++) { chick=100-cock-hen;

if(5*cock+3*hen+chick/3.0==100) cout<

31、编一程序,输入一行字符串,统计其中的小写英文字母的个数。 int main() { char s[100];

cin.getline(s,100); int i=0,count=0; while(s[i]!='\\0')

{ if(s[i]>='a' && s[i]<='z') count++;

i++; }

cout<

32、编一程序,输入一行字符串,将其中的大写英文字母改为小写,再输出。 int main() { char s[100]; int i;

cin.getline(s,100); i=0;

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

{ if(s[i]>='A' && s[i]<='Z') s[i]=s[i]+32; i++; }

cout<

33、打印杨辉三角形(帕斯卡三角形),打印10行。 #include #include using namespace std; int main()

{ int a[10][10]={0};

for(int i=0; i<10; i++) { a[i][0]=1; a[i][i]=1; }

for(int i=1; i<10; i++) for(int j=1; j

a[i][j] = a[i-1][j-1] + a[i-1][j]; for(int i=0; i<10; i++) { for(int j=0; j<=i; j++) cout<

34、打印一个九九乘法表 #include #include using namespace std; int main()

{ for(int j=1; j<=9; j++) { for(int i=1; i<=j; i++)

6

cout<

cout<

35、掷骰子10000次,统计得到各点数的次数。 int main()

{ int a[7]={0}; srand(time(0));

for(int i=1; i <= 10000 ; ++i) ++a[ 1 + rand()%6 ];

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

cout<

double distance(double x1, double y1, double x2, double y2)

{ return sqrt( (x1-x2)*(x1-x2) + (y1-y2) * (y1-y2) ); }

37、写一个程序,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分。 int main() { int i;

float max,min,s,x;

max = 0; min = 10; s=0; for(i=1;i<=10;i++) { cin >> x; s = s + x;

if(xmax) max = x; }

s = s - min - max; cout << s/8; }

38、写一函数,将一数组中的元素反转。 void reverse(int a[], int n) { for(int i=0; i

39、写一函数,在一个数组中找出最大元素的位置 int SearchMax(int a[], int n) { int k = 0;

for(int i=1; ia[k]) k = i; return k; }

40、找出一个二维数组中的鞍点,即该元素在该行 return p; }

44、写一个求字符串长度函数 int strlen(char *str) {

int n=0;

while(*str!='\\0') { n++; str++; } 上最大,在该列上最小。

41、写一个字符串拷贝函数

void strcpy(char *p, const char *q) {

while(*p++=*q++); }

char *strcpy(char *str1, const char *str2) {

char *p=str1;

while(*str1++=*str2++); return p; }

42、写一个字符串比较函数

int strcmp(char *str1, const char *str2) {

while(*str1 && * str2 && *str1==*str2) { str1++; str2++; } return *str1-*str2; }

int strcmp(char *str1, const char *str2) {

while(*str1==*str2)

{ if(*str1=='\\0') return 0; str1++; str2++; }

return *str1-*str2; }

43、写一个字符串连接函数

char *strcat(char *str1, char *str2) {

char *p=str1;

while(*str1!=0) str1++; while(*str1++=*str2++);

return n; }

45、写一函数,在一数组里查找某个值。 int search(int a[], int n, int key) { for(int i=0; i

46、编一程序,求两个矩阵的乘积

47、计算某日是某年的第几天

bool isLeapYear(int y) //判断某一年是否闰年 {

return (y%4 == 0 && y0 != 0)||(y@0 == 0); }

int main() {

int year,month,day,i,s=0; int

a[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31};

cin>>year>>month>>day; for(i=1; i

if(isLeapYear(year) && month>2) s++; cout << s; }

48、编写一个帮助小学生学习加法的程序,随机产生2个数,让学生输入答案。 #include

7

#include using namespace std; int main() {

int x,y,z;

srand( time(0) ); x = rand() % 1000; y = rand() % 1000;

cout << x << \ cin >> z;

while( z != 0 ) {

while( z != x+y ) {

cout<<\× 错误!请重做\\n\ cout<>z; }

cout<<\√ 正确!\\n\

x = rand() % 1000; y = rand() % 1000;

cout<>z; } }

49、从52个数里选13个数 int main()

{ int i,k,a[52],b[13];

for(i=0; i<52; i++) a[i]=i+1; srand(time(0)); for(i=0; i<13; i++) { k = rand() % (52-i); b[i] = a[k];

swap(a[k],a[51-i]); }

for(i=0; i<13; i++) cout<

50、求100!

#include #include #include using namespace std; const long MOD = 10000; int main()

{

int t,t0=time(0); int len,n=100000;

unsigned long a[200000]; a[1]=1; len=1;

for(int k=2; k<=n; k++) {

long carry=0;

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

{ unsigned long s = a[i]*k + carry; carry = s / MOD; a[i] = s % MOD; }

while(carry > 0) { len++;

a[len] = carry % MOD; carry = carry / MOD; } }

t=time(0);

int w=(len-1)*4 + int(log10(double(a[len]))) + 1;

ofstream fout(\ fout<=1; i--) fout<

fout<<\用时:\秒\

fout<<\数组元素个数:\阶乘值位数:\ return 0; }

8


50道C++编程练习题及解答.doc 将本文的Word文档下载到电脑
搜索更多关于: 50道C++编程练习题及解答 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219