C语言中的各种函数调用(包括一些结构体与指针)

#include <stdio.h>
#include <string.h>
#define N 4
struct Student1 //学生结构
{
char cName[20]; //姓名
float fScore[3]; //分数
}student1={“Spurs_Ping”,98.5f,89.0,93.5f}; //定义变量
void Display(struct Student1 stu) //形参为结构体变量
{
printf("----Information----\n"); //提示信息
printf(“Name:%s\n”,stu.cName); //引用结构体成员
printf(“Chinese:%.2f\n”,stu.fScore[0]);
printf(“Math:%.2f\n”,stu.fScore[1]);
printf(“English:%.2f\n”,stu.fScore[2]);
//计算平均数
printf(“Average score:%.2f\n”,(stu.fScore[0]+stu.fScore[1]+stu.fScore[2])/3);
}
void point(){
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("%e\n",s);
int a;
for (a=2; a<6; a++)
if (a%2==0)
continue;
printf("%d\n",a);
struct Student{ //学生结构
char cName[20]; //姓名
int iNumber; //学号
char cSex; //性别
int iGrade; //年级
}student; //定义变量 注意是未初始化的变量

struct Student *pStruct;   //定义结构体类型的指针
pStruct=&student;          //指针指向结构体变量
strcpy(pStruct->cName, "HePing");//将字符串常量赋值到成员变量中
pStruct->iNumber=12061212;  //为成员变量赋值  已经将结构体的第一个地址赋到cName后面就不用strcpy
pStruct->cSex='M';
pStruct->iGrade=2;

printf("----information----\n");//提示信息
printf("Name:%s\n",student.cName);//使用变量直接输出
printf("Number:%d\n",student.iNumber);
printf("Sex:%c\n",student.cSex);
printf("Grade:%d\n",student.iGrade);

}
void myself(){
struct Student //学生结构
{
char cName[20]; //姓名
int iNumber; //学号
char cSex; //性别
int iGrade; //年级
}student={“Spurs_Ping”,12061212,‘M’,2}; //对结构体变量进行初始化
struct Student pStruct; //定义结构体类型的指针
pStruct=&student; //指针指向结构体变量
printf("----the student’s information----\n"); //消息提示
printf(“Name:%s\n”,(pStruct).cName);
printf(“Number:%d\n”,(pStruct).iNumber);
printf(“Sex:%c\n”,(pStruct).cSex);
printf(“Grade:%d\n”,(pStruct).iGrade);
}
struct Student //学生结构
{
char cName[20]; //姓名
int iNumber; //学号
char cSex; //性别
int iGrade; //年级
}student[5]={{“Spurs_Ping”,12062212,‘M’,3},
{“Durant”,12062213,‘M’,3},
{“Duncan”,12062214,‘M’,3},
{“Park”,12062215,‘M’,3},
{“Diao”,12062216,‘W’,3} //定义数组并且设置初始值
};
void forever(){
int i; //循环控制变脸
for(i=0;i<5;i++) //使用for循环进行5次循环
{
printf(“NO%d student:\n”,i+1); //首先输出学生的名次
//使用变量i做下标 输出z数组中的元素数据
printf(“Name:%s,Number:%d\n”,student[i].cName,student[i].iNumber);
printf(“Sex:%c,Grade:%d\n”,student[i].cSex,student[i].iGrade);
printf("\n");
}
}
void MAX(int (a)[N],int m){ //自定义max函数 求数组每行的最大元素
int value,i,j,sum=0;
for (i=0; i<m; i++) {
value=
(
(a+i)); //将每一行的首个元素赋给value
for (j=0; j<N; j++) {
if (
(
(a+i)+j)>value) { //判断其他元素是否小于value
value=
(
(a+i)+j); //把比value大的数字重新赋值给value
printf(“第%d行:最大的元素是:%d\n”,i,value);
sum=sum+value;
}
}
}
printf("\n");
printf(“每行中最大数相加之和是:%d\n”,sum);

}
void compare3(){
int a[3][N],i,j;
int (p)[N];
p=&a[0];
printf(“please input:\n”);
for (i=0; i<3; i++) {
for (j=0; j<N; j++) {
scanf("%d",&a[i][j]); //给数组中的元素赋值
}
}
MAX(p,3);
}
void sort5(char string[],int n) //自定义排序函数
{
char temp;
int i,j;
for (i=0; i<n; i++) {
for (j=i+1; j<n; j++) {
if (strcmp(string[i],string[j])>0) { //比较两个字符串的大小
temp=string[i];
string[i]=string[j];
string[j]=temp; //如果前面的字符比后面的大 则互换
}
}
}
}
void month(){
int n=12;
int i;
char **p; //定义字符型指向指针的指针
char month[]={
“January”,“February”,“March”,“April”,“May”,“June”,“July”,“August”,“September”,
“October”,“November”,“December”};
p=month;
sort5(p,n); //调用排序函数
printf(“排序后的12月份如下:\n”);
for (i=0; i<n; i++) {
printf("%s\n",month[i]); //输出排序后的字符串
}
}
void order(int p,int n)
{
int i,t,j;
for (i=0; i<n-1; i++) {
for (j=0; j<n-1-i; j++) {
if (
(p+j)>
(p+j+1)) { //判断相邻两个元素的大小
t=
(p+j);
(p+j)=(p+j+1);
(p+j+1)=t; //借助中间变量t进行值互换
}
}
}
printf(“排序后的数组:”);
for (i=0; i<n; i++) {
if (i%5==0) { //以每行5个元素的形式输出
printf("\n");
}
printf("%5d",
(p+i)); //输出数组中排序后的元素
}
printf("\n");
}
void maopao(){
int a[20],i,n;
printf(“请输入数组元素的个数:\n”);
scanf("%d",&n); //输入数组元素的个数
printf(“请输入各个元素:\n”);
for (i=0; i<n; i++) {
scanf("%d",a+i); //给数组元素赋初值
}
order(a,n); //调用order函数
}
void SUM(int p,int n){ //自定义函数SUM查找数组中的奇数
int i,sum=0;
printf(“the odd:\n”);
for(i=0; i<n; i++) { //判断数组中的数是否为奇数
if (
(p+i)%2!=0) {
printf("%5d",
(p+i));
sum=sum+
(p+i);
}
}
printf("\n");
printf(“sum:%d\n”,sum);
}
void add(){
int *pointer,a[10],i;
pointer=a; //指针指向数组的首地址
printf(“please input:\n”);
for (i=0; i<10; i++) {
scanf("%d",&a[i]);
}
SUM(pointer,10);
}
void swap2(int *p1,int *p2) //自定义交换函数
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void exchange(int *pt1,int *pt2,int *pt3){ //三个数从大到到小的顺序
if (*pt1<*pt2) {
swap2(pt1,pt2); //调用swap2函数
}
if (*pt1<*pt3) {
swap2(pt1,pt3);
}
if (*pt2<*pt3) {
swap2(pt2, pt3);
}
}
void compare2(){
int a,b,c,*q1,*q2,*q3; //定义变量
puts(“please input three key numbers you want to rank:”);
scanf("%d,%d,%d",&a,&b,&c);
q1=&a; //将变量a的地址赋值给指针变量q1
q2=&b;
q3=&c;
exchange(q1,q2,q3); //调用exchange函数
printf("\n%d,%d,%d\n",a,b,c);
}
void swap1(int a,int b){
int tmp;
tmp=a;
a=b;
b=tmp;
}
void compare1(){
int x,y;
printf(“please enter two numbers:\n”);
scanf("%d",&x);
scanf("%d",&y);
swap1(x,y);
printf(“x=%d\n”,x);
printf(“y=%d\n”,y);
}
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void compare(){
int x,y;
int *p_x,*p_y;
printf(“please enter two numbers\n”);
scanf("%d",&x);
scanf("%d",&y);
p_x=&x;
p_y=&y;
swap(p_x,p_y);
printf(“x=%d\n”,x);
printf(“y=%d\n”,y);
}
void getexchange(){
int a[10],*p1,**p2,n=0; //定义数组 指针等为基本整形
printf(“please input:\n”);
for (p1=a; p1-a<10; p1++) { //指针p1从a的首地址开始变化
p2=&p1; //将指针p1的地址赋给p2
scanf("%d",p2); //通过指针变量给数组元素赋值
}
printf(“the array is:”);
for (p1=a; p1-a<10; p1++) {
p2=&p1; //将p1的地址赋给p2
if (**p2%20) {
printf("%5d",**p2); //将数组元素输出
n++;
}
}
printf("\n");
printf(“the number is:%d\n”,n);
}
void getpointer1(){
int a[10],p1,**p2,i,n=0;
printf(“please input:\n”);
for (i=0; i<10; i++) {
scanf("%d",&a[i]); //给数组a中各个元素赋值
}
p1=a; //将数组a的首地址赋给p1
p2=&p1; //将指针p1的地址f的地址赋给p2
printf(“the array is:”);
for (i=0; i<10; i++) {
if (
(*p2+i)%2
0) {
printf("%5d",
(*p2+i)); //输出数组元素
n++;
}
}
printf("\n");
printf(“the number is:%d\n”,n);
}
void getpointer(){
int ii;
char **pp;
char *Month[]={
“January”,“February”,“March”,“April”,“May”,“June”,“July”,“August”,“September”,
“October”,“November”,“December”};
for (ii=0; ii<12; ii++) {
pp=Month+ii;
printf("%s\n",*pp);
}
}
int main(int argc, const char * argv[]) {
// insert code here…
Display(student1);
point();
myself();
forever();
compare3();
month();
maopao();
add();
compare();
compare1();
compare2();
getpointer();
getpointer1();
getexchange();
char str1[]=“you are beautiful”,str2[30],*p1,*p2;
p1=str1; //将str1的首地址赋值给指针字符p1
p2=str2;
while (*p1!=’\0’) {
*p2=*p1;
p1++; //移动指针
p2++;
}
*p2=’\0’; //在字符串的末尾加结束符
printf(“now the string2 is:\n”);
puts(str2);
puts(str1);

int i;
char *month[]={
    "January","February","March","April","May","June","July","August","September",
    "October","November","December"};
for (i=0;i<12; i++) {
    printf("%s\n",month[i]);
}
return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GOD FOR JAVA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值