C++程序题目(二)

仅供参考!

1.字符串排序(指针)

#include<iostream>
#include<cstring>
using namespace std;
void sort1(char *name[],int n);
	int main()
	{ 		   
	   char * name[5]={ 
	   "CHINA","AMERICA","AUSTRALIA", "FRANCE","GERMAN"};//输入字符 
		int i,n=5;
		printf("排序前:\n");
		for(i=0;i<5;i++)
			cout<<name[i]<<endl;		//输出 
		
		sort1(name,n);		//调用函数换位 
		printf("排序后:\n");
		for(i=0;i<5;i++)
			cout<<name[i]<<endl; 
		
	}

	void sort1(char *name[],int n){ 
		char *pt;
		int i,j,k;
		  for(i=0;i<n-1;i++)
		   { k=i;
		      for(j=i+1;j<n;j++)
		          if(strcmp(name[k],name[j])>0)
				  k = j;
		      if(k!=i){ 
			  	pt=name[i]; 
			  	name[i]=name[k]; 
			  	name[k]=pt;
				}
		    	/*for(j=0;j<5;j++)
			 {
			   cout<<"name["<<j<<"]:";
			   cout<<(int)name[j]<<endl;
			 }
		*/
		   }
	}

2.求若干学生的平均成绩

#include <stdio.h>
	#include <string.h>
	#include <iostream>
	using namespace std;
	void average(struct student *st);		//声明average 函数; 
		struct student						//定义结构体
	{
		int sno;
		char name[10];
		int score[3];
	}; 			
	
		int main(){			 //主函数 输入 采用双重循环 对每个同学不同信息录入 
		int i,j;
		struct student st[3];			
		for( i=0;i<3;i++){
		cin>>st[i].sno;
		gets(st[i].name);
		for( j=0;j<3;j++)
		cin>>st[i].score[j];
		}
		average(st);		//调用平均函数 
	}
	
	void average(struct student *st){		//定义平均函数 每个学生i 的个个学科j之和  
		int i,j,sum;						//输出时候除以三 
		for(i=0;i<3;i++){
		sum=0;
		for( j=0;j<3;j++)
		sum+=st[i].score[j];
		printf("第%d个同学平均成绩是%d\n:",i+1,sum/3);
		}
		
	}

3.三角形三边得面积

#include <stdio.h>
#include <math.h>
int main (){
    double a,b,c,s,area;

    a=3,b=4,c=5,

    s=(a+b+c)/2;

    area=sqrt(s*(s-a)*(s-b)*(s-c));

    printf("a=%f\tb=%f\t%f\n",a,b,c);
    printf("area=%f\n",area);

    return 0;
}

4.比较三个数的大小(指针)

#include <stdio.h>
	void swap1(int *x,int *y) { 
        int temp;
		temp=*x;     
		*x=*y;
		*y=temp;
	}

	void swap2(int a,int b,int c) {
		int *p1,*p2,*p3;
		p1=&a;
		p2=&b;
		p3=&c;
		if (a>b) swap1(p1,p2);
		   	
		if(b>c) swap1(p2,p3);
		   	
		if(a>b) swap1(p1,p2);
			
		 printf("%d  %d  %d\n",a,b,c);  
		}

	int main(){	
		  int a,b,c;  ; 	//输入排序数据 
		  printf("请输入数字 a , b and c:");	
		  scanf("%d %d %d",&a,&b,&c);
		  swap2(a,b,c); 
		   
		  return 0;
		 }

5.删除句子中的字母

#include <stdio.h>
#include <string.h>
main()
{
	char num[99],ch;
	int i,len,k=0;
	printf("输入英文句子:");
	gets(num);
	len=strlen(num);
	printf("输入要删除的字母:");
	ch=getchar();
	for(i=1;i<len;i++,k=0)
	{	
		if(num[i]==ch)
		{
			k=1;break;
		}
		if(k==0) printf("%c",num[i]);
	}
}

6.输出函数printf()的用法

#include <stdio.h>
int main()
{
int a=66,b=35;
printf("%4c\n,%hd\n",a,b) ; 	
//*-左对齐,右不空格 数宽度 .n n位小数 h短l长 
printf("%f\n,%e",a,b);			
//*f小数 e指数 d i十进制 u无符号十进制 o 八进制不带前0 X x 10进制 c单个字符 s字符串  
}

7.输出菱形

