解决C++编程

题目是:删除重复结点

1,任意输入一个数据序列,以"$"做为结束符

2,用单链表存储输入的整数序列

3,在单链表中将重复的整数序列删除

4,将所的的新单链表输出

步骤:1,编写解决问题的方案
2,编写程序
3,调试阶段:静态测试,动态测试
自己冷落了它N久了,忽然有人问起
自己只好来问大家了
东西不用就生疏了
所以学语言的一定要多用
谢谢提供过程的朋友

clude <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "math.h"

void project1()
{
printf("Hello C-world!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
}

/*题目:用*号输出字母C的图案。
程序分析:可先用'*'号在纸上写出字母C,再分行输出。
*/
/*求1+2+3+4…+100的和。*/
void project2()
{
int num;//一个数
int sum = 0;//总和

printf("\nproject2\n");
for(num=1;num<=100;num++)
{
sum += num;
}

printf("The sum is %d\n", sum);
}

/*
题目:输出9*9口诀。
*/
void project3()
{
int i,j;//被乘数和乘数
int result;//积
printf("\nproject3\n");
for (i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
}
printf("\n");/*每一行后换行*/
}
}
//题目:有1、2、3、4个数字,能组成多少个互不相同
// 且无重复数字的三位数?都是多少?
void project4()
{
int i,j,k;//百位,十位,个位数
int num = 0;//计数器

printf("\nproject4\n");
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for (k=1;k<5;k++)
{
if(i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
{
printf("%d,%d,%d\t",i,j,k);
num++;
}
}
}
printf("\n");
}

printf("The total num is %d\n", num);
}

/*
打印楼梯,同时在楼梯上方打印两个笑脸。
*/
void project5()
{
int i,j;//行数和列数

printf("\nproject5\n");
printf("\1\1\n");/*输出两个笑脸*/
for(i=1;i<11;i++)
{
for(j=1;j<=i;j++)
{
printf("%c%c", 219, 219);
}
printf("\n");
}
}

/*
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
void project6()
{
long f1,f2;//前两个月的数值
int i;//个数

printf("\nproject6\n");
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%3==0)
{
printf("\n");/*控制输出,每行四个*/
}
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
}
}
/*
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
*/
void project7()
{
float sum=100.0;//行驶路程
float next=50;//下一次的反弹高度
int n;//反弹的次数

printf("\nproject7\n");
for(n=2;n<=10;n++)
{
sum=sum+2*next;/*第n次落地时共经过的米数*/
next=next/2; /*第n次反跳高度*/
}
printf("the total of road is %f\n",sum);
printf("the tenth is %f meter\n",next);
}
/*
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
*/
void project8()
{
int n,temp,number=20;
int a=2,b=1;
float s=0;

printf("\nproject8\n");
for(n=1;n<=number;n++)
{
s=s+a/b;
temp=a;a=a+b;b=temp;
}
printf("sum is %9.6f\n",s);
}
/*
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
*/
void project9()
{
char c;
int letters=0,space=0,digit=0,others=0;

printf("\nproject9\n");
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
{
letters++;
}
else if(c==' ')
{
space++;
}
else if(c>='0'&&c<='9')
{
digit++;
}
else
{
others++;
}
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);
}

/*题目5:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
*/
void project10()
{
int day,month,year,sum,leap;

printf("\n\nproject10\n");
printf("please input year,month,day: ");
scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/
{
case 1:
{
sum=0;
break;
}
case 2:
{
sum=31;
break;
}
case 3:
{
sum=59;
break;
}
case 4:
{
sum=90;
break;
}
case 5:
{
sum=120;
break;
}
case 6:
{
sum=151;
break;
}
case 7:
{
sum=181;
break;
}
case 8:
{
sum=212;
break;
}
case 9:
{
sum=243;
break;
}
case 10:
{
sum=273;
break;
}
case 11:
{
sum=304;
break;
}
case 12:
{
sum=334;
break;
}
default:
{
printf("\ndata error");
break;
}
}

sum=sum+day; /*再加上某天的天数*/
if(year%4==0) /*判断是不是闰年*/
{
leap=1;
}
else
{
leap=0;
}

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
{
sum++;
}
printf("It is the %dth day.",sum);
}
/*
判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
*/
void project11()
{
int m,i,k,h=0,leap=1;
printf("\n\nproject11\n");

for(m=101;m<=200;m++)
{
k=(int)sqrt(m+1);
for(i=2;i<=k;i++)
{
if(m%i==0)
{
leap=0;
break;
}
}
if(leap)
{
printf("%-4d",m);
h++;
}
leap=1;
}
printf("\nThe total is %d",h);
}

/*
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
*/
void project12()
{
int n,i;

printf("\nproject12\n");
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
{
break;
}
}
}
printf("%d",n);
}
/*
输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。

*/
void project13()
{
int a,b,num1,num2,temp;

printf("\nproject13\n");
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)/*交换两个数,使大数放在num1上*/
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
/*题目: 企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,
高于10万元的部分,可可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?
*/
void project14()
{
long int num;
int level;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

bonus1 = (int)(100000*0.1);
bonus2 = bonus1+(int)(100000*0.075);
bonus4 = bonus2+(int)(200000*0.05);
bonus6=bonus4+(int)(200000*0.03);
bonus10=bonus6+(int)(400000*0.015);

printf("\nproject14");
while(1)
{
printf("\nplease input a num: ");
scanf("%ld", &num);

if(0 < num)
{
level = num / 100000;
switch(level)
{
case 0:
{
bonus=(int)(num * 0.1);
break;
}
case 1:
{
bonus=bonus1 + (int)((num - 100000) * 0.075);
break;
}
case 2:
case 3:
{
bonus = bonus2 + (int)((num-200000) * 0.05);
break;
}
case 4:
case 5:
{
bonus = bonus4 + (int)((num - 400000) * 0.03);
break;
}
case 6:
case 7:
case 8:
case 9:
{
bonus = bonus6 + (int)((num - 600000) * 0.015);
break;
}
default:
{
bonus = bonus10 + (int)((num - 1000000) * 0.01);
break;
}
}

printf("bonus = %d",bonus);
}
else
{
printf("wrong num\n");
break;
}
}
}

/*题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析:
*/

void project15()
{
long int i,x,y;

printf("\nproject15\n");

for (i=1;i<100000;i++)
{
x=(long)sqrt(i+100); /*x为加上100后开方后的结果*/
y=(long)sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
{
printf("%ld\t",i);
}
}
}
void main()
{

project1();
project2();

project3();
project4();
project5();
project6();
project7();
#if 0
project8();
project9();
project10();

project11();
project12();
project13();
project14();
#endif

}
温馨提示:答案为网友推荐,仅供参考