1 在屏幕上用“*”显示一个周期内的cos曲线
#include<stdio.h>
#include<math.h>
main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1) //y为列方向,从-1到1,步长为0.1
{
m=acos(y)*10; //计算出y对应的弧度,并扩大10倍
for(x=1;x<m;x++)
printf(" ");
printf("*");
for(;x<62-m;x++)
printf(" ");
printf("*\n");
}
}
结果如下:
2 设计一个简单函数
#include<stdio.h>
#include<math.h>
void main()
{
float x;
scanf("%f",&x);
if(x<1.0)
printf("y=%f\n",x);
else if(x>=1.0 && x<10.0)
printf("y=%f\n",2*x-1);
else
printf("y=%f\n",3*x-11);
}
3 枚举(Enum)变量
使用枚举变量可以提高程序的可读性,用有意义的名字来代替数字;限定了枚举变量的取值范围。
#include<iostream.h>
int main()
{
enum day{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
day currentDay;
currentDay=Tuesday;
cout<<"Current day is"<<currentDay<<endl;
return 0;
}
4 二维数组转置
#include<iostream.h>
#include<iomanip.h>
void main()
{
int A[2][3]={1,2,3,4,5,6};
int B[3][2];
cout<<"原数组为:"<<endl;
for(int m=0;m<2;m++)
{ for(int n=0;n<3;n++)
cout<<A[m][n]<<setw(4);
cout<<endl;
}
cout<<"转置后数组为:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
{
B[i][j]=A[j][i];
cout<<B[i][j]<<setw(4);
}
cout<<endl;
}
}
5. 输入一个不超过5位的整数,判断它的位数并计算最高位的数值
#include<stdio.h>
void main()
{
int n1,n2,n3,n4,input;
scanf("%d",&input);
n1=input/10000;
n2=input/1000;
n3=input/100;
n4=input/10;
if(input/10000!=0)
printf("这是一个5位数,万位数为:%d\n",n1);
else if(input/1000!=0)
printf("这是一个4位数,千位数为:%d\n",n2);
else if(input/100!=0)
printf("这是一个3位数,百位数为:%d\n",n3);
else if(input/10!=0)
printf("这是一个2位数,十位数为:%d\n",n4);
else
printf("这是一个个位数: %d\n",input);
}
6. 在一定范围内输入若干实数,当所有实数之和超过最大值时,停止输入,并计算输入数据的平均值
#define SUM 10000
void main()
{
float amount,aver,total=0;
for(int i=1;i<=1000;i++)
{
printf("please enter amount:");
scanf("%f",&amount);
total+=amount;
if(total>=SUM)
break;
}
aver=total/i;
printf("num=%d\naver=%.2f\n",i,aver);
}
#include<math.h>
int main()
{
int i,k;
scanf("%d",&i);
while(i>=1000)
{
printf("请重新输入数字:");
scanf("%d",&i);
if(i<1000)
break;
}
k=sqrt(i);
printf("平方根为:%d\n",k);
return 0;
}
int main()
{
float score;
char grade;
scanf("%f",&score);
while(score>100 || score<0)
{
printf("分数输入错误,请重新输入:\n");
scanf("%f",&score);
}
switch((int)(score/10))
{
case 10:
grade='A';break;
case 9:
grade='A';break;
case 8:
grade='B';break;
case 7:
grade='C';break;
case 6:
grade='D';break;
default:
grade='E';
}
printf("学生的成绩为:%5.1f, 相应的等级为:%c\n",score,grade);
return 0;
}
int main()
{
int num,indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表输入的整数,其个位,十位,百位,千位,万位和位数
printf("请输入一个整数(0-99999): ");
scanf("%d",&num);
while(num>99999 || num<0)
{
printf("请重新输入数字:");
scanf("%d",&num);
}
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf("位数:%d\n",place);
printf("每位数字为:");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{
case 5:
printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:
printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3:
printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2:
printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d%d\n",indiv,ten);
break;
case 1:
printf("%d",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
break;
}
return 0;
}
int main()
{
int f[20]={1,1};
for(int i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
printf("前20个Fibonacci数为:\n");
for(i=0;i<20;i++)
{
if(i%5==0)
printf("\n");
printf("%8d",f[i]);
}
printf("\n");
return 0;
}
int main()
{
int t,a[10];
printf("Please input 10 int_numbers:\n");
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
for(int j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
#include<stdio.h>
int main()
{
char *p[3];//定义一个指针数组p,每个元素都是一个4字节的指针
printf("指针数组:%d\n",sizeof(p));
printf("指针数组中的元素:%d\n",sizeof(*p)); //*p为指针数组的第一个元素,指针型
char (*q)[3];//定义一个数组指针q,指向char型数组的指针,数组中的每个元素都是一个char型数据
printf("\n数组指针:%d\n",sizeof(q));//q本身为一个指针,而非数组
printf("数组中的元素:%d\n",sizeof(*q));//(*q)代表一个数组,故输出数组的元素,char占一个字节
int x[3];
int *y=x;
printf("\n指针y:%d\n",sizeof(y));
printf("数组的第二个元素:%d\n",sizeof(*y+1)); //int型所占用字节数
return 0;
}
int main()
{
int a[3][4]={{7,9,-2,3},{1,55,-8,16},{34,13,-1,22}};
int row=0,colum=0,max;
max=a[0][0];
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf("数组中最大值:%d\n",max);
printf("在第%d行,第%d列\n",row,colum);
return 0;
}
int main()
{
char s[50];
int i,num=0,w=0;
char word;
gets(s);
for(i=0;(word=s[i])!='\0';i++)
if(word==' ')
w=0;
else if(w==0)
{
num++;
w=1;
}
printf("输入的字符串中有%d个单词\n",num);
return 0;
}
#include<stdio.h>
#include<math.h>
float f(float x) //定义f函数,以实现f(x)
{
float y;
y=((x-5.0)*x+16.0)*x-80.0;
return y;
}
float xpoint(float x1,float x2) //定义xpoint函数,求出弦与x轴交点
{
float x;
x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return x;
}
float root(float x1,float x2) //定义root函数,求取近似根,x1和x2为输入的两个横坐标
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0) //同符号
{
y1=y;
x1=x;
}
else
x2=x;
}
while(fabs(y)>=0.0001);
return x;
}
int main()
{
float x1,x2,y1,y2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
y1=f(x1);
y2=f(x2);
}
while(y1*y2>0);
x=root(x1,x2);
printf("A root of equation is %8.4f\n",x);
return 0;
}
long fun(int n)
{
long c;
if(n==0||n==1)
c=1;
else
c=fun(n-1)*n;
return c;
}
int main()
{
int n;
long r;
printf("请输入一个自然数:");
scanf("%d",&n);
while(n<0)
{
printf("请重新输入一个自然数:");
scanf("%d",&n);
}
r=fun(n);
printf("%d!=%ld\n",n,r);
return 0;
}
#include<stdio.h>
int main()
{
int large(int ,int);
int a[10],b[10],i,m=0,n=0,k=0;
printf("Enter array a:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\nEnter array b:\n");
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("\n");
for(i=0;i<10;i++)
{
if(large(a[i],b[i])==1)
m++;
else if(large(a[i],b[i])==-1)
n++;
else
k++;
}
printf("a[i]>b[i] %d times\n",m);
printf("a[i]<b[i] %d times\n",n);
printf("a[i]=b[i] %d times\n",k);
return 0;
}
int large(int x,int y)
{
int flag;
if(x>y)
flag=1;
else if(x<y)
flag=-1;
else
flag=0;
return flag;
}
int main()
{
void sort(int array[],int n);
int a[10],i;
printf("enter the array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(array[j]>array[k])
k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
}
#include<stdio.h>
int main()
{
extern void enter_string(char str[]);
extern void delete_string(char str[],char ch);
extern void print_string(char str[]);
//声明将在其他文件中调用该函数
char c;
char str[80];
enter_string(str);
printf("在该字符串中,请输入需要删除的字符:");
scanf("%c",&c);
delete_string(str,c);
print_string(str);
return 0;
}
void enter_string(char str[80])
{
printf("请输入字符串:\n");
gets(str);
}
void delete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
void print_string(char str[])
{
printf("新的字符串为:%s\n",str);
}
#include<stdio.h>
#define WEI 8
int find(int a[],int n,int key)
{
int i;
for(i=0;i<n && a[i]!=key;i++);
if(i<n)
return i;
else
return -1;
}
void main()
{
int b[8]={1,13,9,5,18,23,66,100};
int i,d;
int key;
printf("原数组为:\n");
for(i=0;i<WEI;i++)
printf("%4d ",b[i]);
printf("\n输入要查找的关键字为:");
scanf("%d",&key);
d=find(b,WEI,key);
printf("%d在数组中的位置为:%d\n",key,d);
}
程序运行结果为:
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("交换指针后:max=%d,min=%d\n",*p1,*p2);
}
void swap(int *x1,int *x2)
{
int temp;
temp=*x1;
*x1=*x2;
*x2=temp;
}
void main()
{
int *p1,*p2;
int a,b;
scanf("a=%d,b=%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
swap(p1,p2);
printf("交换指针所指向变量后:a=%d,b=%d\n",a,b);
printf("*p1=%d,*p2=%d\n",*p1,*p2);
}
#include<stdio.h>
void inv(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{
j=n-1-i;
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
void main()
{
int i,a[10];
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
inv(a,10);
printf("逆序后:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
#include<stdio.h>
void main()
{
void average(float *p,int n);
void search(float (*p)[4],int n);
void find(float (*p)[4],int n);
float score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};
average(*score,12); //求十二个分数的平均值
search(score,1); //求序号为1的学生成绩
find(score,3); //查找不及格
}
void average(float *p,int n)
{
float sum=0,*q;
q=p+n;
for(;p<q;p++)
sum+=(*p);
printf("所有学生的所有课程总平均成绩:%5.2f\n",sum/n);
}
void search(float (*p)[4],int n)
{
int i;
printf("\n序号为%d的学生成绩为:\n",n);
for(i=0;i<4;i++)
printf("%-8.2f",*(*(p+n)+i));
printf("\n\n");
}
void find(float (*p)[4],int n)
{
int i,j,k,flag;
for(i=0;i<n;i++)
{
flag=0;
for(j=0;j<4;j++)
if(*(*(p+i)+j)<60)
flag=1;
if(flag==1)
{
printf("No.%d fails,his score are:\n",i+1);
for(k=0;k<4;k++)
printf("%-8.2f",*(*(p+i)+k));
printf("\n");
}
}
}
#include<string.h>
struct person
{
char name[20];
int count;
}
leader[3]={{"Li",0},{"Zhang",0},{"Wang",0}};
void main()
{
int i,j;
char n[20];
printf("请输入有效候选人:\n");
for(i=0;i<10;i++)
{
scanf("%s",n);
for(j=0;j<3;j++)
{
if(strcmp(n,leader[j].name)==0)
leader[j].count++;
}
}
printf("\n得票统计结果如下:\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
printf("\n");
}
struct student
{
long num;
float score;
struct student *next;
};
void main()
{
struct student a,b,c,*head,*p;
a.num=20901;
a.score=88.5;
b.num=20902;
b.score=90;
c.num=20903;
c.score=89;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}
while(p!=NULL);
}
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]<a[j])
k=j;
}
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void main()
{
int *p,i,x[10];
p=x;
for(i=0;i<10;i++)
scanf("%d",p++);
p=x;
sort(p,10);
printf("重新排序后:\n");
for(p=x,i=0;i<10;i++)
printf("%4d",*p++);
printf("\n");
}
void main()
{
char a[]="I am a boy!";
char b[20];
for(int i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0';
printf("string a is: %s\n",a);
printf("string b is: ");
for(i=0;*(b+i)!='\0';i++)
printf("%c",b[i]);
printf("\n");
}