#include<iostream>
using namespace std;
//方法一
int main(){
    //输出菱形
    int n;
    cin >>n;
    //上半部分 
    for(int i=1;i<=n;i++){		//i行 
        for(int j=1;j<=n-i;j++){//先输出行的所有的 “” 
            cout <<" ";
        }
        for(int k=1;k<=2*i-1;k++){//在输出i行所有 * 
            cout <<"*";
        }
            
        cout <<endl;
    } //下半部分 (同上)
    for(int i=1;i<n;i++){
        for(int j=1;j<=i;j++){
            cout <<" ";
        }
        for(int k=1;k<=(n-i)*2-1;k++){
            cout <<"*";
        }
        cout <<endl;
    }
    
    return 0;
}
#include<iostream>
#include<cmath>
//方法二
int main() 
{
int n;//总行数
std::cin >> n;

for (int i = 1; i <= (n+1)/2; ++i)//第i行
{
	for (int j = 1; j <= n; ++j)//第i行第j列
	{
		if (j >= (n+1)/2-i+1 && j <= (n-1)/2+i)
		//如果处于第一个"*"和最后一个"*"之间,就输出"*"
			std::cout << "*";
		else
			std::cout << " ";///否则输出空格
	}
	std::cout << std::endl;
}
for (int i = (n+1)/2+1; i <= n; ++i)//第i行
{
	for (int j = 1; j <= n; ++j)//第i行第j列
	{
		if (j >= (n+1)/2-(n-i+1)+1 && j <= (n-1)/2+(n-i+1))
		//如果处于第一个"*"和最后一个"*"之间,就输出"*"
        //把i换成(n-i+1)
			std::cout << "*";
		else
			std::cout << " ";///否则输出空格
	}
	std::cout << std::endl;
}
} 

8.输出字母个数

#include <iostream>
using namespace std;
int main()
{
    int a=0,b=0,c=0,d=0,e=0;
//用来对所用句子进行统计,只在最后输出一次
	int a1,b1,c1,d1,e1;
    char x;
    while(1)
	{
      a1=b1=c1=d1=e1=0;  
//用来对每一句各类字符统计,每次进入外循环需要清零
      printf ( "输入一个句子用'.'结束:" );

  	  x=getchar();		
/*  cin.get()是保留回车在输入流队列中的.而cin是丢弃回车的.也就是说cin输入时候,遇到回车就默认为你输入完成,而cin.get是把回车当做你输入的一个字符。*/ 
	if(x=='.')  
        break;  
//最后一句只输入一个'.',用来结束整个循环,即外循环

    while(x!='.'&& x!='?' && x!='!')
    {
    if(x>='A'&&x<='Z')
	{a++;a1++;}
    else if(x>='a'&&x<='z')
	{b++;b1++;}
        else if(x>='1'&&x<='9')
		{c++;c1++;}
             else if(x==' ')
			 {d++;d1++;}
			 else {e++;e1++;}
    x=getchar();
    }
    printf("大写字母的个数:%d\n",a1);
    printf("小写字母的个数:%d\n",b1);
    printf("空格的个数:%d\n",d1);
    printf("其他字符的个数%d\n:",c1);
    getchar();
    
    cin.sync();}

	printf("所有句子统计结果:%d\n");
    printf("大写字母的个数:%d\n",a);
    printf("小写字母的个数:%d\n",b);
    printf("数字的个数:%d\n",c);
    printf("空格的个数:%d\n",d);
    printf("其他字符的个数:%d\n",e);

    return 0;
}

9.数鸭子

#include <stdio.h>
int f(int n)
{
float y=0;
if(n==1) y=2;
else y=f(n-1)*2+2;
return (y);
}
int main()
{ int m,n=7,sum;
	sum=f(n);
	printf("sum=%4d\n",sum);
	for(n=2;n<8;n++) {
	m=f(n)-f(n-1);
	printf("sell=%3d\n",m);}
	
}

10.判断素数

#include <stdio.h>
int main()
{
	int m,i;
	printf("输入一个数:");
	scanf("%d",&m);
	for(i=2;i<=m;i++)
	if(m%i==0)
	break;
	if(i>m)
	printf("%d是素数\n",m);
	else printf("%d不是素数\n",m);
	
}

//调用函数的方法
#include <stdio.h>
	char sushu(int i)
		{int n; 
		for(i=2;i<=n;i++)
	    if(n%i==0)break;
	    if(i>n)return 0;
	    if(i<n)return 1;}
	void pr()
	{	printf("请输入数字:");
		int i,x;
		scanf("%d",&i);
		x=sushu(i);
		if(x=1) printf("是素数");
		if(x=0) printf("不是素数");
	 } 
	
	int main(){
		pr();
	}

11.统计和输出数字中零的个数和最大者

#include <stdio.h>
int hs(int n)
{   int t,i=0,max=0;
while(n)
{
	t=n%10;
	if(t==0) i++;
	else if(t>max) max=t;
	n=n/10;
}
	printf("正整数中零的个数为:%d,最大者为:%d\n",i,max);
	return 0;
}
int main()
{
	int x,y;
	printf("请输入正整数x:");
	scanf("%d",&x);
	y=hs(x);
	return 0;
}

12.统计字母个数

#include <stdio.h>
int count[128];

main()
{
	char line[200];int k=0;
	printf("\n输入英文字母,不超过30个:");
	gets(line);
	while ( line[k]!='\0')
	count[ line[k++] ]++;
	 
	for(k=0;k<=119;k++)
    if (count[k]>0) printf("%c=%d\t",k,count[k]);	
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值