仅供参考!
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]);
}